基于ENC28J60的嵌入式网络接口的设计
来源:RFID射频快报
摘要:设计了以ENC28J60 为核心的以太网接口实现方案, 描述了该系统硬件架构的设计方法。在简要介绍了以太网控制器ENC28J60 的结构、功能、外围电路的基础上, 对ENC28J60 与Atmega16 的SPI 通讯进行了阐述。此方案不仅成本低, 而且可以实现500Kbps 以上的传输速率, 满足了嵌入式系统的Internet 控制要求。
Abstract:
Key words :
提要:设计了以ENC28J60为核心的以太网接口实现方案, 描述了该系统硬件架构的设计方法。在简要介绍了以太网控制器ENC28J60 的结构、功能、外围电路的基础上, 对ENC28J60 与Atmega16 的SPI 通讯进行了阐述。此方案不仅成本低, 而且可以实现500Kbps 以上的传输速率, 满足了嵌入式系统的Internet 控制要求。
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 的典型应用电路。
图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 个数据丢失。
此内容为AET网站原创,未经授权禁止转载。