一、UART
1、简述
通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是异步串行通信的总称,不表示具体的协议。RS232、RS422、RS485等都属于UART,只是它们的接口协议、电气特性、传输速率和机械结构不同而已。
2、协议
数据线:UART有两根数据线,TX为数据发送线,串行的由低位到高位发送数据;TR为数据接受线,串行的由低位到高位接收数据;
数据格式/内容:UART通信的一帧一般由 { 起始位+数据+奇偶校验位+停止位 } 数据组成。
1bit的起始位,TX空闲时为高电平,开始传输时TX置0一个时钟,表示数据开始传输;
6/7/8bits的数据,从低位到高位依次传输;
1bit的奇偶校验位(可以不要),可以是奇校验或者偶校验;
1bit/1.5bits/2bits的停止位,必须为高电平,表示一个字符数据的传输结束。
波特率:每秒传输的bit数。一般波特率有9600,19200,115200等几种。
数据传输过程:
- 起始位:先发出一个逻辑”0”信号,表示传输字符的开始。
- 数据位:可以是5~8位逻辑”0”或”1”。如ASCII码(7位),扩展BCD码(8位)。一般情况下都选择8位而不选择7,因为这样能尽可能避免数据的丢失或者混乱。小端传输(即从LSB_D0端开始发送数据,而且是串行发送)。
- 校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验)
- 停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。
- 空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。
3、注意
- 两个设备使用UART串口通讯时,必须提前约定好传输速率和一些数据位。(如9600 8N1,表示:波特率9600,8数据位,无奇偶校验,1停止位)
- 设置收发电路时,常将系统时钟频率设置为波特率对应频率的N倍,此时每bit数据通过N个clk传输,便于在传输中间时刻采样,避免数据变换边沿采样的影响。
- 优点:只使用两条信号线;不需要时钟信号;有校验位进行错误检测;