UART以及串口重定向–什么是重定向?为什么要重定向?
异步 :发送方和接收方有各自的时钟
UART协议:每一帧数据都包含起始位,数据位,和停止位。当数据线从高电平跳变到低电平时,作为起始位,当数据线从低电平跳变到高电平时,作为停止位。空闲桢:数据线一直处于高电平;断开桢:数据线一直处于低电平
- 起始位:
- 数据位:5、6、7、8、9位
- 校验位(非必要):和校验,奇校验,偶校验。校验位其实是数据位的最后一位,当数据的前N-1位接收完毕时,接收方就会自动计算前N-1位然后预测第N位应该接收的是高电平还是低电平,如果实际接收到的数据和期待接收的数据不一致,则数据传输出错。
- 停止位:
- 波特率:每秒传送的bit数。接收方和发送方设置的波特率必须一致,否则接收的数据将会出错
注意:UART协议要求每次只能发送一个数据(5、6、7、8、9位),发送完后要求立刻发出结束信号,因为UART是异步通信协议,即使设置相同的波特率,时钟频率也可能会有误差。如果数据连续发送,并且在接收方和发送方时钟不一致的情况下(比如发送方每10us发送一个bit,接收方每9us接收一个bit(检测数据线的电平状态)),在大量数据流的传输时,误差就会一直堆积,导致传输出错!!!
UART控制器 :一般情况下,MCU都具有UART控制器,我们使用串口通信也是通过配置UART控制器相关的寄存器设置通信协议的细节。当然也可以通过软件模拟窗口通信协议。
接收数据的三种方式:
- 轮询RDR寄存器
- 设置接收中断
- DMA传输
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f6uRfTf6-1668958989281)(C:\Users\WQL\AppData\Roaming\Typora\typora-user-i