基于 DM9000A的网络接口设计
摘要:为了实现嵌入式以太网通信,使用以太网控制芯片 DM9000A和单片机
MSP430F5529,组成了嵌入式以太网接口,实现了网络通信,其中单片机完成自身以及以太
网控制芯片的初始化、数据的封包和收发控制,而 DM9000A芯片负责网络数据的发送和接
收。详细介绍了系统的硬件构成框图和硬件设计,给出了实际的接口电路,重点描述了单
片机和 DM9000A芯片之间的软件接口程序设计,并给出了网络通信
协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
的应用方法。实验
结果表明,该设计体积小、接口简单、速度快、功耗低,具有很高的推广价值。
关键词:以太网通信;单片机;DM9000A;MSP430F5529
随着嵌入式技术和网络技术的发展及以太网的广泛应用,以太网接口在嵌入式系统中
的应用越来越广泛,网络化成为未来设备发展的一个重要方向,各种嵌入式设备已经成功
渗透到各个领域,并逐渐朝着网络化、智能化的方向发展。以太网以其在实时性、可靠性、
标准化等方面的卓越性能及其便于安装、维护简单、不受通信距离限制等优点,已发展成
为一种成熟的技术。本文以 MSP430F5529单片机和以太网控制器 DM9000A为硬件组成,通
过软件编程,和上位机实现了 UDP协议的网络通信。
1 硬件设计
DM9000A是 DAVICOM公司推出的一款高速以太网接口芯片,是完全集成的和符合成本
效益单芯片快速以太网 MAC控制器,其被设计为低功耗、高处理性能,而其操作又非常简
单,具有通用的处理器接口,可以与多种处理器直接连接,数据总线宽度可设置为 8 b和
16 b,支持 3.3 V和 5 V电源模式。
MSP430F5529单片机是 TI公司的一款超低功耗单片机。该芯片采用低功耗设计,具有
五种低功耗模式,从低功耗模式到唤醒模式的转换时间小于 6μ s,其独特的时钟设计,每
个时钟都可以打开或关闭,从而实现对整体功耗的控制。供电电压范围为 1.8~3.6 V,
具有强大的中断功能,集成了较丰富的片内外设和较多的 I/O端口,提高了对外围设备的
开发能力。
在本设计中,单片机 MSP430F5529控制整个系统的运行,以太网控制器 DM9000A实现
网络传输的低层功能。单片机完成对 DM9000A的初始化,并将需要发送的数据按协议要求
进行以太网帧封装,发送给 DM9000A;以中断的方式接收网络数据,并对接收到的数据进
行解析,对有用数据进行处理。DM9000A接收从单片机发送来的数据,将数据通过 RJ45传
送到远程主机,并通过 RJ45接收从远程主机发送来的数据,将数据初步解析后保存在缓存
中,然后向单片机发出中断信号,由单片机来完成对数据的读取。系统的硬件设计框图如
图 1所示。
系统中单片机和以太网控制器都采用 3.3 V来供电。单片机作为系统的主控芯片,和
DM9000A之间采用 8 b模式(将 EECS脚接一个 10 kΩ的上拉电阻),使用 P6端口和
DM9000A的数据端口相连接,传输数据或地址数据,无需电平转换;P1.0脚和 CMD相连,
为高时为数据读/写操作,为低时为地址读/写操作;P1.1脚和 INT脚相连,作为单片
机的数据读取中断信号;P1.2,P1.3脚分别和 IOR脚、IOW脚相连,用于控制读或写操
作,低电平有效,即在信号的上升沿进行读(IOR)写(IOW)操作;P1.4脚和 CS脚相连,作
为 DM9000A的片选信号。
2 DM9000A芯片操作
DM9000A的读/写操作与一般的异步存储器相同,图 2和图 3分别显示了 DM9000A的
读/写时序。
根据芯片资料,编写读/写寄存器的子函数。
寄存器的读操作程序:
3 软件设计
3.1 DM9000A初始化
对 DM9000A芯片的初始化,就是向相应的寄存器写入期望的值,为芯片的稳定工作做
好准备。主要需要进行以下设置以便让芯片处于工作状态:
(1)开启 DM9000A工作状态:芯片 GEPIO0的默认值为 1,芯片处于 Powerdown状态,
所以首先需要将这一位设置为 0,来打开芯片。设置方法是将寄存器 GPCR的 bit[0]设置为
1,将寄存器 GPR的 bit[0]设置为 0。
(2)进行 2次复位操作:根据芯片的特点,要使芯片达到正常工作状态,需要对其进行
2次软启动操作,方法是向 NCR寄存器写入 3,延迟至少 10μ s后,写入 0,重复这个操作
一次。
(3)设置 MAC地址:初始化时要初始化 PAR(10h~15h)寄存器,PAR中保存的是芯片物
理地址(MAC地址),芯片根据网络数据与 PAR中的数据比较来确定接收到的数据是否是发
给自己的。
(4)收、发控制寄存器设置:要清除发送状态寄存器,打开收/发中断使能。
初始化完成后可以通过读 NCR寄存器来判断芯片是否已经正确的完成初始化,并处于工作
状态,如果未初始化成功,可以重复以上操作。
3.2 数据发送
在数据发送之前,首先要对数据按网络协议进行封包,将封包后的数据全部发送。
DM9000A的内部 RAM地址 0000h~0BFFh是发送缓冲区,用来存放发送数据包。用户在写入
数据时,无需关心数据存放的地址,只要向 MWCMD寄存器连续写入封包数据即可,芯片会
自动将数据依次写入到发送缓冲区中。另外还需将要封包后数据的大小存放在 TXPLH和
TXPLL寄存器中,之后再将 TCR的 bit0设为 1,芯片将开始进行封包数据的传送。可以通
过读取 TSRI,TSR11寄存器判断本次数据发送是否成功。
单片机数据发送的具体程序如下所示:
3.3 数据接收
可以采用中断的方式来完成对数据的接收。当 DM9000A 接收到数据并通过 CRC 校验后,
将产生一个接收中断信号,单片机在中断发生时可以将整个数据包读出,并按照使用的网
络协议来处理数据。DM9000A 内存的 0C00h~3FFFh 是数据接收缓冲区。芯片在接收到数
据包后,会在数据包的前面自动加上 4 个字节的数据,接收数据包时首先要读取这 4 个字
节来确定数据包的状态,第一个字节“01H”表示接下来的是有效数据包,且数据保存在
接收缓冲区中;若为“00H”则表示没有数据包,中断程序可以直接返回;若为其他值则
表示出现异常,需要重新初始化芯片。第 2 个字节则为这个数据包的相关信息,其格式与
RSR 寄存器的含义一致,可以用来判断本数据包是否出现异常和出现了什么异常。第 3 和
4 个字节是存放这个封包的长度大小(不包括前 4 个字节),在读取数据包时需要用这个长度
来进行接收控制。
同数据发送类似,单片机从 DM9000A 中读取数据也只需要读取 MRCMD 寄存器中的值
即可,读取一个字节数据后,芯片自动将下一个字节数据移到这个寄存器中。数据包的接
收过程分 2 步:先读取 MRCMDX 寄存器,判断是否存在正确的数据包;如有数据包,根据
数据包的长度信息依次读取读 MRCMD 寄存器,将整个数据包读取出来。其中第 1 步需要
读取两次 MRCMDX 寄存器,因为第 1 次读到的值总为 0。单片机数据接收程序如下:
4 网络数据传输协议
DM9000A芯片只是用来进行网络数据传输的,在具体使用时需要在单片机中按照所使
用的网络通信协议格式如 UDP等,进行数据的封包或解析,需要根据各种协议的格式编写
相应的数据处理函数。在本系统中使用了 UDP协议,协议采用分层结构,因此,数据报文
也采用分层封装的方法。UDP协议的数据报文分层封装如图 4所示。
单片机在通信时需要按照 UDP协议对每一层的数据进行封包或解包处理,在上位机中
使用一个抓包工具,可以对通信过程进行监控。图 5是在计算机上使用抓包工具监控网络
通信的一个截图。
5 结语
本设计采用 MSP430F5529单片机和 DM9000A以太网控制器相结合,组成了嵌入式以太
网接口,通过软件编程实现了简单的网络通信协议,成功的将本系统和控制计算机连接起
来,实现了彼此之间的网络通信,为以后实现通过网络进行远程登录、访问、采集、监控
等操作提供了可能,符合当今嵌入式设备趋于网络化发展的方向。经多次实验表明,能够
实现网络通信功能,并且具有硬件接口简单、使用器件少、开发周期短、功耗低等特点。
另外本设计的超低功耗的特点也使其在嵌入式系统中可以得到较多的推广和应用。