串口通信协议

同步通信和异步通信

同步通信:需要时钟信号的约束,在时钟信号的驱动下两方进行数据交换,一般会选择在上升沿或者下降沿进行数据的采样,以及时钟极性和时钟相位【eg.SPI,IIC】。

异步通信:不需要时钟信号的同步,通过(起始位,数据帧,奇偶检验位....)的格式进行数据的传输,但是需要设定相应的波特率,来确定相同的传输频率

物理层:

电平转换芯片我用的是CH340、PL2303、CP2102、FT232

串口通信协议_第1张图片

设备A借助串口的发送和接受引脚连接到电平转换芯片TXD和RXD,然后接借助电平转换芯片将TTL电平转化为USB电平,然后连接到给电脑端。

串口通信协议_第2张图片

协议层

串口通信协议_第3张图片

 串口协议的一个数据包,由起始位,数据帧,奇偶检验位,停止位组成,

1)空闲位

UART协议规定,当总线处于空闲状态‘1’为高电平,表示当前电路在数据传输。

2)起始位和停止信号

因为空闲状态是高电平,所以起始位要是一个低电平,表示数据传输的开始。

1个停止位:停止位位数的默认值。
2个停止位:可用于常规USART模式、单线模式以及调制解调器模式。
0.5个停止位:在智能卡模式下接收数据时使用。
1.5个停止位:在智能卡模式下发送和接收数据时使用。

停止位越多,数据传输的越稳定,但是当前的数据传输的速度也就越慢。

3)有效数据

有效数据传输的长度为5-9位,先发送低位,再发送高位,低电平为0,高电平为1。

4)数据的检验

奇检验:数据帧加上检验位的1个数为奇数则检验成功,反之则检验失败。

偶检验:数据帧加上检验位的1个数位偶数则检验成功,反之则检验失败。

5)波特率

每秒传输的bit,eg:9600,1秒传输9600bit,相当于传输一个bit需要1/9600=104.2us。

USART框图理解【重点!!!】

串口通信协议_第4张图片

 CPU通过总线往DR寄存器写入数据,数据被并行的传入到TDR【发送数据寄存器】,然后并行的传入到移位寄存器,移位寄存器将数据串行一位一位的发送出去,接收数据也是一样的步骤,串行的发送的接收移位寄存器,然后并行的发送到接收数据寄存器【RDR】,然后并行的发送给CPU(CPU读取数据)

串口通信协议_第5张图片

 

代码详解:深度理解STM32的串口实验(寄存器)【保姆级教程】_夜路难行々的博客-CSDN博客_stm32串口寄存器

你可能感兴趣的:(stm32)