同步通信和异步通信
同步通信:需要时钟信号的约束,在时钟信号的驱动下两方进行数据交换,一般会选择在上升沿或者下降沿进行数据的采样,以及时钟极性和时钟相位【eg.SPI,IIC】。
异步通信:不需要时钟信号的同步,通过(起始位,数据帧,奇偶检验位....)的格式进行数据的传输,但是需要设定相应的波特率,来确定相同的传输频率。
物理层:
电平转换芯片我用的是CH340、PL2303、CP2102、FT232
设备A借助串口的发送和接受引脚连接到电平转换芯片TXD和RXD,然后接借助电平转换芯片将TTL电平转化为USB电平,然后连接到给电脑端。
协议层
串口协议的一个数据包,由起始位,数据帧,奇偶检验位,停止位组成,
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框图理解【重点!!!】
CPU通过总线往DR寄存器写入数据,数据被并行的传入到TDR【发送数据寄存器】,然后并行的传入到移位寄存器,移位寄存器将数据串行一位一位的发送出去,接收数据也是一样的步骤,串行的发送的接收移位寄存器,然后并行的发送到接收数据寄存器【RDR】,然后并行的发送给CPU(CPU读取数据)
代码详解:深度理解STM32的串口实验(寄存器)【保姆级教程】_夜路难行々的博客-CSDN博客_stm32串口寄存器