新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 嵌入式系统以太网接口的设计

嵌入式系统以太网接口的设计

作者: 时间:2014-12-02 来源:网络 收藏

  3软件设计

本文引用地址:https://www.eepw.com.cn/article/266249.htm

  的编程包括初始化、发送、接收三部分功能。在接收和发送数据以前要进行必需的检测和初始化。的初始化主要是设置所需的寄存器状态,建立网络接口收发的条件。

  网络接口通过2个DMA操作来完成数据的接收和发送。本地DMA完成DMA9008与其内部FIFO队列之间的数据传送,远程DMA完成与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,设置下一次接收数据指针和接收边界指针。

双绞线传输器相关文章:双绞线传输器原理


关键词: 以太网 8051 DM9008

评论


相关推荐

技术专区

关闭