8.2.3 数据接收器
(1)数据位。
USART可以根据控制寄存器CR1的M位设置接收的数据位是8位或9位。在USART接收期间,数据的最低有效位首先从RX脚移进。将接收到的数据存放在接收数据寄存器RDR中。
(2)超始位侦测。
在USART中,如果辨认出一个特殊的采样序列,那么就认为侦测到一个起始位。该序列为1 1 1 0 X 0 X 0 X 0 0 0 0。
(3)接收断开帧、空闲帧。
当接收到一个断开帧时,USART像处理帧错误一样处理它。当一个空闲帧被检测到时,其处理步骤和接收到普通数据帧一样。但如果IDLEIE位被设置,将产生一个中断。(https://www.daowen.com)
(4)溢出错误、噪声错误、帧错误。
如果接收缓冲器非空(RXNE位还没有被复位),又接收到一个字符,则发生溢出错误。
为了区分有效的输入数据和噪声,异步接收器中采用了过采样技术。RX线上的输入电平会被以波特率的16倍进行采样。这样1个数据位中会有16个采样点。USART会用每个位中间的3次(第8、9、10次)采样值确定数据位的电平,并判断数据是否有效。
由于没有同步上或存在大量噪声,停止位没有在预期的时间上被接收识别出来,这种情况被称为帧错误。
(5)停止位。
被接收的停止位的个数可以通过控制寄存器CR2的控制位来配置。在正常模式下,可以是1个或2个;在智能卡模式下,可能是0.5个或1.5个。