目前,以太网(Ethernet)协议已经非常广泛地应用于各种计算机网络,如办公局域网、工业控制网络、因特网等场合,并且还在不断地发展。基于以太网的新技术和联网设备不断出现,以太网已经成为事实上最常用的网络标准之一。
但是,基于以太网的嵌入式系统目前并不是很多。其原因除了嵌入式系统本身运行速度较慢、资源较少且不足以实现以太网的各种协议外,更重要是设计以太网的接口及协议相对比较复杂,使人望而却步。
本文将介绍以8051系列单片机系统为例的嵌入式系统与10Mbps以太网控制器芯片DM9008的接口电路实现及编程方法。
1 以太网控制器DM9008简介
DM9008是台湾DAVICOM公司生产的基于ISA总线的10M超级以太网控制器芯片。它集成了介质访问控制子层(MAC)和物理层的功能,可以方便地设计基于ISA总线的系统,也可以比较简单地与通用单片机进行接口。
主要特点如下:
·实现IEEE 802.3协议、10BASE-T、10BASE2和10BASE5的单芯片解决方案;
·集成ISA总线接口、8K×16 SRAM、介质访问控制(MAC)、编解码器(ENDEC)和10BASE-T收发器;
·与NOVELL NE2000软件兼容;
·可选8根中断申请线;
·自动极性检测和纠正;
·可选8、16位模式;
·外部可编程EEPROM;
·单5V电源低功耗CMOS设计;
·100脚PQFP封装。
由于该芯片功能较强,配置有较多的引脚,但在与一般单片机接口时只需要用到其中的一部分即可完成常用的功能。
2 与8051单片机系统的接口电路
下面介绍国内最常用的8051系列单片机与DM9008的接口电路,实现的网络接口采用无屏蔽双绞线(UTP)RJ-45接口。
图1给出了8051单片机系统与DM9008网络控制器的接口电路框图。8051单片机系统所提供的接口信号线为:P0口的8位数据总线D0~D7、5根经过锁存的地址线A0~A4、读信号线RD、写信号线WR、经过译码产生的片选线CS1和经过反相后高电平有效地中断请求线INT。这些信号线分别与DM9008的数据线低8位SD0~SD7、地址线低5位SA0~SA4、I/O读信号线IOR、I/O写信号线IOW、地址使能线AEN和8根中断请求线中的一根IRQ12相连。
DM9008的复位线RST与8051单片机的复位线同为高电平有效,故在系统上电时同时复位。时钟电路只需外接1个20MHz的晶振及2个电容即可。
DM9008有16根数据线,与8051单片机接口,只需用到低8位数据线,其它高8位数据线不用,IO16接高电平或浮空,MD6/SLOT接地。地址线有SA0~SA19共20根,只用到低5位SA0~SA4与单片机相连,SA5~SA7接地、SA8~SA9接高电平,其它高地址位全部接地。这样对于DM9008内部来说,I/O的基地址为300H。另外BALE、SYSCLK接地,SMEMR、MEMW、MEMR浮空。DM9008有8根中断请求线,可以选1根与8051系统的中断线相连,其它7根线均浮空,所选线在EEPROM 93C46中指定。
EEPROM 93C46是一个采用4线SPI串行接口的电可擦除存储器,容量为64×16位(即128个字节),主要保存DM9008的配置信息,如网络硬件地址、I/O基地址、中断线选择等配置寄存器内容,在DM9008复位后读取93C46的内容并设置内部配置寄存器的值。如果93C46中内容不正确,DM9008就无法正常工作。所以通常先通过编程器把配置数据写入93C46,再把它焊在电路板上。DM9008通过EECS、EEDI、EEDO、EECK与93C46相连。
由于本设计只使用10BASE-T,即采用无屏蔽双绞线的RJ45接口,而DM9008已内置了10BASE-T的收发器,故接口部分电路比较简单,只需要外接1个隔离滤波器LAN7236即可。TPTX+、TPTX-为发送线,TPRX+、TPRX-为接收线,经隔离后的4根线与RJ45接口相连。
对于其它型号的单片机,如16位单片机80C196KC等,其接口电路只需稍作修改即可改为16位数据总线方式。
3 软件设计
DM9008的编程包括初始化、发送、接收三部分功能。在接收和发送数据以前要进行必需的检测和初始化。DM9008的初始化主要是设置所需的寄存器状态,建立网络接口收发的条件。
网络接口通过2个DMA操作来完成数据的接收和发送。本地DMA完成DM9008与其内部FIFO队列之间的数据传送,远程DMA完成DM9008与CPU之间的数据传送。