1、串行口实验1ARM的串行口实验1一、实验目的掌握ARM的串行口工作原理。学习编程实现ARM的UART通讯。掌握CPU利用串口通讯的方法。2二、实验内容 学习串行通讯原理,了解串行通讯控制器,阅读ARM芯片文档,掌握ARM的UART相关寄存器的功能,熟悉ARM系统硬件的UART相关接口。编程实现ARM和计算机实现串行通讯:ARM监视串行口,将接收到的字符再发送给串口(计算机与开发板是通过超级终端通讯的),即按PC键盘通过超级终端发送数据,开发板将接收到的数据再返送给PC,在超级终端上显示。3三、预备知识1、用EWARM集成开发环境,编写和调试程序的基本过程。2、ARM应用程序的框架结构。3、了解
2、串行总线4四、实验设备及工具硬件:ARM嵌入式开发平台、PC机Pentium100以上、用于ARM920T的JTAG仿真器、串口线。软件:PC机操作系统Win2000或WinXP、EWARM集成开发环境、仿真器驱动程序、超级终端通讯程序。5五、实验原理及说明1异步串行IO异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。数据的各不同位可以分时使用同一传输通道,因此串行IO可以减少信号连线,最少用一对线即可进行。接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。为了恢复发送的信息,双方必须协调工作。在微型计算机中大量使用异步串行IO方式,双方使用各自的
3、时钟信号,而且允许时钟频率有一定误差,因此实现较容易。但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步),字符和字符间还可能有长度不定的空闲时间,因此效率较低。图3-1 串行通信字符格式图3-1给出异步串行通信中一个字符的传送格式。开始前,线路处于空闲状态,送出连续“1”。传送开始时首先发一个“”作为起始位,然后出现在通信线上的是字符的二进制编码数据。每个字符的数据位长可以约定为5位、6位、7位或8位,一般采用ASCII编码。后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇数个或偶数个。也可以约定不要奇偶校验,这样就取消奇偶校验位。最后是表示停止位的“1”
4、信号,这个停止位可以约定持续1位、1.5位或2位的时间宽度。至此一个字符传送完毕,线路又进入空闲,持续为“1”。经过一段随机的时间后,下一个字符开始传送才又发出起始位。每一个数据位的宽度等于传送波特率的倒数。微机异步串行通信中,常用的波特率为50,95,110,150,300,600,1200,2400,4800,9600等。接收方按约定的格式接收数据,并进行检查,可以查出以下三种错误:1)奇偶错:在约定奇偶检查的情况下,接收到的字符奇偶状态和约定不符。2)帧格式错:一个字符从起始位到停止位的总位数不对。3)溢出错:若先接收的字符尚未被微机读取,后面的字符又传送过来,则产生溢出错。每一种错误都
5、会给出相应的出错信息,提示用户处理。串行接口的物理层标准通用的串行IO接口有许多种,现仅就最常见的两种标准作简单介绍。1)EIA RS232C这是美国电子工业协会推荐的一种标准(Electronic industries Association Recoil-mended Standard)。它在一种25针接插件(DB25)上定义了串行通信的有关信号。这个标准后来被世界各国所接受并使用到计算机的IO接口中。信号连线在实际异步串行通信中,并不要求用全部的RS232C信号,许多PCXT兼容机仅用15针接插件(DB15)来引出其异步串行IO信号,而PC中更是大量采用9针接插件(DB9)来担当此任,因
6、此这里也不打算就RS232C的全部信号作详细解释。图3-2给出两台微机利用RS232C接口通信的联线(无MODEM),我们按DB25的引脚号标注各个信号。下面对图3-2中几个主要信号作简要说明。保护地 通信线两端所接设备的金属外壳通过此线相联。当通信电缆使用屏蔽线时,常利用其外皮金属屏蔽网来实现。由于各设备往往已通过电源线接通保护地,因此,通信线中不必重复接此地线(图中用虚线表示)。例如使用9针插头(DB9)的异步串行IO接口就没有引出保护地信号。TXDRXD 是一对数据线,TXD称发送数据输出,RXD称接收数据输入。当两台微机以全双工方式直接通信(无MODEM方式)时,双方的这两根线应交叉联
7、接(扭接)。信号地 所有的信号都要通过信号地线构成耦合回路。通信线有以上三条(TXD、RXD和信号地)就能工作了。其余信号主要用于双方设备通信过程中的联络(握手信号),而且有些信号仅用于和MODEM的联络。若采取微型机对微型机直接通信,且双方可直接对异步串行通信电路芯片编程,若设置成不要任何联络信号,则其它线都可不接。有时在通信线的同一端将相关信号短接以“自握手”方式满足联络要求。这就是如图3-2(a)所示的情况。图3-2 实用RS-232C连线RTSCTS 请求发送值号RTS是发送器输出的准备好信号。接收方准备好后送回清除发送信号CTS后,发送数据开始进行,在同一端将这两个信号短接就意味着只
8、要发送器准备好即可发送。DCD 载波检测(又称接收线路信号检测)。本意是MODEM检测到线路中的载波信号后,通知终端准备接收数据的信号,在没有接MODEM的情况下,也可以和RTS、CTS短接。相对于MODEM而言,微型机和终端机一样被称为数据终端DTE(Data Terminal Equipment)而MODEM被称为数据通信装置DCE(Data Communications Equipment),DTE和DCE之间的连接不能像图3-2中有“扭接”现象,而应该是按接插件芯号,同名端对应相接。此处介绍的RS232C的信号名称及信号流向都是对DTE而言的。DTRDSR 数据终端准备好时发DTR信号
9、,在收到数据通信装置装备好DSR信号后,方可通信。图3-2(a)中将这一对信号以“自握手”方式短接。R1 原意是在MODEM接收到电话交换机有效的拨号时,使RI有效,通知数据终端准备传送。在无MODEM时也可和DTR相接。图3-2(b)给出了无MODEM情况下,DTE对DTE异步串行通信线路的完整连接,它不仅适用于微型机和微型机之间的通信,还适用于微型机和异步串行外部设备(如终端机、绘图仪、数字化仪等)的连接。信号电平规定RS232C规定了双极性的信号逻辑电平:-3V到-25V之间的电平表示逻辑“1”。+3V到+25V之间的电平表示逻辑“0”。因此这是一套负逻辑定义。以上标准称为EIA电平。P
10、CXT系列使用的信号电平是-12V和+12V,符合EIA标准,但在计算机内部流动的信号都是TTL电平,因此这中间需要用电平转换电路。常用芯片MCl488或SN75150将TTL电平转换为EIA电平,MCl489或SN75154将EIA电平转换为TTL电平。PCXT系列以这种方式进行串行通信时,在波特率不高于9600的情况下,理论上通信线的长度限制纽为15米。2)20mA电流环20mA电流环并没有形成一套完整的标准,主要是将数字信号的表示方法不使用电子的高低,而改用20mA电流的有无:“1”信号在环路中产生20mA电流;“0”信号无电流产生。当然也需要有电路来实现TTL电平和20mA电流之间的转
11、换。图3-3是PCXT微机中使用的一种20mA电流环接口。当发送方SOUT1时,便有20mA电流灌入接收方的光耦合器,于是光耦合器导通,使SIN1。反之当发送方SOUT0时环路电流为零,接收方光耦合器截止,SIN0。显然,当要求双工方式通信时,双方都应各有收发电路,通信联线至少要4根。由于通信双方利用光耦合器实现电气上隔离,而且信号又是双端回路方式,故有很强的抗干扰性,可以传送远至1千米的距离。图3-3 20mA电流环接口“0”、“1”信号的表示方法不同外,其他方面(如字符的传输格式)常借用RS232C标准。因此PCXT微机中的异步串行信道接口往往将这两种标准做在一起,实际通过跨接线从二者中择
12、一使用。ARM自带三个UART端口,每个UART通道都有16字节的FIFO(先入先出寄存器)用于接受和发送。用系统时钟最大波特率可达230.4K,如果用外部时钟(UCLK)UART可以以更高的波特率运行。S3C2410X UART包括可编程波特率,红外发送/接收,插入一个或两个停止位,5字节,6字节,7字节,或8字节数据宽度和奇偶校验。其特点是:-基于DMA或者中断操作的RxD0,TxD0,RxD1,TxD1,RxD2,TxD2。-包括IrDA 1.0和16字节FIFO的UART通道0,1,2。-包括nRTS0,nCTS0,nRTS1和nCTS1的UART通道。-支持握手方式的接收/发送与UA
13、RT有关的寄存器主要有以下几个:(1) UART线控制寄存器包括ULCON0,ULCON1和ULCON2,主要用来选择每帧数据位数、停止位数,奇偶校验模式及是否使用红外模式,如表3-1,3-2所示。表3-1 UART寄存器设置Register Address R/W Description Reset Value ULCON0 0x50000000 R/W UART channel 0 line control register 0x00 ULCON1 0x50004000 R/W UART channel 1 line control register 0x00 ULCON2 0x50008
14、000 R/W UART channel 2 line control register 0x00 表3-2 UART寄存器位描述ULCONn Bit Description Initial State Reserved 7 0 Infra-Red Mode 6 Determine whether or not to use the Infra-Red mode. 0 = Normal mode operation 1 = Infra-Red Tx/Rx mode 0 Parity Mode 5:3 Specify the type of parity generation and check
15、ing during UART transmit and receive operation. 0xx = No parity 100 = Odd parity 101 = Even parity 110 = Parity forced/checked as 1 111 = Parity forced/checked as 0 000 Number of Stop Bit 2 Specify how many stop bits are to be used for end-of-frame signal. 0 = One stop bit per frame 1 = Two stop bit
16、 per frame0 Word Length 1:0 Indicate the number of data bits to be transmitted or received per frame. 00 = 5-bits 01 = 6-bits 10 = 7-bits 11 = 8-bits 00 (2) UART控制寄存器包括UCON0, UCON1 and UCON2,主要用来选择时钟,接收和发送中断类型(即电平还是脉冲触发类型),接收超时使能,接收错误状态中断使能,回环模式,发送接收模式等。如表3-3,3-4所示表3-3 UART控制寄存器设置Register Address R/
17、W Description Reset Value UCON0 0x50000004 R/W UART channel 0 control register 0x00 UCON1 0x50004004 R/W UART channel 1 control register 0x00 UCON2 0x50008004 R/W UART channel 2 control register 0x00 表3-4 UART控制寄存器位描述UCONn Bit Description Initial State Clock Selection 10 Select PCLK or UCLK for the
18、UART baud rate. 0=PCLK : UBRDIVn = (int)(PCLK / (bps x 16) ) -1 1=UCLK(GPH8) : UBRDIVn = (int)(UCLK / (bps x 16) ) -1 0 Tx Interrupt Type 9 Interrupt request type. 0 = Pulse (Interrupt is requested as soon as the Tx buffer becomes empty in Non-FIFO mode or reaches Tx FIFO Trigger Level in FIFO mode.
19、) 1 = Level (Interrupt is requested while Tx buffer is empty in Non-FIFO mode or reaches Tx FIFO Trigger Level in FIFO mode.) 0 Rx Interrupt Type 8 Interrupt request type. 0 = Pulse (Interrupt is requested the instant Rx buffer receives the data in Non-FIFO mode or reaches Rx FIFO Trigger Level in F
20、IFO mode.) 1 = Level (Interrupt is requested while Rx buffer is receiving data in Non-FIFO mode or reaches Rx FIFO Trigger Level in FIFO mode.) 0 Rx Time Out Enable 7 Enable/Disable Rx time out interrupt when UART FIFO is enabled. The interrupt is a receive interrupt. 0 = Disable 1 = Enable 0 Rx Err
21、or Status Interrupt Enable 6 Enable the UART to generate an interrupt upon an exception, such as a break, frame error, parity error, or overrun error during a receive operation. 0 = Do not generate receive error status interrupt. 1 = Generate receive error status interrupt. 0 Loopback Mode 5Setting
22、loopback bit to 1 causes the UART to enter the loopback mode. This mode is provided for test purposes only. 0 = Normal operation 1 = Loopback mode 0 Send Break Signal 4 Setting this bit causes the UART to send a break during 1 frame time. This bit is automatically cleared after sending the break sig
23、nal. 0 = Normal transmit 1 = Send break signal 0 Transmit Mode 3:2 Determine which function is currently able to write Tx data to the UART transmit buffer register. 00 = Disable 01 = Interrupt request or polling mode 10 = DMA0 request (Only for UART0),DMA3 request (Only for UART2) 11 = DMA1 request
24、(Only for UART1)00 Receive Mode 1:0 Determine which function is currently able to read data from UART receive buffer register. 00 = Disable 01 = Interrupt request or polling mode 10 = DMA0 request (Only for UART0),DMA3 request (Only for UART2) 11 = DMA1 request (Only for UART1) 00 (3)UART错误状态寄存器包括UE
25、RSTAT0, UERSTAT1 and UERSTAT2,此状态寄存器的相关位表明是否有帧错误或溢出错误发生。如表3-5,3-6所示表3-5 UART错误状态寄存器设置Register Address R/W Description Reset Value UERSTAT0 0x50000014 R UART channel 0 Rx error status register 0x0 UERSTAT1 0x50004014 R UART channel 1 Rx error status register 0x0 UERSTAT2 0x50008014 R UART channel 2 R
26、x error status register 0x0 表3-6 UART错误状态寄存器位描述UERSTATn Bit Description Initial State Reserved 3 0 = No frame error during receive 1 = Frame error (Interrupt is requested.) 0 Frame Error 2 Set to 1 automatically whenever a frame error occurs during receive operation. 0 = No frame error during receiv
27、e 1 = Frame error (Interrupt is requested.) 0 Reserved 1 0 = No frame error during receive 1 = Frame error (Interrupt is requested.) 0 Overrun Error 0 Set to 1 automatically whenever an overrun error occurs during receive operation. 0 = No overrun error during receive 1 = Overrun error (Interrupt is
28、 requested.) 0 注意:在读取UART错误状态寄存器时,这些位(UERSATn3:0)会自动清零。()在UART模块中有三个接收/发送状态寄存器,包括UTRSTAT0,UTRSTAT1和UTRSTAT2。如表3-7,3-8所示:表3-7 UART接收/发送寄存器设置RegisterAddressR/WDescriptionReset ValueUTRSTAT00x50000010RUART channel 0 Tx/Rx status register0x6UTRSTAT10x50004010RUART channel 1 Tx/Rx status register0x6UTRST
29、AT20x50008010RUART channel 2 Tx/Rx status register0x6表3-8 UART接收/发送寄存器位描述UTRSTATn Bit Description Initial State Transmitter empty 2 Set to 1 automatically when the transmit buffer register has no valid data to transmit and the transmit shift register is empty. 0 = Not empty 1 = Transmitter (transmit
30、 buffer & shifter register) empty 1 Transmit buffer empty 1 Set to 1 automatically when transmit buffer register is empty. 0 =The buffer register is not empty 1 = Empty (In Non-FIFO mode, Interrupt or DMA is requested. In FIFO mode, Interrupt or DMA is requested, when Tx FIFO Trigger Level is set to
31、 00 (Empty) If the UART uses the FIFO, users should check Tx FIFO Count bits and Tx FIFO Full bit in the UFSTAT register instead of this bit. 1 Receive buffer data ready 0 Set to 1 automatically whenever receive buffer register contains valid data, received over the RXDn port. 0 = Empty 1 = The buffer
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1