当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]嵌入式系统以太网接口的设计

目前,以太网(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之间的数据传送。 [!--empirenews.page--]

    DM9008可寻址的空间有32个,分别为00H~1FH。其中00H~0FH是寄存器区,00H作为命令寄存器,通过设置可选择3个页面,10H~17H为数据端口,18H~1FH为复位端口。

3.1 DM9008的初始化

    DM9008的具体初始化过程如下(CPU对DM9008的寻址需要加上基地址,为了描述方便,省略掉基地址直接用DM9008的内部地址描述寄存器地址):

    (1)读入1FH端口数据,再写回该地址以启动DM9008工作。

    (2)向命令寄存器CR(00H)写入21H,选择寄存器页面0,并进行软件复位。

    (3)设置数据结构寄存器DCR(0EH)为48H。

    (4)设置方式状态寄存器TCR(0DH)为02H。

    (5)读出网络的物理地址:

       a. 设置远程DMA计数器RBCR1(0BH)、RBCR0(0AH)的值为000CH;

       b.设置远程DMA地址RSAR1(09H)、RSAR0(08H)的值为0000H;

       c. 设置命令寄存器CR(00H)为远程DMA读,即0AH;

       d. 重复从数据端口(10H)读6个字节,这6个字节即网络物理地址;

       e.停止远程DMA,设置CR为21H,RBCR1、RBCR0为0000H。

    (6)设置接收状态寄存器RCR(0CH)为04H。

    (7)划分缓冲区为接收缓冲区和发送缓冲区,并建立接收缓冲环。将DM9008内部RAM地址为4000H~4BFFH设置为发送缓冲区,4C00H~7FFFH设置为接收缓冲区,即设置PSTART(01H)为4CH,PSTOP(02H)为80H,BNRY(03H)为4CH。

    (8)设置CR为61H,选择页面1。

    (9)设置网卡地址寄存器,把PAR0(01H)~PAR5(06H)设置为前面读出的物理地址。

    (10)设置当前页面寄存器CURR(07H)为PSTART+1,即4DH。

    (11)清除多址寄存器,即MAR0(08H)~MAR7(0FH)为00H。

    (12)设置CR为21H,选择寄存器页面0。

    (13)清除中断状态寄存器ISR(07H)为0FFH。

    (14)设置中断屏蔽寄存器IMR(0FH)为3BH,即接收中断允许、接收错误中断允许、发送错误中断允许、溢出中断允许、计数器溢出中断允许。

    (15)设置发送设置寄存器TCR(0DH)为00H。

    (16)设置CR为22H,芯片进入工作状态。

    至此,DM9008的初始化过程完成,DM9008处于接收状态。只要网络上有可以接收的数据包,DM9008自动将数据存入接收缓冲区并在收完后向CPU发中断申请。

3.2 接收数据

    DM9008收到一个完整的以太网数据包后,向CPU发出中断请求,CPU响应DM9008的中断申请后,进入中断服务程序并开始接收数据,具体过程如下。

    (1)读出中断状态寄存器ISR,并写回该寄存器。

    (2)判断是否数据接收中断,如果不是,不执行以下步骤。

    (3)设置CR为22H,选择页面0。

    (4)设置远程DMA地址寄存器RSAR1、RSAR0为接收地址指针,该指针高位字节初始值位PSTART+1,低位字节为0。

    (5)设置远程DMA计数器RBCR1、RBCR0为0004H;

    (6)设置CR为远程读0AH,读数据端口,读出4个字节,这4个字节第1个字节表示接收状态,第2个字节为下一包开始地址指针,第3~4个字节为本数据包的长度(高位字节在前)。

    (7)设置CR为22H,远程DMA完成。

    (8)根据接收状态判断数据包是否接收正确,如果接收正确,启动远程DMA,收取该数据包并进行处理。

    (9)结束远程DMA,设置下一次接收数据指针和接收边界指针。

3.3 发送数据

    数据的发送过程应包含三个步骤:数据包的封装;通过远程DMA将数据包送入DM9008的数据发送缓冲区;通过DM9008的本地DMA将数据送入FIFO进行发送。具体过程如下:

    (1)数据包在发送前应该按规定的格式封装好,格式如下:

(2)把上面的数据包通过远程DMA写送入DM9008的数据发送缓冲区。

    a. 设置CR为22H,选择寄存器页面0;

    b. 设置中断状态寄存器ISR为40H,清除发送完成标志;

    c.设置远程DMA地址寄存器RSAR1、RSAR0为4000H,即发送缓冲区开始地址,

    d. 设置远程DMA字节计数寄存器RBCR1、RBCR0为发送数据包的长度,

    e. 设置CR为12H,设置命令寄存器为远程DMA写,

    f. 往数据端口写入发送数据,

    g. 查询中断状态寄存器ISR,等待远程DMA完成,

    h. 设置CR为22H,设置RBCR1、RBCR0为0,远程DMA停止,

    i. 设置ISR为40H,清除发送完成标志。

    (3)启动本地DMA,把数据发送出去。

    a. 设置发送字节计数器TBCR1(06H)、TBCR0(05H)为发送数据包的长度;

    b. 设置发送页面起始地址TPSR(04H)为40H,即发送缓冲区开始地址高位字节;

    c. 设置命令寄存器CR为26H,启动发送。

3.4 高层通信协议

    上述发送、接收过程所完成的协议是MAC层和物理层的协议。要真正实现嵌入式系统与以太网上其它设备(如PC机)之间的通信,还需要在嵌入式系统中实现更高层的通信协议,如TCP/IP协议,这样PC机的程序员就可以使用TCP/IP协议透明地访问嵌入式系统的数据。

    因此上述以8051单片机系统为例的嵌入式系统的软件设计中除了实现收发数据的功能外,还需要实现TCP/IP协议及更高层的应用层协议才能真正实现整个系统的通信功能。由于TCP/IP协议的实现通常采用C语言,并且有现成的源程序,所以在用8051系列单片机编程时,可采用C51语言并参考TCP/IP标准的源程序来具体实现。有关这方面内容,可以查看有关TCP/IP协议方面的资料。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

成都2022年10月19日 /美通社/ -- 近期,平安养老险积极筹备个人养老金的产品设计和系统开发工作,发展多样化的养老金融产品,推动商业养老保险、个人养老金、专属商业养老保险等产品供给。 搭养老政策东风 ...

关键字: 温度 BSP 东风 大众

广东佛山2022年10月19日 /美通社/ -- 空间是人居生活的基础单元,承载着生存与活动的最基本功能。而对于理想空间的解构意义却在物理性容器之外,体现出人们对于空间和生活深层关系的思考,同时也塑造着人与空间的新型连接...

关键字: 温度 BSP 智能化 进程

上海2022年10月19日 /美通社/ -- 10月17日晚间,安集科技披露业绩预告。今年前三季度,公司预计实现营业收入7.54亿元至8.33亿元,同比增长60.24%至77.03%;归母净利润预计为1.73亿...

关键字: 电子 安集科技 BSP EPS

北京2022年10月19日 /美通社/ -- 10月18日,北京市经济和信息化局发布2022年度第一批北京市市级企业技术中心创建名单的通知,诺诚健华正式获得"北京市企业技术中心"认定。 北京市企业技...

关键字: BSP ARMA COM 代码

北京2022年10月18日 /美通社/ -- 10月14日,国际数据公司(IDC)发布《2022Q2中国软件定义存储及超融合市场研究报告》,报告显示:2022年上半年浪潮超融合销售额同比增长59.4%,近5倍于...

关键字: IDC BSP 数字化 数据中心

上海2022年10月18日 /美通社/ -- 2022年9月5日,是首都银行集团成立60周年的纪念日。趁着首都银行集团成立60周年与首都银行(中国)在华深耕经营12年的“大日子”,围绕作为外资金融机构对在华战略的构想和业...

关键字: 数字化 BSP 供应链 控制

东京2022年10月18日  /美通社/ -- NIPPON EXPRESS HOLDINGS株式会社(NIPPON EXPRESS HOLDINGS, INC.)旗下集团公司上海通运国际物流有限公司(Nipp...

关键字: 温控 精密仪器 半导体制造 BSP

广州2022年10月18日 /美通社/ -- 10月15日,第 132 届中国进出口商品交易会("广交会")于"云端"开幕。本届广交会上高新技术企业云集,展出的智能产品超过140,...

关键字: 中国智造 BSP 手机 CAN

Lua RTOS 是一个实时操作系统,设计在嵌入式系统上运行,对 FLASH 和 RAM 内存的要求最低。目前 Lua RTOS 可用于 ESP32, ESP8266 和 PIC32MZ 平台,并可以轻松移植到其他32位...

关键字: Lua RTOS 操作系统 嵌入式系统

通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UATR,是一种串行、异步、全双工的收发器。全双工的UART支持同时双向通信,是嵌入式系统必不可少的d...

关键字: 异步收发 传输器 嵌入式系统

嵌入式教程

6897 篇文章

关注

发布文章

编辑精选

技术子站

关闭