S3C2440裸机实验(2)-----uart

时间:2022-09-02 15:34:47

     转载请注明出处:http://blog.csdn.net/charistain_huang      
     文章中有什么不正确的地方恳请请各位网友指点
********************************************************
*****作者:黄仁军                                                                     *******
*****联系email:957626485@qq.com                                      *******
********************************************************
       调试程序时,我们可以使用查看变量的方法,但是还是不能离开调试信息的打印。。。。。在开始其他实验时,首先把uart功能实验,方便调试。

      

1.UART 支持中断模式和DMA模式

2.如果是使用系统时钟,UART最高能支持115.2k/s的数据传输,如果是使用外部的时钟,速度将更高,每道uartFIFO模式和非FIFO模式,在FIFO模式中有两个64字节的FIFO分别用于接收和发送数据,在非FIFO模式中只有1字节的缓存区

3.下面是uart的结果图

 S3C2440裸机实验(2)-----uart

4..从上面的结构图可以看出,UART由:波特率发生器,发送缓存和接收缓存,控制单元四个部分组成,波特率发生器可以是系统时钟(PCLK,FCLK/N)或者外部时钟(UEXTCLK)发送器和接收器各包含一个64字节的FIFO和数据移位器。要发送数据时,先将数据写入到FIFO接着在发送前复制到发送移位器中,随后将数据从发送数据引脚(TXDn)移出;接收数据时,从接收数据引脚(RXDn)移入收到的数据,接着从移位器复制到FIFO

 

5.

在串行通讯处理中,常常看到硬件流控制(RTS/CTS)和软件流控制(XON/XOFF)这两个选项,这就是两个流控制的选项,目前流控制主要应用于调制解调器的数据通讯中

硬件流控制常用的有RTS/CTS流控制和DTR/DSR(数据终端就绪/数据设置就绪)流控制。
由于电缆线的限制,我们在普通的控制通讯中一般不用硬件流控制,而用软件流控制。一般通过XON/XOFF来实现软件流控制。常用方法是:当接收端的输入缓冲区内数据量超过设定的高位时,就向数据发送端发出XOFF字符(十进制的19Control-S,设备编程说明书应该有详细阐述),发送端收到XOFF字符后就立即停止发送数据;当接收端的输入缓冲区内数据量低于设定的低位时,就向数据发送端发出XON字符(十进制的17Control-Q),发送端收到XON字符后就立即开始发送数据。一般可以从设备配套源程序中找到发送的是什么字符。

应该注意,若传输的是二进制数据,标志字符也有可能在数据流中出现而引起误操作,这是软件流控制的缺陷,而硬件流控制不会有这个问题。

 2440中,只有当CTS信号有效才可以发送数据,CTS有效表明其他的UARTFIFO准备好接收数据,在接收数据之前,RTS应该是有效的,并且FIFO应该是大于32字节,否则为非有效状态

 

 

注意:2440UART 2不支持自动流控制(AFC

6.LoopBack操作模式:
S3C2410 CPU
UART提供了一种测试模式,也就是这里所说的LoopBack模式。在设计系统的具体应用时,为了判断通讯故障是由于外部的数据链路上的问题,还是CPU内驱动程序或CPU本身的问题,这就需要采用LoopBack模式来进行测试LoopBack模式中,资料发送端TXDUART内部就从逻辑上与接收端RXD连在一起,并可以来验证资料的收发是否正常

7.uart波特率计算公式:

 UBRDIVn  = (int)( UART clock / ( buad rate x 16) ) –1

 

For example, if the baud-rate is 115200 bps and UART clock is 40 MHz, UBRDIVn is:

UBRDIVn  = (int)(40000000 / (115200 x 16) ) -1

= (int)(21.7) -1    [round to the nearest whole number]

= 22 -1 = 21

 

 

8.核心代码: