请看下图,我们知道今天的主角是UART。 我们通常所说的串行端口,UART包含TTL级别和RS-232级别两种。 在嵌入式系统中,单片机串行端口一般为TTL级。
今天的内容对于UART的帧格式比较简单,玩单片机的朋友应该知道。
UART的英文全名是通用异步发送/接收发送器。
由于UART有两条电缆TX和RX,它们可以以全双工的形式发送和接收数据,同时两条链路的发射机和接收机可以同时发送和接收数据。
区分全双工的还有一个,半双工。 因为只有一根数据线,所以数据传输就是这样。
或者,在同一时间,只有一个链路正在传输数据,如下所示:
除了双重形式外,另一个是半工,只有从发射机到接收机的一个链路。
完成UART操作模式后,进入主题——UART帧格式。 单片机与PC之间的通信,也称为UART协议,为了保证数据通信的可靠性,双方都必须遵循UART协议。
URT数据帧格式
其中大家的意思如下。
3358www.Sina.com/:1:发送1位逻辑0 (低电平),开始数据传输。
3358 www.Sina.com/:也可以是5~8位数据,先发送低位,再发送高位。 常见的是8位(1字节),其他类似于7位ASCII码。
起始位:奇偶校验,数据位加上奇偶校验位,第一位数为偶数(偶数校验),第一位数为奇数(奇数校验)。
数据位:停止位是数据传输结束的标志,可以是1/1.5/2位的逻辑1 (高电平)。
校验位:空闲时数据线处于高电平状态,表示没有数据传输。
传输数据0x33(00110011 )后,对应的波形如下所示。 由于LSB领先,因此8位数据的顺序为11001100
0X33发送数据的帧格式
发送其他数据后,按顺序循环这个过程就可以了。
UART是异步传输,以1个字符为传输单位,传输2个字符之间的时间间隔。 例如,先传输0X33,再传输0X35。 这个时间间隔不清楚。
然而,确定了相同字符内的相邻比特之间的时间间隔,例如0X33的后两位1和1之间的时间间隔,这与UART传输速度的概念—— 停止位有关。
波特率的单位为bps,全名为bit per second,表示每秒传输的bit数。
波特率9600bps表示每秒传输的比特数为9600,表示传输1比特数据的时间为1/9600=104us,波特率115200bps,传输1比特数据的时间为8us
空闲位
首先,UART1以9600波特率发送0X33,首先在数据线上放置1个104us的脉冲宽度的低电平(开始位),接着2个104us的脉冲宽度的高电平(2位逻辑1 ),依次类推。
然后,UART2以9600波特率接收0X33,并通过计数这些数据的脉冲宽度来检查数据。
为了确保数据传输的准确性和减少误差,UART1和UART2的波特率一般相差小于10%,一次最多可传输1字节(8bit ),有效降低了累计误差。
今天文章的内容到此结束。 我希望对你有帮助。 下次再见吧。
如果你觉得我的文章好的话,请帮我三连。