ARM-Linux s3c2440 之UART分析(一)

====本文系本站原创,欢迎转载! 转载请注明出处:http://blog.csdn.net/yyplc====

在分析ARM-Linux s3c2440中UART的时有必要先了解 s3c2440A中串口的硬件知识。也就是本文----

硬件篇:

S3c2440A串口提供三个独立的异步串行通信I/O端口(asynchronousserial I/O ports)。每一个串口均可以以普通中断方式或者DMA方式进行数据收发,采用系统时钟时,最大速率为115.2kbps.如果采用外部时钟(UEXTCLK),UART速度可以更快。每个串口包含有2个64-byte的FIFO缓存区用来发送或传输数据。

S3c2440A 串口具有可编程波特率,红外(IR)收发数据,1或者2 位的停止位(stop),5/6/7/8 位数据宽度和奇偶校验功能(parity checking)。

每个串口由波特率产生单元,发送单元,接收单元和控制单元组成。如下图所示,波特产生单元的时钟可以是PCLK,FCLK/n,或者UEXTCLK(外部输入的时钟)。发送和接收单元包含有一个64-byte的FIFOs(先入先出队列)和数据移位器。发送数据时,数据被写进FIFO然后拷贝到数据移位器后发送数据,最后数据被一位一位由数据发送脚(TxDn)送出。类似的,数据在接收时,数据一位一位的由数据接收脚(RxDn)接收,然后拷贝到FIFO缓存区。

 

 


寄存器:

串口的控制寄存器有三个:UCON0 ~ UCON1分别对应于每一个串口,用于设置UART的工作模式,波特率,中断类型等。

ARM-Linux s3c2440 之UART分析(一)_第1张图片

状态寄存器:UTRSTAT0 ~UTRSTAT2, 用于串口工作时,接收/发送的状态指示

ARM-Linux s3c2440 之UART分析(一)_第2张图片


FIFO控制寄存器: UFCON0 ~ UFCON2, 用于对FIFO的设置。

FIFO状态寄存器: UFSTAT0 ~ UFSTAT2, 用于表示FIFO缓存中的状态

ARM-Linux s3c2440 之UART分析(一)_第3张图片

对于Arm-linux s3c2440串口的使用,主要是对以上寄存器的操作。

下一篇将结合源码分析arm-linux s3c2440串口驱动的实现(软件篇)

你可能感兴趣的:(编程,c,工作)