实验3UART串口实验

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验3.1串口通信应用实验1、实验目的�掌握ARM中串行口通信原理�学习编程实现S3C2410A的UART通信2、实验内容�实现查寻方式串口的收发功能,接收来自串口的字符,并将接收到的字符发送到超级终端。3、实验设备�GEC2410开发板�ADS1.2集成开发环境,ARM仿真器�串口连接线4、实验原理串行通信接口标准经过使用和发展,目前已经有几种。但都是在RS-232标准的基础上经过改进而形成的。所以,以RS-232C为主来讨论。RS-323C标准是美国EIA(电子工业联合会)与BELL等公司一起开发的1969年公布的通信协议。它适合于数据传输速率在0~20000b/s范围内的通信。这个标准对串行通信接口的有关问题,如信号线功能、电器特性都作了明确规定。由于通行设备厂商都生产与RS-232C制式兼容的通信设备,因此,它作为一种标准,目前已在微机通信接口中广泛采用。在讨论RS-232C接口标准的内容之前,先说明两点:首先,RS-232-C标准最初是远程通信连接数据终端设备DTE(DataTerminalEquipment)与数据通信设备DCE(DataCommunicationEquipment)而制定的。因此这个标准的制定,并未考虑计算机系统的应用要求。但目前它又广泛地被借来用于计算机(更准确的说,是计算机接口)与终端或外设之间的近端连接标准。显然,这个标准的有些规定及和计算机系统是不一致的,甚至是相矛盾的。有了对这种背景的了解,我们对RS-232C标准与计算机不兼容的地方就不难理解了。其次,RS-232C标准中所提到的发送和接收,都是站在DTE立场上,而不是站在DCE的立场来定义的。由于在计算机系统中,往往是CPU和I/O设备之间传送信息,两者都是DTE,因此双方都能发送和接收。串行通信的传输格式串行通信时微计算机之间一种常见的近距离通信手段,因使用方便,编程简单而广泛使用,几乎所有的微控制器,PC都提供串行通信接口。(1)开始前,线路处于空闲状态,送出连续“1”。传送开始时首先发一个“0”作为起始位。(2)然后出现在通信线上的是字符的二进制编码数据。每个字符的数据位长可以约定为:5位、6位、7位或8位,一般采用ASCII编码。(3)奇偶校验位,根据约定,用奇偶校验位将所传的字符中为“1”的位数凑成奇数个或偶数个。也可以约定不要奇偶校验,这样就取消奇偶校验位。(4)最后是表示停止位的“1”信号,这个停止位可以约定连续1位、1.5位或2位的时间宽度。(5)至此一个字符传送完毕,线路又进入空闲,持续为“1”。经过一段随机的时间后,下一个字符开始传送。最简单的串口通信当通信距离较近时,只需使用少数几根信号线就可实现数据通信。最简单的情况只需三根线(发送线、接收线、信号地线)便可实现全双工异步串行通信。无Modem时,最大通信距离按如下方式计算:RS-232C标准规定,当误码率小于4%时,要求导线的电容值应小于2500PF。对于普通导线,其电容值约为170PF/M。则允许距离L=2500PF/(170PF/M)=15M。这一距离的计算,是偏于保守的,实际应用中,当使用9600bps,普通双绞屏蔽线时,距离可达30~35米。零Modem的最简单连线(3线制)下图是零MODEM方式的最简单连接(即三线连接),图中的2号线与3号线交叉连接是因为在直连方式时,把通信双方都当作数据终端设备看待,双方都可发也可收。在这种方式下,通信双方的任何一方,只要请求发送RTS有效和数据终端准备好DTR有效就能开始发送和接收。(1)RTS与CTS互联:只要请求发送,立即得到允许(2)DTR与DSR互联:只要本端准备好,认为本端立即可以接收(DSR、数传机准备好)5、S3C2410A的UART介绍S3C2410A的UART(通用异步串行接口)单元提供了三个独立的异步串行I/O端口,每个都可以在中断和DMA两种模式下进行,他们支持的最高波特率是115.2Kbps。每个UART通道包含2个16字节的FIFO分别提供接收和发送。S3C2410A的UART可以进行以下参数的设置:可编程的波特率,红外收/发模式,1或2个停止位,5位、6位、7位或8位数据宽度和奇偶校验。每个UART包含波特率发生器、接收器,发送器和控制单元。波特率发生器以MCLK为时钟源。发送器和接收器包含16字节FIFO寄存器和数据移位寄存器,当发送数据的时候,数据先写道FIFO,然后拷贝到发送移位寄存器,然后从数据输出端口(TxDn)依次被移位输出。被接收的数据也同样从接收端口(RxDn)移位输入到移位寄存器,然后拷贝到FIFO中。数据发送操作数据发送帧的格式是可编程的,它包含一个开始位,5到8个数据位,一个可选的奇偶位和一个或两个停止位,这些可以通过线性控制器(UCONn)来设置。发送器也能够产生发送中止条件。中止条件迫使串口输出保持在逻辑0状态,这种状态保持一个传输帧的时间长度。通常在一帧传输数据完整地传输完之后,在通过这个全0的状态将中止信号发送给对方。中止信号发送之后,传送数据连续放到FIFO中(在不使用FIFO模式下,将被放到输出保持寄存器)。数据接收操作与数据发送一样,数据接收的帧也是可以编程的,它包含一个开始位,5到8个数据,一个可选的奇偶位和一位到两位停止位,他们是通过线性控制器(ULCONn)来设置的。接收器能够检测溢出错误,奇偶检验错误,帧错误和中止状况,每种情况下都将会产生一个错误标志置位。波特率发生器每个UART的波特率发生器为传输提供了串行移位时钟。波特率产生器的时钟源可以从S3C2410A的内部系统时钟或UCLK中来选择。波特率由时钟源(PCLK或UCLK)16分频和UART波特率除数寄存器(UBRDIn)指定的16位除数决定。UBRDIn的值可以按照下式确定:UBRDIn=(int)(PCLK/(bps*16))-1除数的范围为1到(16**2-1)。例如,如果波特率为115200bps且PCLK或UCLK为50MHz,则UBRDIn为:UBRDIn=(int)(50000000/(115200×16))-1=(int)(27.1)-1=266、UART应用编程示例在本实验中,采用串口0.串口初始化rUFCON0=0xf7;//设置串口的FIFO属性,并清除FIFO中的内容rUMCON0=0x0;//关闭控制流功能rULCON0=0x3;//设置8位数据,1位停止位,无奇偶校验位串口模式rUCON0=0x345;//设置收发的中断模式位电平触发关闭超时功能rUBRDIV0=(int)(PCLK/(bps*16))-1;//设置波特率,pclk为ARM时钟频率,baud为传//输波特率接收数据while(rUTRSTAT0&0x1)//检查状态寄存器,是否有数据到来,启动接收过程data=rURXH0;//将数据写到数据端口发送数据while(rUTRSTAT0&0x2);//等待发送缓存区为空rURXH0=data;//发送数据发送数据主函数voidmyUart_Send(char*str){myUart_Init(0,115200);while(*str)myUart_SendByte(*str++);}接收数据主函数voidmyUart_receive(char*string){char*string2=string;charc;myUart_Init(0,115200);while((c=myUart_ReceiveByte())!='\r'){if(c=='\b'){if((int)string2(int)string){printf(\b\b);string--;}}else{*string++=c;myUart_SendByte(c);}}*string='\0';myUart_SendByte('\n');}7、实验步骤1.将串口线一端接到PC机,另一端接到GEC2410的UART0接口(即P1口);打开串口超级终端dnw.exe,设置串口BaudRate为115200,选择COM1。2.打开ADSCodeWarrior,在ADSCodeWarrior中打开实验工程GEC_RS232.mcp;并对工程进行编译。3.打开dnw.exe超级终端,选择“SerialPort”中的“connect”4.重启GEC2410,开发板会执行flash中的BIOS程序,输入“1”,选择“UARTdownloadfile”。5.点击“SerialPort”“Transmit”选择GEC_RS232目录下的可执行映象文件GEC_RS232.bin,将该文件下载到SDRAM。6.下载结束后,会提示是否要立即运行,这时输入“Y”,执行GEC_RS232.bin。7.在dnw中输入字符串,并观察串口打印字符串。代码及执行结果截图:8.修改程序,实现菜单控制操作:------------------menu-------------------1:allturnout2:allturnoff3:tickersPleaseenteryourchoice:代码及执行结果截图:9、实验结果程序运行时,首先向串口打印字符串,然后等待用户输入,并把用户输入的字符显示在超级终端上。

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功