UART简介
UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用来与PC进行通信,包括与监控调试器和其它器件,如EEPROM通信。因为计算机内部采用并行数据,不能直接把数据发到Modem,必须经过UART整理才能进行异步传输,其过程为:CPU先把准备写入串行设备的数据放到UART的寄存器(临时内存块)中,再通过FIFO(First Input First Output,先入先出队列)传送到串行设备,若是没有FIFO,信息将变得杂乱无章,不可能传送到Modem。
UART首先将接收到的并行数据转换成串行数据来传输。消息帧从一个低位起始位开始,后面是5~8个数据位,一个可用的奇偶位和一个或几个高位停止位。接收器发现开始位时它就知道数据准备发送,并尝试与发送器时钟频率同步。如果选择了奇偶,UART就在数据位后面加上奇偶位。奇偶位可用来帮助错误校验。
在接收过程中,UART从消息帧中去掉起始位和结束位,对进来的字节进行奇偶校验,并将数据字节从并行转换成串行。UART也产生额外的信号来指示发送和接收的状态。例如,如果产生一个奇偶错误,UART就置位奇偶标志。
UART基本结构
⑴输出缓冲寄存器,它接收CPU从数据总线上送来的并行数据,并加以保存。
⑵ 输出移位寄存器,它接收从输出缓冲器送来的并行数据,以发送时钟的速率把数据逐位移出,即将并行数据转换为串行数据输出。
⑶ 输入移位寄存器,它以接收时钟的速率把出现在串行数据输入线上的数据逐位移入,当数据装满后,并行送往输入缓冲寄存器,即将串行数据转换成并行数据。
⑷ 输入缓冲寄存器,它从输入移位寄存器中接收并行数据,然后由CPU取走。
⑸控制寄存器,它接收CPU送来的控制字,由控制字的内容,决定通信时的传输方式以及数据格式等。例如采用异步方式还是同步方式,数据字符的位数,有无奇偶校验,是奇校验还是偶校验,停止位的位数等参数。⑹状态寄存器。状态寄存器中存放着接口的各种状态信息,例如输出缓冲区是否空,输入字符是否准备好等。在通信过程中,当符合某种状态时,接口中的状态检测逻辑将状态寄存器的相应位置“1”,以便让CPU查询。
uart接口的作用
UART是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。作为接口的一部分,UART有以下作用。
1、将由计算机内部传送过来的并行数据转换为输出的串行数据流
2、将计算机外部来的串行数据转换为字节,供计算机内部使用并行数据的器件使用。
3、在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。
4、在输出数据流中加入启停标记,并从接收数据流中删除启停标记。处理由键盘或鼠标发出的中断信号(键盘和鼠票也是串行设备)。
5、可以处理计算机与外部串行设备的同步管理问题。
6、计算机内部采用并行数据,不能直接把数据发到Modem,必须经过UART整理才能进行异步传输
RS232接口
RS232接口是PC机上串行接口标配,有DB9和DB25两种,通常为DB9其接口定义如下
RS-232将设备分为
- 数据终端设备(DTE,Data Terminal Equipment, For example, PC)
- 数据通信设备(DCE,Data CommunicaTIon Equipment)
DB9又有公头(针型)和母头(孔型)之分, PC上为公头
实际使用接口时,一般只要2,3,5,即收、发和地三根线,就能实现通信
UART
UART用一条传输线将数据一位位地顺序传送,以字符为传输单位
通信中两个字符间的时间间隔多少是不固定的, 然而在同一个字符中的两个相邻位间的时间间隔是固定的数据传送速率用波特率来表示, 指单位时间内载波参数变化的次数, 或每秒钟传送的二进制位数如每秒钟传送240个字符, 而每个字符包含10位(1个起始位, 1个停止位, 8个数据位), 这时的波特率为2400Bd
传输时序如下图
在UART中,信号线上共有两种状态, 分别用逻辑1(高电平)和逻辑0(低电平)来区分。在空闲时, 数据线应该保持在逻辑高电平状态
其中各位的意义如下。
起始位(Start Bit): 先发出一个逻辑0信号, 表示传输字符的开始
数据位(Data Bits): 可以是5~8位逻辑0或1. 如ASCII码(7位), 扩展BCD码(8位)小端传输
校验位(Parity Bit): 数据位加上这一位后, 使得1的位数应为偶数(偶校验)或奇数(奇校验)
停止位(Stop Bit): 它是一个字符数据的结束标志。 可以是1位、1.5位、2位的高电平
空闲位: 处于逻辑1状态, 表示当前线路上没有资料传送
连接
PC与嵌入式设备的连接需要一个电平转换器(MAX232/MAX3232),具体即嵌入式设备将UART口引出为RS-232 Connector(4口,TX、RX、GND、VCC)RS232 Connector通过杜邦线连接MAX232
MAX232则通过RS232接口/USB与PC的COM口/USB口相连
TIp: 若使用PC的USB接口做串口需要专门的驱动