《嵌入式系统设计与应用》课程设计题目基于ARM9的串行通讯设计学生姓名王郸学号20131341003学院信息与控制学院专业测控技术与仪器同组成员赵玉斌、马子涵指导教师孙伟二O一六年六月五日基于ARM9的串行通讯设计赵玉斌王郸马子涵南京信息工程大学信息与控制学院,南京210044摘要:嵌入式是以应用为中心,以计算机技术为基础,软硬件可剪裁,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统,随着嵌入式系统的发展和大规模应用,为了提升系统的整体性能,必须实现PC机和嵌入式计算机之间的通信。本文通过基于FL2440的嵌入式串口通信的实现,较为详细地介绍了串口通信的硬件电路和软件实现方法。通过与计算机串口间的连接,实现在ARM平台上,传输率115200bps,接收来自串口(通过超级终端)的字符并将接收到的字符发送到超级终端,实现监测,与外部设备通信的基本功能。关键词:嵌入式系统、串口通信、ARM平台。DesignofserialcommunicationbasedonARM9YubinZhaoDanWangZihanMaSchoolofInformationandControl,NanjingUniversityofInformationScienceandTechnology,Nanjing210044Abstract:Embeddedisapplication-centric,basedoncomputertechnology,hardwareandsoftwarecanbetailoredtoadaptapplicationfunctionality,reliability,cost,size,powerconsumption,demandingspecialcomputersystem,withthedevelopmentofembeddedsystemsandapplications,inordertoimprovetheoverallperformanceofthesystem,youmustimplementthecommunicationbetweenPCandembeddedcomputers.ThroughembeddedimplementationofserialportcommunicationbasedonFL2440,describesindetailthehardwareandsoftwareimplementationofserialcommunication.Throughtheconnectionwiththecomputerserialport,achievedonARMplatforms,transmissionrate115200bps,receivedfromtheserialport(viaHyperTerminal)charactersandcharactersthatwillreceivethemessagetoSuperTerminalandthemonitoring,thebasicfunctionofcommunicatingwithexternaldevices.keywords:EmbeddedSystem,serialcommunication,ARMplatform.一、设计内容1.1设计任务编写串口程序,使开发板收到数据后再把数据发回。本课程设计可以使同学们通过电路设计、安装、调试、整理资料等环节,对ARM920T的嵌入式串口通信系统的实际应用有深入的了解,培养了学生的软硬件动手能力,是对学生所学专业知识、理论、技能和培养学生独立完成基本科研任务能力的一个综合检验,具有一定的效果和意义。1.2设计目的(1)注重培养综合运用所学知识、独立分析和解决实际问题的能力,培养创新意识和创新能力,并获得科学研究的基础训练。(2)了解所选择的ARM芯片各个引脚功能,工作方式,计数/定时,I/O口,中断等的相关原理,并巩固学习嵌入式的相关内容知识。(3)熟悉ADS集成开发环境的基本功能,熟悉FL2440寄存器配置方法,了解ARM920T的串行口工作原理。(4)编程实现ARM的UART通讯,通过软硬件设计实现开发板与PC机之间的串行收发数据。1.3设计要求实现查询方式串口的收发功能。接收来自串口(通过超级终端)的字符并将接收到的字符发送到超级终端。(1)初步掌握电子电路分析和设计的基本方法。(2)养一定自学能力和独立分析问题、解决问题能力。(3)掌握安装、布线、调试等基本技能,巩固常用仪器的正确使用方法。(4)通过严格的科学训练和工程设计实践,树立严肃认真、一丝不苟、实事求是的科学作风,并培养学生具有一定的生产观点、经济观点、全面观点及团结协作的精神。二、设计方案2.1系统组成FL2440嵌入式系统开发板上包含串口电路、电源、晶振、复位电路,再通过RS232串口线将PC机和开发板连接到一起,这几部分共同作用实现了嵌入式系统与计算机的串行通信。图1系统设计框图2.2系统工作原理2.2.1S3C2410X串行通信(UART)单元S3C2410XUART单元提供三个独立的异步串行通信接口,皆可工作于中断和DMA模式,使用系统时钟最高波特率达256Kbps,如果使用外部设备提供的时钟,可以达到更高的速率。每一个UART单元包含一个16字节的FIFO用于数据的接收和发送。系统中采用RS-232的电平转换芯片实现串口的通信。TTL/CMOS输入输出信号与ARM的UART输入/输出口对接[1]。UART的接收/发送模式在控制寄存器UCONn被设置成中断请求方式[2]。CMOS是指制造大规模集成电路芯片用的一种技术或用这种技术制造出来的芯片,是电脑主板上的一块可读写的RAM芯片。因为可读写的特性,所以在电脑主板上用来保存BIOS设置完电脑硬件参数后的数据,这个芯片仅仅是用来存放数据的。TTL逻辑门电路由晶体三极管和电阻构成,具有速度快的特点[3]。2.2.2波特率的产生波特率由一个专用的UART波特率分频寄存器(UBRDIVn)控制,计算公式如下:UBRDIVn=(int)(ULK/(bps×-16))或者UBRDIVn=(int)(PLK/(bps×16)-1)其中:时钟选用ULK还是PLK有UART控制寄存器UCONn[10]的状态决定。如果UCONn[10]=0用PLK作为波特率发生,否则选用ULK做波特率发生。UBRDIVn的值必须是1到(1621)之间。例如:ULK或者PLK等于40MHz,当波特率为115200时,UBRIVn=(int)(40000000/115200×16)-1=(int)(21.7)-1=202.2.3电气特性要完成基本的通信功能,实际上值需要RXD、TXD和GND即可,但由于RS-232-C标准所定义的高、低电平信号于S3C2440A系统的LVTTL电路定义的高、低电平信号完全不同,LVTTL的标准逻辑“1”对应2-3.3V,标准逻辑“0”对应0-0.4V,而RS-232C标准采用负逻辑方式,逻辑“1”对应-5――15V,标准逻辑“0”对应+5-+15V。显然两者间要进行通信,必须经过电平的转换,转换芯片采用max202[4]。2.2.4串口通信的原理串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数从CPU经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。串口是系统资源的一部分,应用程序要使用串口进行通信,必须在使用之前向操作系统提出申请要求(打开串口),通信完成后必须释放资源(关闭串口)。2.2.5数据发送与接收据发送帧的格式是可编程的,它包含一个开始位,5到8个数据位,一个可选的奇偶位和一个或两个停止位,这些可以通过线性控制器(UCONn)来设置。发送器也能够产生发送中止条件。中止条件迫使串口输出保持在逻辑0状态,这种状态保持一个传输帧的时间长度。通常在一帧传输数据完整地传输完之后,在通过这个全0的状态将中止信号发送给对方。中止信号发送之后,传送数据连续放到FIFO中(在不使用FIFO模式下,将被放到输出保持寄存器)。数据发送一样,数据接收的帧也是可以编程的,它包含一个开始位,5到8个数据,一个可选的奇偶位和一位到两位停止位,他们是通过线性控制器(ULCONn)来设置的。接收器能够检测溢出错误,奇偶检验错误,帧错误和中止状况,每种情况下都将会产生一个错误标志置位。三、硬件设计3.1设计思路采用FL2440开发板,核心板6层,底板2层,可稳定运行在400MHz。接口丰富,功能强大,适用与各种设备。开发板有一个3通道UART,可以基于DMA模式或中断模式工作。支持5位、6位、7位或者8位串行数据发送/接收。支持外部时钟作为UART的运行时钟(UEXTCLK)。波特率可编程,支持IrDA1.0,具有测试用的回还模式。每个通道都具有内部64字节的发送FIFO和64字节的接收FIFO。通过一根RS232串口线将FL2440开发板和PC机连接在一起,实现数据的收发。在嵌入式多串口服务器中,硬件的核心任务是:实现多串口的以太网转换网关,它能连接多个RS232串口设备,并将串口数据进行选择和处理,把RS232接口的数据流转换成以太网数据流,这样就可以进行网络化的数据处理,实现串行数据的网络化,从而在原有的网路基础上简化布线复杂度[5]。3.2系统电路设计如图所示,RS232接口通过连接DTR、RTS、CTS、RI来控制收发状态,而TXD为发送数据线,RXD为接收数据线,分别控制着数据的发送与接收。只要给该电路上以5V的电源,保证接地端正常接地,电路就可以正常运行。图2系统电路图四、软件设计4.1设计思路首先设置定时器寄存器、端口寄存器,然后等待ARM发送请求,当收到请求时,发送一个应答信号,并进行校验和清零,然后发送数据并求校验和,当数据发送完成时,发送校验和,检验ARM是否接受正确,如果接受正确,则返回。图3系统程序流程图4.2程序清单(1)程序初始化AREA|DATA|,CODE,READONLYENTRYldrr13,=0x1000IMPORTTSmainbTSmainEND(2)主程序#defineULCON0(*(volatileunsigned*)0X50000000)//UART线控制寄存器#defineUCON0(*(volatileunsigned*)0X50000004)//UART控制寄存器#defineUFCON0(*(volatileunsigned*)0X50000008)//FIFO控制寄存器#defineUTRSTAT0(*(volatileunsigned*)0X50000010)//UART状态寄存器#defineUBRDIV0(*(volatileunsigned*)0X50000028)//波特率#defineUTXH0(*(volatileunsigned*)0X50000020)#defineURXH0(*(volatileunsigned*)0X50000024)#defineGPBDAT(*(volatileunsigned*)0X58000054)intTSmain(){charbuf;ULCON0&=0XFFFFFF00;ULCON0|=0X03;//1位起始位,8位数据位UCON0=0X0805;//串口时钟PCLK,查询方式UBRDIV0=0X1A;//波特率115200while(1){if(UTRSTAT0&0X01)//接收是否完毕=1结束{buf=URXH0;//读取数据while(!(UTRSTAT0&0X04));//是否允许发送=1允许UTXH0=buf;}}return0;}五、实验调试及结果5.1实验调试(1)通读开发板使用手册;(2)硬件连接,将电源线、USB线、串口线分别接好;(3)安装好USB驱动、并口驱动、JLINK驱动;(4)配置超级终端;图4超级终端的配置(5)使用ADS1.2集成开发环境将事先编写好的程序烧