基于ENC28J60的嵌入式网络接口的设计方案

发布时间:2012-01-6 阅读量:1947 来源: 我爱方案网 作者:

中心议题:
    *  设计以ENC28J60 为核心的以太网接口实现方案
    *  描述该系统硬件架构的设计方法
    *  介绍以太网控制器ENC28J60
    *  阐述ENC28J60 与Atmega16 的SPI 通讯
解决方案:
    *  以太网控制器ENC28J60提供的远程通讯解决方案
    *  主控制器采用Atmel 公司的ATmega16 单片机

1 引言
  
随着Internet 的出现和以太网的迅速发展, 基于以太网的设备控制越来越多。目前市场上大部分以太网控制器采用的封装均超过80 引脚, 如RTL8019AS、DM9008、CS8900A 等。这些器件不仅结构复杂, 面积庞大, 且系统开销较大。近来, Microchip推出全球首枚28 引脚独立以太网控制器ENC28J60, 可为嵌入式系统提供低引脚数、低成本、精简的远程通讯解决方案。
  
2 ENC28J60 网络接口体系结构
  
ENC28J60 是带有行业标准串行外设接口(Serial PeripheralInterface, SPI)的独立以太网控制器。它符合IEEE 802.3 的全部规范, 采用了一系列包过滤机制以对传入数据包进行限制。它还提供了一个内部DMA 模块, 以实现快速数据吞吐和硬件支持的IP 校验和计算。与主控制器的通信通过两个中断引脚(INT和WOL)和SPI 脚(SO、SI、SCK、CS)实现, 数据传输速率高达10Mb/s.两个专用的引脚(LEDA、LEDB)用于连接LED, 进行网络活动状态指示。图1 所示为ENC28J60 的典型应用电路。
  
ENC28J60 由7 个主要功能模块组成:SPI 接口, 充当主控制器和ENC28J60 之间通信通道; 控制寄存器, 用于控制和监视ENC28J60; 双端口RAM缓冲器, 用于接收和发送数据包; 判优器, 当DMA、发送和接收模块发出请求时对RAM缓冲器的访问进行控制; 总线接口, 对通过SPI 接收的数据和命令进行解析;MAC 模块:实现符合IEEE 802.3 标准的MAC 逻辑; PHY 模块, 对双绞线上的模拟数据进行编码和译码。ENC28J60 还包括其他支持模块, 诸如振荡器、片内稳压器、电平变换器(提供可以接受5V 电压的I/O 引脚)和系统控制逻辑。
  
根据以上说明, ENC28J60 应用于嵌入式网络接口是非常合适的, 有广阔的应用发展前景。
  
3 ENC28J60 在嵌入式网络接口的应用
  
3.1 硬件电路设计
  
利用ENC28J60 可以构成不同功能的网络终端节点, 如网络服务器、带Internet 功能的设备、远程监控(数据采集, 诊断)设备等。图2 所示为基于ENC28J60 的嵌入式网络接口的硬件电路原理图。电路中有:2 个LED 状态指示灯主要用来显示网络连接状态, 包括PHY 是否冲突、连接是否建立、是否接收数据、连接速度、双工模式等; 必需的偏置电阻R3(2kΩ, 精度为1%);高速局域网电磁隔离模块(即RJ45 以太网接口), 应用中,ENC28J60 的物理端口与隔离变压器HR901170A 连接时必须符合IEEE802.3 对物理层规范的要求, 如RJ45 的插孔与隔离变压器的间隔应尽量小, 输出和输入差分信号对的走线要有很好的隔离。
  
 

 


电路中的主控制器采用Atmel 公司的ATmega16 单片机,它具有先进的RISC(精简指令集计算机)结构、16 kB 可编程Flash 存储器、512 B 的EEPROM和1 kB 片内SRAM, 具有丰富的外设接口, 其SPI 接口允许ATmega16 与外设进行高速的同步数据传输。本设计中ATmega16 SPI 配置为主机模式,ENC28J60 为从设备。ATmega16 的SPI 工作模式由CPOL、CPHA 设置, 根据ENC28J60 的SPI 读写时序, ATmega16 的SPI工作模式应设置为模式0.ATmega16 通过将ENC28J60 的CS引脚置低实现与其的同步。SPI 时钟由写入到SPI 发送缓冲寄存器的数据启动, SPI MOSI(PB5)引脚上的数据发送秩序由寄存器SPCR 的DORD 位控制, 置位时数据的LSB(最低位)首先发送, 否则数据的MSB(最高位)首先发送。我们选择先发送MSB,同时接收到的数据传送到接收缓冲寄存器, CPU 进行右对齐从接收缓冲器中读取接收到的数据。应该注意, 当需要从ENC28J60 中读取多个数据时, 即使ENC28J60 并不需要ATmega16 串行输出的数据, 每读取一个数据前都要向SPI 发送缓冲器写一个数据以启动SPI 接口时钟。由于SPI 系统的发送方向只有1 个缓冲器, 而在接收方向有2 个缓冲器, 所以在发送时一定要等到移位过程全部结束后, 才能对SPI 数据寄存器执行写操作; 而在接收数据时, 需要在下一个字节移位过程结束之前通过访问SPI 数据寄存器读取当前接收到的数据, 否则第1 个数据丢失。

