USART:一种片上外设,用来实现串口通信,就是stm32内部的串口
USART简介
串并转换电路
串行通信和并行通信
串行:一根数据线,逐个比特位发送
为什么要串并转换
移位寄存器
USART的基本模型
通过查询SR(状态寄存器) 可知数据有没有发完,有没有接收到数据等
CR(配置寄存器)
BPR(波特率寄存器)
产生一个频率可调的脉冲信号
数据的发送
双缓冲和连续发送
TDR和移位寄存器分别对应两个缓冲
数据发送过程中的问题
1.数据发送过快导致数据覆盖
2.数据说明时候发送完成
SR(状态寄存器)
通过读取标志位获取USART的工作状态
每次向TDR中写值之前,先查询TXE标志位
TXE=1,则TDR寄存器为空,可以写
TC=1,则两个寄存器都为空,表明数据发完了
单个数据的发送
数据的连续发送
错为什么错:并不是双缓冲的连续发送
数据的接收
存在的问题:不知道什么时候读数据
有数据时,要赶紧读RDR里的数据
接收单个数据
接收多个数据
错误标志位
接收方:
数据接收方会采集码元,过采样的方式采集,以16倍的波特率采集,三次采的都是1则1,
过载错,没有及时的读数据,导致接收方的移位数据寄存器中的数据被后来的数据覆盖,则ORE为1
错误标志位只对数据的接收方有效
所以这些程序只写在数据接收方
为什么要先备份:
错误标志位指示的是当前在RDR寄存器里的数据的错误情况,第三步把数据读出来后,标志位会清空