阚 伟 (长江大学电子信息学院, 湖北 荆州 434023)
基于ENC28J60的以太网通信接口的设计
阚 伟 (长江大学电子信息学院, 湖北 荆州 434023)
基于dsPIC30F4013高性能数字信号处理器和以太网控制芯片ENC28J60,设计了以太网通信接口。实际应用结果表明,设计的以太网通信接口通信速度快、可靠性高、配置灵活,可以应用于工业控制领域。
以太网;通信接口;ENC28J60
随着Internet网络通信的发展,在工业控制领域基于以太网的设备运用越来越多。以太网通信接口是目前使用最广泛的网络接口,它具有通讯协议完善、价格低廉、稳定可靠、通信速率高、应用广泛和维护费用低等优点。具备以太网通信接口的工业控制设备能够通过路由器接入到因特网中,实现数据的远程传输,避免了传统的数据传输模式和数据“孤岛”现象[1]。为此,笔者采用ENC28J60设计了以太网通信接口。
ENC28J60是美国Microchip公司推出的全球首款28引脚独立以太网控制器,可为嵌入式系统提供远程通讯服务。该芯片带有行业标准串行外设接口(Serial Peripheral Interface,SPI),可作为任何配备有 SPI 的单片机的以太网接口。ENC28J60符合国际电工电子委员会制定的IEEE 802.3协议的全部规范,采用了一系列包过滤机制以对传入数据包进行限制[2]。 ENC28J60还提供了一个内部DMA直接内存访问模块,以实现快速数据吞吐和硬件支持的IP校验与计算。ENC28J60与单片机的通信通过2个中断引脚和SPI实现,数据传输速率高达10Mbits/s,其自带的2个专用的引脚用于连接 LED(发光二极管)以进行网络活动状态显示。图1所示为ENC28J60的典型接口电路。
图1 ENC28J60的典型接口电路
ENC28J60具有以下特性:①支持国际电工电子委员会标准以太网通讯协议IEEE 802.3;②集成了媒体访问地址和10BASE-T PHY;③具备数据接收器和防止通讯冲突的抑制电路;④支持带自动极性检测和校正的10BASE-T端口;⑤支持全双工和半双工模式;⑥其硬件可自动填充CRC校验码。
ENC28J60内部集成有整形输出滤波器和环回模式功能的物理层,其中8K双端口RAM可以进行自由配置,其特殊的过滤器(包括Microchip的可编程模式匹配过滤器)可自动评价和接收或拒收Magic Packet、单播、多播或广播信息包,以减轻主控制器MCU的处理负荷。
2.1硬件电路
ENC28J60通过SPI总线和微控制器连接而构成嵌入式以太网通信接口[2]。ENC28J60工作电压为3.3V或5V。SPI的CS、SCK和 SI输入以及RESET引脚都可承受5 V的电压。如果主控制器运行在5V电压下,当SPI和中断输入由 ENC28J60上的3.3V CMOS输出驱动时,采用74HC08芯片来实现3.3V到5V的电平转换,再输入至单片机[3]。差分接收引脚(TP IN+/TP IN-)以及差分发送引脚(TP OUT+/TP OUT-)与集成网络变压器带中心抽头的RJ45插座HR9011103C连接。ENC28J60与单片机dsPIC30F4013以及相应外部器件的连接如图2所示。
图2 以太网通信接口电路图
2.2软件部分
图3 Microchip公司的TCP/IP 协议栈结构
该设计采用美国Microchip公司的TCP/IP协议栈,该协议栈采用模块化设计,每个模块只在使用的时候才被添加其中。同时,该协议栈按照TCP/IP参考模型实现,其中各层实现代码驻留在一个独立的源文件里。此外,该协议栈使用协同式多任务处理技术。图3所示为Microchip公司的TCP/IP协议栈结构。
设计时,在传输层采用TCP协议提供面向连接、可靠的字节流服务[4]。当客户和服务器彼此交换数据前,必须在双方之间建立一个TCP握手连接,然后才能传输数据。TCP协议提供超时重发、丢弃重复数据、检验数据和控制流量等功能,从而保证数据从一端传到另一端。
在应用层采用目前使用最为广泛的MODBUS TCP协议,许多工业设备如PLC、DCS、智能仪表等都使用该协议作为它们之间的通信标准。此外,通过该协议可以将不同厂商生产的控制设备连接成一个工业网络,以便进行集中监控。
ENC28J60与单片机dsPIC30F4013的连接可通过SPI实现,且ENC28J60仅支持SPI模式0。单片机dsPIC30F4013通过 SPI 接口发送命令,访问ENC28J60的寄存器和读写接收/发送缓冲区,从而完成相关操作[5]。系统复位通过SPI接口由相关程序实现,其过程不影响通信接口电路中RESET引脚的状态。此外,ENC28J60有2个中断输出,分别用于事件中断触发和网络唤醒主机。
软件部分主要包括2方面:①ENC28J60的初始化;②在主控程序循环体中轮流执行各个功能模块,包括串口通信模块、I/O数据处理模块、以太网数据包收发模块和应用层MODBUS协议的主从处理模块。
主要程序源代码如下:
// 包含的头文件
…
// 主程序入口
void main(void)
{
// 执行应用程序的初始化
// ini_spi();
// 初始化单片机的SPI口
…
// 初始化协议栈各组成部分
TickInit();
StackInit();
// 进入无限程序循环
while(1)
{
// 更新时钟节拍计数器
TickUpdate();
// 协议栈管理器执行其任务
StackTask();
// 应用程序逻辑驻留于此
Modbus_Slave_Deal();
// Modbus应用层从机处理
Modbus_Master_ReadWrite();
// Modbus应用层主机处理
DoAppSpecificTask();
… }
}
随着网络技术的发展,越来越多的工业控制领域的设备及仪表都应用了太网通讯接口。笔者采用数字信号处理器dsPIC30F4013及符合国际电工电子委员会制定的IEEE802.3协议的网络芯片ENC28J60为硬件平台,实现了单片机上的以太网通讯接口。实际应用结果表明,设计的以太网通信接口通信速度快、可靠性高、配置灵活,适合于工业控制领域使用。
[1]阳惠宪.现场总线技术及其应用[M].北京: 清华大学出版社,2008.
[2] 王廷尧. 以太网技术与应用 [M ]. 北京:人民邮电出版社,2005.
[3] 徐爱钧.智能化测量控制仪表原理与设计[M].北京:北京航空航天大学出版社,1999.
[4] 谢希仁.计算机网络[M].北京:电子工业出版社,2008.
[5] 陈磊,冯冬芹,金建祥,等.以太网在工业应用中的实时特性研究 [J].浙江大学学报(工学版),2004,38(6):29-31.
[编辑] 李启栋
10.3969/j.issn.1673-1409(N).2012.03.033
TP393.11
A
1673-1409(2012)03-N099-03
2012-01-16
阚伟(1986-),男,2009年大学毕业,硕士生,现主要从事信号获取与处理方面的研究工作。