3.2 ENC28J60 软件初始化
  
在使用ENC28J60 发送和接收数据包前, 必须对器件进行初始化设置。根据不同的应用, 一些配置选项可能需要更改。初始化设置工作包括接收和发送缓冲器、接收过滤器、晶振启动时间、MAC 寄存器、PHY 寄存器。初始化芯片之前先关闭单片机的中断输入, 对RESET 引脚给定一个持续的低电平复位信号, 然后对相应的寄存器进行设置。设置完成所有需要的寄存器后, 判断以太网状态中的时钟启动标志位是否置位, 然后开中断。
  
系统初始化后进入主程序循环, 包括单片机的控制作用和网络数据传输。对于以太网传输部分来说。主要有两个作用:一是对要发送的数据按照以太网数据帧格式进行封装并发送; 二是对接收的以太网数据帧进行解包, 供应用程序使用。
  
3.3 ENC28J60 发送数据包
  
在进行数据包发送或接收时, 要先对写缓冲存储器(WriteBuffer Memory, WBM)命令掌握。WBM允许主控制器将字节写入8KB 发送和接收缓冲存储器。如果ECON2 寄存器中的AUTOINC 位置1, 那么在写完每个字节的最后一位之后,EWRPT 指针将会自动地递增指向下一个地址(当前地址加1)。
  
如果写入地址1FFF 且AUTOINC 置1, 则写指针加1 指向0000h.将CS 引脚拉为低电平启动WBM命令。然后将WBM操作码及随后的5 位常量1Ah 送入ENC28J60.在发送WBM命令和常量之后, 由EWRPT 指向的存储器中的数据将移入ENC28J60, 首先移入最高位。在接收到8 个数据位后, 如果AUTOINC 置1, 写指针将自动递增。主控制器可以继续在SCK引脚提供时种信号、在SI 引脚发送数据同时保持/CS 为低电平, 从而可以连续写入存储器。当AUTOINC 被使能时, 以该方式就可以连续地向缓冲存储器写入字节而无需多余的SPI命令。拉高CS 引脚电平可结束WBM命令。在WBM操作期间,SO 引脚一直为高阻态, WBM操作时序, 请参见图3.
  
ENC28J60 内的MAC 在发送时会自动生成前导符和帧起始定界符。此外, MAC 可根据配置生成填充(如果需要)和CRC字段。主控制器必须生成所有其他帧字段, 并将它们写入缓冲存储器, 以待发送。此外, ENC28J60 还要求在待发送的数据包前添加一个包控制字节。主控制器应:1.正确编程ETXST 指针,使之指向存储器中未用的单元。它将指向包控制字节, 在本设计方案中, 指针应编程为0120h; 2.使用WBM SPI 命令写入包控制字节、目标地址、源MAC 地址、类型/ 长度和数据有效负载; 3.正确编程ETXND 指针。它应指向数据有效负载的最后一个字节, 在本设计方案中, 指针应编程为0156h; 4.将EIR.TXIF位清零、将EIE.TXIE 位和EIE.INTIE 位置1 允许在发送完成后产生中断(如果需要); 5.将ECON1.TXRTS 位置1 开始发送。如果在TXRTS 位置1 时正在进行DMA 操作, ENC28J60 会等待DMA 操作完成再发送。这种等待是必需的, 因为DMA 和发送引擎共享同一个存储器访问端口。同样如果在TXRTS 已置1后, ECON1 中DMAST 位才置1, DMA 在TXRTS 位清零前不会采取任何动作。如果正在进行发送, 不应通过SPI 读取或写入任何待发送的字节。主控制器将TXRTS 位清零可取消发送。如果数据包发送完成或因错误取消而中止发送, ECON1.TXRTS位会被清零, 一个7 字节的发送状态向量将被写入由ETXND +1 指向的单元, EIR.TXIF 会被置1 并产生中断(如果允许)。要验证数据包是否成功发送, 应读取ESTAT.TXABRT 位。如果该位置1, 主控制器在查询发送状态向量的各个字段外, 还应查询ESTAT.LATECOL 位, 以确定失败的原因。下面给出写数据包的源代码:

 

 

 
3.3 ENC28J60 接收数据包
  
