基于ENC28J60的嵌入式网络接口的设计[图]

相关专题: 芯片

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 芯片所设计的嵌入式网络接口可以在多种环境中应用,能按需要进行配置来完成系统功能,并且在成本、体积、功耗、灵活性等方面具有明显的优势,能为智能化仪器与设备、信息家电等开拓新的应用前景。

作者:刘琼 朱志伟 周志光 来源:《微计算机信息》

我推荐大家读

轻松参与

VS

表达立场

这是垃圾文章


微信扫描分享本文到朋友圈
扫码关注5G通信官方公众号,免费领取以下5G精品资料
  • 1、回复“LTBPS”免费领取《《中国联通5G终端白皮书》
  • 2、回复“ZGDX”免费领取《中国电信5GNTN技术白皮书
  • 3、回复“TXSB”免费领取《通信设备安装工程施工工艺图解
  • 4、回复“YDSL”免费领取《中国移动算力并网白皮书
  • 5、回复“5GX3”免费领取《R1623501-g605G的系统架构1
  • 7、回复“6G31”免费领取《基于云网融合的6G关键技术白皮书
  • 8、回复“IM6G”免费领取《6G典型场景和关键能力白皮书
  • 本周热点本月热点

     

      最热通信招聘

      最新招聘信息

    最新技术文章

    最新论坛贴子