在剖析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的作业形式,波特率,中止类型等。
状况寄存器:UTRSTAT0 ~UTRSTAT2, 用于串口作业时,接纳/发送的状况指示
FIFO操控寄存器: UFCON0 ~ UFCON2, 用于对FIFO的设置。
FIFO状况寄存器: UFSTAT0 ~ UFSTAT2, 用于一共FIFO缓存中的状况
关于Arm-linux s3c2440串口的运用,主要是对以上寄存器的操作。
下一篇将结合源码剖析arm-linux s3c2440串口驱动的完成(软件篇)