假设接收缓冲器已完成初始化, MAC 已正确配置而且接收过滤器已配置为接收以太网数据包, 主控制器应该:1.如果需要在接收到数据包时产生一个中断, 就要将EIE.PKTIE 位和EIE.INTIE位置1; 2. 如果需要在由于缓冲空间不足导致数据包丢失时产生一个中断, 就要将EIR.RXERIF 位清零, 并将EIE.RXERIE位和EIE.INTIE 位置1; 3. 通过将ECON1.RXEN 位置1使能接收。在将RXEN 置1 后, 将不能修改双工模式和接收缓冲器起始和结束指针。此外, 要阻止不期望接收的数据包, 在更改接收过滤器配置寄存器(ERXFCON) 和MAC 地址前建议将RXEN 清零。在使能接收后, 没有过滤掉的数据包将写入循环接收缓冲器。任何不符合过滤条件的数据包将被丢弃, 但主控制器无法识别一个数据包已被丢弃。当接收到一个数据包并将其完整写入缓冲器时, EPKTCNT 寄存器将递增, EIR.PKTIF 位将置1, 并产生一个中断(如果允许), 同时硬件写指针ERXWRPT 自动递增。
  
4 结束语
  
随着数字化、智能化仪器的飞速发展, 采用以太网进行通信的应用将会越来越广泛。ENC28J60 芯片是网络技术与单片机技术的完美结合, 用它可以方便地实现嵌入式系统的以太网连接, 可广泛用于智能交通、汽车电子、工业控制、信息家电、医学仪器等各种嵌入式系统应用场合。
  
本文作者的创新点: 通过ENC28J60 芯片所设计的嵌入式网络接口可以在多种环境中应用, 能按需要进行配置来完成系统功能,并且在成本、体积、功耗、灵活性等方面具有明显的优势,能为智能化仪器与设备、信息家电等开拓新的应用前景。

相关资讯
英特尔CEO陈立武在华投资引争议,特朗普施压辞职遭强硬拒绝

近期,围绕英特尔首席执行官陈立武的任职资格问题,美国政界刮起一阵强风。事件源于美国参议员汤姆·科顿(Tom Cotton)本月5日致函英特尔董事会,对陈立武在华投资历史及其潜在利益冲突提出尖锐质疑,认为这可能危及英特尔获得的美国政府巨额补贴(包括《芯片与科学法案》下的近80亿美元)所应承担的国家安全责任,尤其涉及敏感的“安全飞地”(Secure Enclave)国防芯片项目。此质疑引发了广泛关注。

中国晶圆龙头企业二季度业绩强劲,产能利用率创新高

2025年8月7日,中国半导体行业领军企业中芯国际和华虹半导体正式发布2025年第二季度业绩报告。数据显示,两家企业销售收入均实现高两位数增长,并带动盈利能力大幅提升。这一成绩不仅体现了国内晶圆制造领域的高效运营,还反映出全球半导体需求的稳健复苏。分析机构指出,在人工智能、汽车电子和5G通信技术的推动下,中国半导体企业正通过优化产线和扩产战略,持续提升市场竞争力。

设计革新显成效!三星Galaxy Z7系列全球热销,俄罗斯预售激增30%​

三星电子最新一代折叠屏智能手机Galaxy Z Fold 7与Galaxy Z Flip 7甫一上市,即在全球多地区域引发显著消费热潮。最新数据显示,在俄罗斯这一三星曾战略退出的关键市场,该系列的预售表现超出预期。行业分析机构透露,相较于前代产品,Z7系列在俄罗斯的预订量实现了约30%的显著提升。值得关注的是,采用超薄设计、轻量化大幅改进的Galaxy Z Fold 7在俄预售中占据主导,份额高达约70%,充分体现了消费者对于产品形态革新突破的高度认可。

德州仪器启动史上最大规模涨价,中国芯片供应链加速重构

2025年8月,全球模拟芯片龙头德州仪器(TI)对中国客户启动覆盖超6万款产品的价格调整,涨幅达10%-30%,远超6月仅3300款产品的定向调价规模。尽管官方通知生效日为8月15日,部分客户反馈新定价已于8月4日提前执行。此次涨价涵盖工业控制、汽车电子、消费电子及通信设备全品类,其中41.3%的产品涨幅超30%,工业级数字隔离器和车规电源管理芯片(PMIC)成为重灾区,涨幅普遍超过25%。

罗姆加速SiC技术布局应对市场变局,2025财年Q1利润承压

2025财年第一季度,日本罗姆半导体(ROHM)面临严峻财务挑战:营收同比下滑1.8%至1162亿日元,营业利润暴跌84.6%至1.95亿日元。尽管净利润下滑14.3%,但公司成功结束连续三季亏损,实现扭亏为盈。业绩承压主因工业机械与汽车应用领域需求疲软(销售额分别下降5%和7%),叠加中国碳化硅(SiC)厂商的竞争冲击。