- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
浅谈AT91RM9200在以太网接口模块应用
0 引 言
在Internet飞速发展的今天,网络已经渗透到生活的方方面面,与网络的结合已经成为嵌入式系统发展的必然趋势。目前,ARM微处理器已经在多个领域中得到应用,各种基于ARM微处理器的设备应用数量已经远远超过了通用计算机,基于ARM微处理器的开发应用正成为数字时代的技术潮流。ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。技术具有性能高、成本低和能耗省的特点。适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。
l AT91RM9200简介
AT91RM9200是基于ARM920T核的高性能、低功耗16/32位RISC(精简指令集计算机)微处理器。其内部集成丰富的外设资源,适用于要求外设资源丰富、功耗低、工作严格稳定的工业控制和野外仪器等方面。 从而为低功耗,低成本,高性能的计算机应用提供了一个单片解决方案。适用于要求外设资源丰富,功耗低,工作稳定的工业控制等方面。
AT91RM9200处理器主要具有如下特点:1)低功耗:VDDCORE电流为30.4mA,待机模式电流为3.1mA.2)双向、32位外部数据总线支持8位、16位、32位数据宽度读写,支持SDRAM、static Memory、Burst Flash、Compact FLASH和NAND Flash,满足采集站对于数据的采集和处理要求。3)提供一系列符合工业标准的外设接口,如:USART、SSC、SPI、USB及I2C等。4)具有20通道外围数据控制器(PDC或DMA),可以数据的传输更快,同时可以减轻CPU的负担,以便实时响应其它的处理。5)支持USB 2.0(12Mbps)主机端口,可以方便在野外采集时另接存储器,以便持续采集。 6)支持以太网10/100,可以很方便的实现采集之间的快速通信。
2 最小系统设计
硬件系统设计是嵌入式系统设计的基础,ARM系统硬件平台主要分为两部分:一部分为基于ARM处理器的最小系统;另一部分为外围扩展电路。系统只有在硬件最小系统调试稳定的基础上,才能灵活、轻松地扩展出其他外围应用,所以最小系统是保证微处理器可靠工作所必须的基本电路。基于AT91RM9200微处理器的最小系统由微处理器、电源电路、时钟电路、复位电路、JTAG接口、存储器模块、串行调试接口等电路组成。
2.1 电源电路设计
在系统中AT91RM9200需要1.8 V和3.3 V电源,另外,大部分外围器件需要3.3 V电源,小部分外围器件还需要5 V电源,假设输入电压为5 V直流稳压电源。为了得到可靠的3.3 V电压,此处选用的电压转换芯片是NCPlll7ST33T3,它的输入电压为5 V,输出电压为3.3 V,最大输出电流为0.8 A.同样,为了得到可靠的1.8 V电压,选用NCPlll7STl8T3,它的输入电压为5 V,输出电压为1.8 V,最大输出电流为0.8 A.由于3.3 V和1.8 V属于NCPlll7系列的2个固定输出电压,所以设计比较简单,只需要在电路中与芯片并联2个典型值为10 tLF、的滤波电容即可。
2.2 时钟电路设计
时钟电路为AT91RM9200和其他外设电路提供工作时钟。处理器内部带有锁相环电路,所以外接频率比较低的晶体振荡器,该设计用晶体振荡器Y1(20 MHz)作为系统的主时钟振荡器。处理器内部还带有实时时钟电路,还需要外接32.768 kHz的晶体振荡器。振荡器产生的主时钟和慢时钟经过微处理器内部2个锁相环后,产生系统所需的各种主时钟、外设时钟以及USB器件工作时钟。振荡器(英文:oscillator)是用来产生重复电子讯号(通常是正弦波或方波)的电子元件。其构成的电路叫振荡电路。能将直流电转换为具有一定频率交流电信号输出的电子电路或装置。种类很多,按振荡激励方式可分为自激振荡器、他激振荡器;按电路结构可分为阻容振荡器、电感电容振荡器、晶体振荡器、音叉振荡器等;按输出波形可分为正弦波、方波、锯齿波等振荡器。广泛用于电子工业、医疗、科学研究等方面。
2.3 复位电路设计
AT91RM9200有2个独立的复位信号,即系统复位信号NRST与调试复位信号NTRSI,都是低电平有效。系统上电后,AT91RM9200必须执行一个上电复位,在过渡状态下,它的强制复位信号为低,直到电源电压和振荡器工作频率稳定为止。此外,NRST和NTRST还可以手动复位,以方便用户调试程序。
2.4 存储器模块设计
存储器模块包括NOR FLASH存储器和SDRAM存储器。
NOR FLASH存储器用于存储系统运行所需的程序和重要数据,即使掉电,程序和数据也不会丢失。该设计中所用芯片是Atmel公司生产的AT49BNl614T,以保持与AT91RM9200的兼容性,其存储容量为2 MB,工作电压为3.3 V,采用56引脚TSOP封装,具有16位数据宽度。AT91RM9200需要以下引脚与之对应相连:A[1:21],D[0:15],NCSO/BFCS,NRST,BFRDY,BFWE,BFOE.
SDRAM存储器的作用是存放系统运行时的程序和数据,掉电后该部分程序和数据会丢失。SDRAM:Synchronous Dynamic Random Access Memory,同步动态随机存储器,同步是指 Memory工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据读写。SDRAM从发展到现在已经经历了四代,分别是:第一代SDR SDRAM,第二代DDR SDRAM,第三代DDR2 SDRAM,第四代DDR3 SDRAM.(显卡上的DDR已经发展到DDR5) 设计中使用两片数据宽度为16位的SDRAM并为一个具有32位数据宽度的SDRAM模块,以充分发挥微处理器32位数据宽度的高性能。AT91RM9200需要以下引脚与HY57V561620对应相连:D[0:31],A[2:11],A[13:14],NBS0,N:BSl,NBS2,NBS3,SDCKE,SDCK,SDCS,RAS,CAS,SDWE.这里特别注意:A12引脚不使用。
2.5 JTAG接口电路设计
JTAG是英文"Joint Test Action Group(联合测试行为组织)"的词头字母的简写,该组织成立于1985 年,是由几家主要的电子制造商发起制订的PCB 和IC 测试标准。JTAG 建议于1990 年被IEEE 批准为IEEE1149.1-1990 测试访问端口和边界扫描结构标准。该标准规定了进行边界扫描所需要的硬件和软件。自从1990 年批准后,IEEE 分别于1993 年和1995 年对该标准作了补充,形成了现在使用的IEEE1149.1a-1993 和IEEE1149.1b-1994.JTAG 主要应用于:电路的边界扫描测试和可编程芯片的在线系统编程JTAG也是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。 相关JTAG引脚的定义为:TCK为测试时钟输入;TDI为测试数据输入,数据通过TDI引脚输入JTAG接口;TDO为测试数据输出,数据通过TDO引脚从JTAG接口输出;TMS为测试模式选择,TMS用来设置JTAG接口处于某种特定的测试模式;TRST为测试复位,输入引脚,低电平有效。GND JTAG调试接口设计是否标准,直接影响到硬件平台是否能够连接ARM仿真器。所以在设计时,有以下几点需要注意:
(1)尽可能按照标准的20针接口设计。如果设计成14针接口,一定要严格按照14针接口对应于20针接口的对应关系来设计。
(2)nTRST和nRESET、引脚不用时,要用10 kΩ的电阻拉高,否则JTAG上这两个引脚的信号不确定,会造成ARM调试器不能正常连接目标系统。
(3)JTAG上输出的信号都要用10 kΩ的电阻拉高。
2.6 UART、串行接口电路设计
AT91RM9200的UASRT作为同步/异步串行接口,在调试状态下作为调试串口;在正常工作状态下为一般串行口使用,可以通过RS 232实现与其他设备的通信。该设计中的UART、接口芯片是MAX3232,其工作电压为3.3 V,16引脚SOIC封装。其最为简单且常用的是三线制接法,即地线,接收数据线和发送数据线三脚对应相连。
在完成以上几部分电路设计后,基于AT91RM9200的嵌入式系统就具有了安全可靠的工作条件,也为下面的扩展以太网接口设计打下了良好的基础。
3 以太网接口设计
在ARM系统中,以太网接口是与远程机进行通信及调试的基础,还可以进行内部局域网和互联网间的通信。而基于ARM的系统若没有以太网接口,其应用价值就会大打折扣。因此,就整个嵌入式系统而言,以太网接口电路是必不可少的,但同时也是相对复杂的。
从硬件的角度看,以太网接口电路主要由MAC控制器和物理层接口(PHY)两大部分构成。该设计中所用到的以太网接口芯片RTL8019AS,其内部结构包含这两部分。RTL8019AS是一款高集成度的以太网控制芯片,具有8/16位总线模式,集成了IEEE802.3协议标准的MAC层和PHY层的性能,与NE2000相兼容,支持以太网全双工通信方式;支持UTP,AUI和BNC自动检测,支持16位I/O基本地址选项和额外I/O地址输入/输出完全解码方式;支持存储器瞬时读写,收发可同时达到10 Mb/s的速率,内置16 KB的SRAM,可以方便地与微处理器进行连接。它支持多种嵌入式处理器芯片,内置有FIFO缓存器用于发送和接收数据。
3.1 以太网接口工作原理
使用RTL8019AS作为以太网的物理层接口,它的基本工作原理是:在收到由主机发来的数据包后,侦听网络线路。如果线路忙,它就等到线路空闲为止,否则,立即发送该数据帧。在发送过程中,首先为数据包添加帧头(包括前导字段和帧开始标志),然后生成CRC校验码,最后将此数据帧发送到以太网上。
在接收过程中,它将从以太网收到的数据包在经过解码、去帧头和地址校验等步骤后缓存在片内。在CRC校验通过后,它会根据初始化配置情况,通知RTL8019AS收到了数据包。最后,用某种传输模式(I/O模式、Memory模式、DMA模式)传到ARM系统的存储区中。
3.2 硬件电路设计
用RTL8019AS芯片设计的以太网控制器相关电路,可以通过RJ45连上以太网,在判断网卡芯片是否工作正常时,有两个依据,一是看状态指示LED是否有闪烁;二是用专用网络监听工具软件进行监听。在本设计中用两个LED指示灯表示接收和发送状态,当有网络连接且收发数据包时,LED闪烁。此外,网卡芯片单独不能工作,还必须有一个网络变压器在RJ45接口和网卡芯片中间进行电平转换,该设计中所用的电平转换器是20F001N.另外要特别注意,由于RTL8019AS的复位引脚是高电平有效,而AT91RM9200的NRST引脚是低电平有效,所以不能直接将两个引脚进行连接。该设计所用的解决方法是:在两引脚间加上一个共发射极的三极管,利用它的反相作用,来达到两个复位引脚间的电平匹配。同时,为了提高数据的传输速率,需要将网卡芯片设计成16位的数据通道,这就要求将RTL8019AS的IOCSl6B引脚用电阻上拉来达到设计目的。RTL8019AS与AT91RM9200进行连接还需要以下引脚:NOE,NEW,NCS2,D[O:15],一条中断线IRQ0以及地址线A[O:4](设计RTL8019AS的I/O基地址为300H,所以只需要SA[O:4]接A[O:4],而A[5:19]只需要接地即可)。至此,硬件电路已经设计完毕,整个电路的结构框图如图1所示。
4 软件设计
4.1 以太网口初始化
初始化第一步是复位以太网口。以太网口复位分为硬件复位和软件复位。硬件复位通过给RTL8019AS的RESET引脚发送一个复位脉冲;软件复位通过写端口达到复位,也就是给18~1F之间的任意一个寄存器写入任意一个数,就使得以太网口复位。第二步是设置一些寄存器的初始值,寄存器保存本机的物理地址,只有和寄存器保存的物理地址相同的以太网帧才被接收(RCR寄存器中PRO=O)。
以太网口第一次复位必须是硬件复位,硬件复位以后要经过大约10 ms的等待才能对以太网口操作,特别是发送和接收操作。
4.2 以太网口存储及初始化
RTL8019AS内部RAM地址范围从0x0000~0x7FFFF,其中0x4000~Ox7FFF用作接收和发送缓冲区。缓冲区是按页管理的,256 b为一页,这样接收发送缓冲页面是0x40~0x7F.发送缓冲区的起始页在TPSR寄存器中设置,接收缓冲区的起始页在PSTART寄存器中设置,PSTART实际上也表明了发送缓冲区的结束页。接收缓冲区的结束页是PSTOP.所以发送缓冲区的页从TPSR到PSTART-1,接收缓冲区的页从PSTART到PSTOP-1.一般设置如下:
使发送缓冲区可以容纳下两个最大以太网帧(最大为1 514 B),第一个帧放在SEND_START_PAGEO起始页,第二个帧放在SEND_START_PAGE1起始页,剩下的缓冲区都作为接收缓冲区。
RTL8019AS内部RAM是双口 RAM,因为它要支持两个独立的操作:一个是用户CPU读取RAM中的内容,对这个操作RTL8019AS提供一个读写口,也就是寄存器中的Remote DMA Port;另一个是RTL8019AS内部控制电路把从网络接收的数据写入RAM中,这时RAM称为Local DMA.RTL8019AS通过Local DMA写入RAM是不需要用户干涉的,它通过Remote DMA Port读写RAM.
读RAM见RTLReadRam函数,代码如下:
这个函数表示从address开始读取size个字节的内容到buff指向的内存中。设置CR寄存器指令为:writereg(cr,(0x00 | er_remote_read | cr_start_com-mand));然后从Remote DMA Port读取size次,就得到所需的数据。
写RAM函数,操作基本上和读RAM函数差不多,只要将最后一步的读size次改成写size次就可以。
4.3 发送数据包
发送数据包的基本步骤如下:
(1)首先将发送的起始页,一般是发送缓冲区内的页(Ox40~Ox4b),写入StartPage变量中。将要发送的数据写入地址为StartPage《8开始的缓冲区中,然后等待上一次发送结束。对于过大或者过小的数据包,不发送;对于过小的帧,在发送时要填充。
TPSR为发送起始寄存器,将StartPage写入TPSR寄存器,高字节写入TBCRH(TBCRl),低字节写入TBCRL(TBCRO)。当写发送命令时,RTL8019AS将从TPSR《8地址开始发送size个字节的数据。
(2)发送数据帧:发送缓冲区可以存储2个最大的以太网帧,一个起始页为SEND_START_PAGEO,另一个起始页SEND_START_PAGEl,两个交替使用。发送数据帧时,CR寄存器设置为:writereg(cr,((prepage&OxCO)|cr_abort_compile_dma|cr_txp |cr_start_command]));发送数据包函数代码如下:
4.4 接收数据包
接收数据包的步骤如下:
(1)接收缓冲操作。当RTL8019AS接收到一个数据包后,自动将接收的数据包放到CURR页。如果一页放不下,则CURR加1;如果CURR=接收结束页,则CURR自动变成接收开始页,继续写入接收的数据。
(2)用户读取接收数据包。RTL8019AS通过Local DMA把接收的数据写入接收缓冲区,并自动改变CURR和识别缓冲区的界限,这些都不需要用户干预。
当一个无错的数据接收完毕,则触发中断处理函数。然后读取数据包到分配的内存,可以从接收字节计数器中得知读取数据。这里要处理一种情况:如果接收的数据包存储不是连续的,在这种情况下要分2次才能读取1个完整的数据包,判断是否存储不连续的条件是:
bnry>Head[1]&&Head[1]!=RECEIVE_START_PAGE
其中:bnry是这个包的起始页;Head[1]是下一个包的起始页。
接收数据包函数与发送数据包函数相似,只需要修改相应寄存器配置即可。然后将接收的数据写入网络接口层的输入队列,如果写入失败则释放内存。写入后上层协议将提取这个数据包。最后网卡通过中断控制器向ARM响应中断,中断完毕清除中断标志。
5 结 语
ARM微处理器正以其极好的性价比和极低的功耗,与其他体系结构的微处理器进行激烈的竞争,其应用将进一步深入到各行各业。可以预测,在将来的一段时期内,ARM微处理器将成为32位微处理器市场的统治者。了解、学习、掌握和应用ARM微处理器技术很有必要,也非常重要。在ARM系统采用高性能的以太网控制器,系统通信和调试快速、可靠,具有很高的实时性。该设计构造一个基于以太网的嵌入式系统的应用,该接口模块的主要任务是完成与外界的信息交互,以达到网络监控的目的。在实际应用中,它运行稳定,能够十分方便地实现网络互连。
射频工程师养成培训教程套装,助您快速成为一名优秀射频工程师...