摘 要 : 为实现基于MMC2107的嵌入式系统的网络连接,文章在简要介绍网络接口控制器RTL8019AS的基础上,给出了MMC2107微控制器与网络接口控制器RTL8019AS的接口电路设计和软件设计流程。
关键词 : 嵌入式系统; MMC2107; 以太网; TCP/IP
1. 引言
嵌入式系统是以计算机为基础、以应用为中心、软硬件均可剪裁、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。近年来,随着计算机、微电子、通信及网络技术的发展,嵌入式系统渗透到各个领域,广泛用于移动计算机平台、信息家电、无线通信设备、工业/商业控制等诸多领域。
在一些实际应用中,为了实现多个MCU(微控制器)之间的信息交流,可以利用CAN、RS232、RS485等总线将MCU组网,但这种网络的有效半径比较有限,有关的通信协议也比较少,并且一般是孤立于Internet以外的。Internet现在已经成为信息流通的重要渠道,如果嵌入式系统能够连接到Internet上,则可以方便、低廉地将信息传送到几乎世界上的任何一个地方,不仅可以实现对设备的远程控制、维护和升级,而且能够使接入Internet的设备成为网络资源的一部分。由于在实际工作中需要实现基于MMC2107的嵌入式设备的网络连接,本文以RTL8019AS以太网控制器为基础,给出了一种嵌入式系统与Intranet/Internet互联的设计方案,有效地解决了嵌入式系统的网络连接需求。
2. 以太网接口控制器RTL8019AS介绍
当前市场上存在多种以太网接口控制器,为缩短开发周期,在考虑实际产品功能需求的的基础上,特选用了台湾ReaLTEk公司生产的RTL8019AS以太网接口控制器。RTL8019AS具有功耗低、性价比高等优点,因此在嵌入式系统中得到广泛应用。
2.1 主要性能
(1)符合Ethernet II与IEEE802.3(10Base5、10Base2、10BaseT)标准;
(2)全双工,收发可同时达到10Mbps的速率;
(3)内置16KB的SRAM,用于收发缓冲,降低对主处理器的速度要求;
(4)支持8/16位数据总线,8个中断申请线以及16个I/O基地址选择;
(5)支持UTP、AUI、BNC自动检测,还支持对10BaseT拓扑结构的自动极性修正;
(6)允许4个诊断LED引脚可编程输出;
(7)100脚的PQFP封装,缩小了PCB尺寸。
2.2 帧格式
RTL8019AS的发送和接收采用标准的IEEE802.3帧格式,如图1所示。有效数据不足46B时需填零补足,超过1500B时,需要拆成多个帧传送。前导码、帧起始定界符和帧校验序列是帧格式所需的字段,NIC(网络接口控制器)去掉这3个字段,加上帧接收状态信息(1B)、下一帧页地址指针(1B)、该帧的帧长度(2B)和目的地址、源地址、类型/数据字段长度、有效数据一起放入缓冲区供微控制器使用。在图1中所示的帧中,类型/数据长度字段有两个作用,当该字段长度的值小于或等于1500时,表示后续有效数据的长度,反之,表示数据帧的类型。比如值为0x0800,表示有效数据的内容为IP包;值为0x0806,表示有效数据的内容为ARP包。
2.3 远程DMA和本地DMA
RTL8019AS内部可以划分为远程DMA(remote DMA)通道和本地DMA(LOCal DMA)通道两个部分。本地DMA完成控制器与网线的数据交换:接收数据时,NIC将接收到的数据存到NIC中的接收缓冲区,收满一帧后,以中断或寄存器标志的方式通知微控制器;发送数据时,由微控制器发出传送命令,控制器将NIC中的发送缓冲区内的数据按帧格式送到网线上。NIC中还包括一个FIFO缓冲区,可对收发的数据作16个字节的缓冲,以减少对本地DMA请求的频率。
远程DMA负责微控制器和RAM间的数据传输,即由微控制器设置读/写RAM的地址后,通过读/写数据端口从接收缓冲区中取出数据或者将数据送入发送缓冲区。
2.4 内部RAM地址空间分配
RTL8019AS内部有两块RAM区:一块只有32B,地址为0x0000~0x001f,称为Prom页,存储有本网络接口芯片的以太网物理地址。另一块容量为16KB,地址为0x4000~0x7fff,用于收发缓冲。
收发缓冲以页为单位,每页256个字节,共64页,页号记为0x40~0x80。一般将前12页(即页0x40~0x4b)作为发送缓冲区,分为两个6页的缓存区(因一个最大数据包占6页),两个发送缓冲区交替使用,可提高发送效率;后52页(即页0x4c~0x7f)作为接收缓冲区。为了有效利用接收缓冲区,NIC将接收缓冲区RAM构成FIFO循环队列结构。
2.5 RTL8019AS的内部I/O寄存器
RTL8019AS有32个I/O地址,地址偏移量为00H~1FH。RTL8019AS的所有内部寄存器都是8位的,映像到4个页面:PAGE0、PAGE1、PAGE2、PAGE3,每个页面有16个可供读写的寄存器地址(00H~0fH),由RTL8019AS的CR(Command Register命令寄存器)中的PS1、PS0位决定要访问的页。微控制器通过读写数据端口(10H~17H)实现对缓冲区的访问,8个数据端口功能相同,只要使用其中一个即可。复位端口(18H~1FH)功能相同,用于RTL8019AS的热复位。
3. 接口电路设计
RTL8019AS与主机有3种接口模式,即跳线模式、PNP模式和RT模式。本开发平台采用跳线模式,JP管脚接高,此时,RTL8019AS的I/O口基地址、中断输出口、介质类型的设置均由跳线器设定。使用该模式不使用93c46,可简化网络接口的软、硬件设计。
网络模块连接原理如图2所示。RTL8019AS的工作电压为5V,MCC2107的工作电压为3.3V,由于5V TTL和3.3V的电平转换标准是一样的,因此两模块可以直接相连。以I/O方式访问RTL8019AS且IOS3~0悬空时,RTL8019AS对应的I/O地址空间为00300H~0031FH,此时仅需要将地址线A[4:0]与MMC2107的外地址总线相连,A[19:10]、A[6:5]接地,A[8:7]接高即可。
注:RTL8019AS的管脚悬空时为低电平。
因为数据传输采用16位数据总线,所以IOCS16管脚加10K电阻上拉,使之为有效电平信号。RTL8019AS的命令寄存器均为8位,且数据均从低8位数据线送出,因此MMC2107访问命令寄存器时使用数据总线DATA[23:16],访问数据寄存器时使用数据总线DATA[31:16]。根据EBI的传送情况,在设计中MMC2107的外地址总线ADDR[5:1]和RTL8019AS的地址线A[4:0]相连。
同时,根据RTL8019AS占用的外部存储器地址空间情况,各寄存器端口地址定义如下:
#define NE_BASE 0x81800001
#define NE_CR (*(INT8U*)(NE_BASE+0))
…
#define NE_DMA (*(INT16U*)(0x81800000+0x20))
4. 接口程序设计
网络模块通信过程主要分为模块复位、初始化、接收控制和发送控制四部分,下面分别予以讨论。
1. 复位
RTL8019AS的复位方式有冷、热两种。RESDRV为RTL8019AS的复位管脚,给该引脚施加一个1μs以上的高电平就可以实现冷复位。先读再写复位端口,可实现热复位。因为复位过程将执行一些操作,因此应等待100ms之后再对RTL8019AS操作,以确保复位完全。
2. 初始化过程
复位后初始化所需寄存器(初始化页0与页1的相关寄存器,页2的寄存器是只读的,不能设置,页3的寄存器不是NE2000兼容的,不用设置)。初始化主要完成:设置发送和接收条件;对网卡缓冲区RAM进行划分,建立接收和发送缓冲环;设置网卡地址寄存器,赋予本网卡一个物理地址。
3. 接收过程
微控制器完成对RTL8019AS的初始化后,NIC就处于接收状态,一旦收到帧数据,就自动执行本地DMA,将NIC FIFO中的数据送入接收缓冲环,然后向主机发送“接收到数据帧”中断请求。
接收数据帧也可采用查询方式。在查询方式下,主程序读取CURR和BNRY两个寄存器的值,当BNRY与CURR不等时,说明接收缓冲区接收到了新的帧,主程序读取数据后,以所读取帧的第二个字节(下一帧的页地址)更新BNRY,主程序循环跟踪判断CURR和BNRY的值是否相等,达到数据接收的目的。
在实时多任务的环境中,一般采用中断方式来处理RTL8019AS的数据接收、数据发送结束、出错事件等中断。文章采用中断方式,设置边沿端口模块(EPORT)的外中断引脚INT2#为下降沿检测的中断。
4. 发送过程
微控制器先执行远程DMA写操作,将RAM中的数据分组传至RTL8019AS发送缓冲区,再启动本地DMA,将数据发送到网上。主程序在发送一帧数据时,先要查TSR寄存器判断上一帧是否发送完毕,再发送本帧。
5. 结束语
本文提出了MMC2107微控制器与网络接口控制器RTL8019AS的互联方案,并给出了详细的软硬件设计以及软件设计流程。该设计实现了基于MMC2107微控制器的嵌入式系统与Internet的互联,增强了嵌入式系统的功能。现该产品已经投入实际应用,使用效果良好。该系统还可以广泛应用在工业控制领域,有很高的实用价值。
上一篇:基于CAN总线的智能接口卡的设计