UART(通用异步接收器/发送器)是异步全双工串行通信协议。
它由两条数据线Tx和Rx组成。
由于没有参考时钟信号,因此通信双方必须就串行端口波特率和数据位宽达成一致。
,奇偶校验位,停止位等配置参数,以便以相同的速率进行通信。
异步通信使用一个字符作为传输单元。
通信中两个字符之间的时间间隔不是固定的,但是同一字符中两个相邻位之间的时间间隔是固定的。
当波特率为9600bps时,传输一位的时间间隔约为104.16us。
当波特率为115200bps时,传输一位的时间间隔约为8us。
数据传输速率由波特率表示,波特率是每秒传输的二进制数。
例如,数据传输速率为每秒120个字符,每个字符为10位(1个起始位,7个数据位,1个校验位,1个结束位),则传输的波特率为10×120 = 1200字符/秒= 1200波特。
数据通信序列图:每个位的含义如下:起始位:首先发送逻辑“ 0”,然后发送逻辑“ 0”。
指示传输字符开始的信号;数据位:5〜8位逻辑“ 0”。
或“ 1”;例如ASCII码(7位),扩展BCD码(8位); Little-endian传输,即先发送LSB,然后再发送MSB。
奇偶校验位:在将该位添加到数据位之后,将“ 1”的数量添加到奇偶校验位。
位应为偶数(偶数奇偶校验)或奇数(奇数奇偶校验);停止位:它是字符数据的结束符号。
它可以是1位,1.5位,2位高电平(用于双方同步,停止位间隔越长,容错性越强);空闲位:在逻辑“ 1”中为“ 0”。
状态,表示当前线路上没有数据传输;注意:异步通信以字符形式传输。
接收到启动信号后,只要接收设备可以在一个字符的传输时间内与发送设备同步,就可以正确接收它。
下一个字符的起始位的到来重新校准了同步(依靠检测起始位来实现发送方和接收方的时钟的自同步)。
↑图1开始位和停止位↑图2数据位↑发送“ A”信号。
上图是通过Uart协议发送“ A”信号获得的波形图。
示波器的Uart字符和解码。
根据此图,我们将介绍uart的一些基本参数。
波特率:此参数很容易与比特率混淆,实际上它们是不同的。
但是我认为uart的波特率可以看作是比特率,即每秒传输的比特数(比特)。
通常,波特率有9600、19200、115200和其他选项。
实际上,这意味着每秒要传输这么多的位。
起始位:首先发送逻辑“ 0”。
信号,指示数据传输开始。
数据位:可以选择的四个值是5、6、7和8,因此可以传输许多值为0或1的位。
此参数最好为8,因为如果该值是另一个值,则在传输ASCII值时,在常规解析中会出现问题。
原因很简单。
ASCII字符值为8位。
如果帧的数据位为7,则还有另一个位的值不确定,这将导致错误。
奇偶校验位:在将该位添加到数据位之后,将“ 1”的数量添加到奇偶校验位。
位应为偶数(偶数奇偶校验)或奇数(奇数奇偶校验),以验证数据传输的正确性。
以发送“ A”消息为例。
(01000001)。
1.当它是奇校验时:在“ A”标志的8位中有两个1。
字符,则奇偶校验位为1,以满足1作为奇数的数量(奇校验)。
图1中的波形就是这种情况。
2.当它是偶校验时:在“ A”标志的8位中有两个1。
字符,则奇偶校验位为0,以满足1作为偶数的数量(偶校验)。
该位也可以删除,即不需要奇偶校验位。
停止位:它是数据帧的结束符号。
可以是1bit,1.5bit,2bit空闲级别。
您可能会觉得很奇怪,怎么会有1.5个人〜是的,的确如此。
因此,在生成此uart信号时,我使用了两个波形点来表示一点。
您无需深入了解这一点。
。
。
空闲位:没有数据传输时线路上的电平状态。
这是逻辑1。
传输方向:即是从高位(MSB)还是从低位(LSB)传输数据。
例如,如果传输“ A”被发送,则发送“ A”。
为MSB,则为01000001(如图2所示);如果为LSB,则为