当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]摘要:介绍以8051系列单片机系统为例的嵌入式系统与10Mbps以太网控制器芯片DM9008的硬件接口电路的实现及编程方法。关键词:嵌入式系统 以太网 DM9008芯片 单片机 TCP/IP协

摘要:介绍以8051系列单片机系统为例的嵌入式系统与10Mbps以太网控制器芯片DM9008的硬件接口电路的实现及编程方法。

关键词:嵌入式系统 以太网 DM9008芯片 单片机 TCP/IP协议

目前,以太网(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根线均浮空,所选线在EEPROM93C46中指定。

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完成DMA9008与其内部FIFO队列之间的数据传送,远程DMA完成DM9008与CPU之间的数据传送。

DM9008可寻址的空间有32个,分别为00H~1FH。其中00H~0FH是寄存器区,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将数据包送入DMA9008的数据发送缓冲区;通过DM9008的本地DMA将数据送入FIFO进行发送。具体过程如下:

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

目的地址(6字节)源地址(6字节)协议(2字节)数据(不小于46字节)

(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协议方面的资料。

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

随着嵌入式系统不断发展,应用领域从工业自动化、车联网到先进的物联网设备日益丰富和复杂,设计人员在性能、灵活性与可靠性之间的平衡面临越来越多的挑战。具备设计可扩展性和多样化外设集成能力,成为应对这些挑战、让设计具备未来适应...

关键字: 嵌入式系统 MCU 车联网

在高性能嵌入式系统中,DMA(直接内存访问)是解放CPU、实现数据高速搬运的“搬运工”。然而,当CPU缓存(L1/L2 Cache)介入后,数据的物理内存与缓存副本之间极易出现不一致,这往往是导致系统随机崩溃或数据错乱的...

关键字: DMA 缓存一致性 Cache Coherency

2026年3月10日,全球嵌入式系统领域的年度盛会——Embedded World在德国纽伦堡展览中心盛大启幕。作为领先的嵌入式处理器模组厂商,米尔电子携全系列嵌入式核心板、开发板及创新解决方案重磅亮相,与来自全球40多...

关键字: 嵌入式系统 核心板 开发板

工业物联网设备开发中,某智能电表项目曾因ADC采样中断响应延迟导致数据丢失率高达15%。技术人员通过重构DMA驱动架构,将数据搬运效率提升12倍,CPU占用率从38%降至3%,成功解决高速采样场景下的实时性难题。这一案例...

关键字: STM32 DMA

工业机器人关节控制、CNC机床伺服驱动等高精度电机控制场景中,系统需在100μs周期内完成电流采样、位置反馈、PID计算及PWM输出等12项关键任务。传统基于中断的调度方式因CPU负载不均和任务抢占,常导致位置反馈延迟超...

关键字: 电机控制 DMA

中国北京,2026年2月——领先的边缘AI与智能音频技术提供商XMOS日前宣布,公司将参加全球嵌入式与边缘智能领域的年度盛宴国际嵌入式展览会(Embedded World 2026,EW 26),全面展示生成式系统级芯片...

关键字: 嵌入式系统 边缘计算 智能音频

外部Flash存储器的访问速度直接影响系统性能,传统SPI接口受限于单线数据传输模式,在处理大容量数据时效率低下。QSPI(Quad SPI)通过四线并行传输技术,结合DMA(直接存储器访问)机制,可突破STM32系列M...

关键字: QSPI DMA

通过DMA硬件加速与IDLE中断的协同工作,该方案实现了变长数据帧的高效可靠接收,特别适用于工业控制、智能仪表等对实时性和可靠性要求严苛的场景。其核心优势在于:

关键字: USART DMA

以STM32F103为例,当使用USART1以115200bps速率连续接收数据时,若采用传统轮询方式,每接收1字节需至少5条指令(读DR、写内存、增址、判数、跳转),在72MHz主频下耗时约200ns。表面看CPU仍有...

关键字: STM32 DMA

摘要:在开发新一代嵌入式系统时,越来越多的主控系统级芯片(SoC)正在从单一内核转向多内核与异构架构,这促使系统研发工程师更希望得到一个能“覆盖快速变化”的统一开发平台。工欲善其事必先利其器,系统开发的新挑战正在迫使研发...

关键字: 嵌入式系统 SoC 工具链
关闭