基于ENC28J60的嵌入式网络接口的设计
深圳集万讯电子Jetson 谢灶飞 15986761961 Q:2365851298
随着Internet的出现和以太网的迅速发展,基于以太网的设备控制越来越多。目前市场上大部分以太网控制器采用的封装均超过80引脚,如RTL8019AS、D***008、CS8900A等。这些器件不仅结构复杂,面积庞大,且系统开销较大。近来,Microchip推出***首枚28引脚***以太网控制器ENC28J60,可为嵌入式系统提供低引脚数、低成本、精简的远程通讯解决方案。 2 ENC28J60网络接口体系结构
ENC28J60是带有行业标准串行外设接口(Serial Peripheral Interface,SPI)的***以太网控制器。它符合IEEE 802.3的全部规范,采用了一系列包、过滤机制以对传入数据包进行限制。它还提供了一个内部DMA 模块,以实现快速数据吞吐和硬件支持的IP校验和计算。与主控制器的通信通过两个中断引脚(INT和WOL)和SPI脚(SO、SI、SCK、CS)实现,数据传输速率高达10 Mb/s。两个专用的引脚(LEDA、LEDB)用于连接LED,进行网络活动状态指示。图1所示为ENC28J60的典型应用电路。
ENC28J60存储器构成
ENC28J60的存储器分为三种:控制寄存器、以太网缓冲寄存器、PHY寄存器。
控制寄存器用于进行ENC28J60的配置、控制和状态获取,可通过SPI接口直接读写控制寄存器。
ENC28J60的控制寄存器通常分为ETH、MAC和MII三组寄存器,其中“E”开头的为ETH组,“MA”开头的寄存器属于MAC组,“MI”开头的属于MII组。
以太网缓冲寄存器包含一个供以太网控制器使用的发送和接收存储空间,可通过SPI接口对该存储空间的容量进行编程,只可通过读写缓冲器的SPI指令来访问以太网缓冲器。
PHY寄存器用于进行PHY模块的配置、控制和状态获取,不可以通过SPI接口直接访问这些寄存器,只可通过MAC中的MII访问这些寄存器。
图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的插孔与隔离变压器的间隔应尽量小,输出和输入差分信号对的走线要有很好的隔离。
图2 基于ENC28J60的嵌入式网络接口的硬件电路原理图
电路中的主控制器采用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个数据丢失。
结束语
随着数字化、智能化仪器的飞速发展,采用以太网进行通信的应用将会越来越广泛。ENC28J60芯片是网络技术与单片机技术的***结合,用它可以方便地实现嵌入式系统的以太网连接,可广泛用于智能交通、汽车电子、工业控制、信息家电、***仪器等各种嵌入式系统应用场合。
通过ENC28J60芯片所设计的嵌入式网络接口可以在多种环境中应用,能按需要进行配置来完成系统功能,并且在成本、体积、功耗、灵活性等方面具有明显的优势,能为智能化仪器与设备、信息家电等开拓新的应用前景。