目录
1)UART通道管脚设为UART功能
2)UBRDIVn寄存器:设置波特率
3)ULCONn寄存器:设置传输格式
5)UFCONn寄存器、UFSTATn寄存器
6)UMCONn寄存器、UMSTATn寄存器
1Uart原理
1.1简介
通用异步收发器是一种广泛应用的短距离串行传输接口。常用于短距离,低速,低成本的微机与下位机的通讯中,—基本的UART连接通信图如下:
UART只需两条信号线(RXD,TXD)和一条地线就可以完成全双工传输。由于UART是异步通讯,所以需要对数据进行同步,UART传输一个数据帧的内容如下:
UART发送部分的用途是将准备输出的并行数据,按照基本帧格式,转为TXD信号串行输出,这里串行话的时钟信号只要使用对应要求的波特率的本地时钟即可。UART接收部分RXD接收串行信号并将其转化为并行数据,但串并转化的时钟显然同发送器一样处理,收发设备的时钟误差是会累计的,会导致接收数据不正确,这就需要用一个远远高于波特率的本地时钟信号对输入RXD不断取样,以不断让接收器和发送器保持同步。
发送数据时,CPU将并行数据写入UART,UART按照一定格式在TxD线上串行发出;
接收数据时,UART检测到RxD线上的信号,将串行收集放到缓冲区中,CPU即可读取UART获得的这些数据。
UART最精简的连线只有3根电线,TxD用于发送,RxD用于接收,Gnd用于提供参考电平。TxD和RxD数据线以“位”为最小传输单位。帧由具有完整意义的若干位组成,它包含开始位、数据位、校验位和停止位;发送数据之前,UART之间要约定好数据传输速率(波特率的倒数)、数据的传输格式(多少个数据位、是否使用校验位、奇校验还是偶校验、多少个停止位)。
1.2数据传输流程
1)通常数据线处于空闲状态(1状态);
2)当要发送数据时,UART改变TxD数据线的状态(0状态)并维持1位的时间,接收方检测到开始位后,再等待1.5位的时间开始一位一位地检测数据线的状态得到所传输的数据;
3)UART一帧中可能有5-8位的数据,发送方一位一位地改变数据线的状态将它们发出去,首先发送最低位;
4)如果使用校验功能,UART发送完数据后,还要发送1个校验位。使用奇校验或者偶校验,即统计数据位连同校验位中,1的总数是奇数还是偶数;
5)最后,发送停止位,数据线恢复到空闲状态(1状态),停止位长度有3种,1位、1.5位、2位。
2、S3C2440的UART
2.1特性
S3C2440的UART有3个独立通道,每个通道可以工作于中断模式或DMA模式,UART由波特率发生器、发送器、接收器、控制逻辑组成。S3C2440 UART的FIFO深度为64,发送数据时,CPU先将数据写入发送FIFO中,然后UART会自动将FIFO中的数据复制到“发送移位器”中,发送移位器将数据一位一位发送到TxDn数据线上。接收数据时,“接收移位器”将RxDn数据线上的数据一位一位地接收进来,然后复制到接收FIFO中,CPU即可从中读取数据。
2.2寄存器设置
对于S3C2440,使用UART之前,需要设置波特率、传输格式(多少个数据位、是否使用校验位、奇校验或偶校验、多少个停止位、是否使用流量控制)、选择所涉及的管脚为UART功能、选择UART通道的工作模式为中断模式或DMA模式。设置好之后,往相关寄存器写入数据即可发送,读取相关寄存器即可接收到数据。通过查询状态寄存器或设置中断来获知数据是否发送完毕、是否接收到数据。
1)UART通道管脚设为UART功能
UART通道0中,GPH2、GPH3分别用于TxD0、RxD0,使用UART通道0时,先设置GPHCON寄存器将GPH2、GPH3引脚的功能设为TxD0、RxD0。
2)UBRDIVn寄存器:设置波特率
S3C2440 UART的时钟源有两种选择:PCLK、UEXTCLK、FCLK/n,其中n的值通过UCON0-UCON2联合设置
UBRDIVn = (int)(UART clock)/(buad rate 16)) – 1
3)ULCONn寄存器:设置传输格式
4)UCONn寄存器
它用于选择UART时钟源、设置UART中断方式
5)UFCONn寄存器、UFSTATn寄存器
UFCONn寄存器用于设置是否使用FIFO,设置各FIFO的触发阙值,即发送FIFO中有多少个数据时产生中断、接收FIFO中有多少个数据时产生中断。并可以通过设置UFCONn寄存器来复位各个FIFO。
读取UFSTATn寄存器可以知道各个FIFO是否已经满,其中有多少个数据。
6)UMCONn寄存器、UMSTATn寄存器
这两类寄存器用于流量控制,具体看数据手册
7)UTRSTATn寄存器
它用来表明数据是否已经发送完毕、是否已经接收到数据
8)UERSTATn寄存器
用来表示各种错误是否发生
9)UTXHn寄存器
CPU将数据写入这个寄存器,UART即会将它保存到缓冲区中,并自动发送出去
10)URXHn寄存器
当UART接收到数据时,CPU读取这个寄存器,即可获得数据。
3、UART编程实例
https://download.csdn.net/download/ce123/12305375