您当前的位置:五五电子网电子知识单元电路接口电路基于MSP430F5529单片机和DM9000A以太网控制器的网络接口设计 正文
基于MSP430F5529单片机和DM9000A以太网控制器的网络接口设计

基于MSP430F5529单片机和DM9000A以太网控制器的网络接口设计

点击数:7745 次   录入时间:03-04 11:40:29   整理:http://www.55dianzi.com   接口电路

    内容摘要:为了实现嵌入式以太网通信,使用以太网控制芯片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所示。

c.JPG

   
    系统中单片机和以太网控制器都采用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的片选信号。



www.55dianzi.com

    2 DM9000A芯片操作

    DM9000A的读/写操作与一般的异步存储器相同,图2和图3分别显示了DM9000A的读/写时序。

d.JPG

   
    根据芯片资料,编写读/写寄存器的子函数。
    寄存器的读操作程序:
    e.JPG
  f.JPG

    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寄存器判断本次数据发送是否成功。



www.55dianzi.com


    单片机数据发送的具体程序如下所示:
g.JPG
h.JPG

    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。单片机数据接收程序如下:

i.JPG
j.JPG



www.55dianzi.com

    4 网络数据传输协议

    DM9000A芯片只是用来进行网络数据传输的,在具体使用时需要在单片机中按照所使用的网络通信协议格式如UDP等,进行数据的封包或解析,需要根据各种协议的格式编写相应的数据处理函数。在本系统中使用了UDP协议,协议采用分层结构,因此,数据报文也采用分层封装的方法。UDP协议的数据报文分层封装如图4所示。

[1] [2]  下一页


本文关键字:单片机  控制器  以太网  网络  接口  接口电路单元电路 - 接口电路