STM8 UART 接收器

来自丢石头百科


STM8 UART 接受器 UART可以接收8位或9位的数据字。如果M位置1,字长为9位,其中MSB存放在寄存器UART_CR1的R8位。 字符接收 在UART接收期间,数据的最低有效位首先从RX脚移进。在此模式里,UART_DR寄存器有一个缓冲器(TDR),位于内部总线和接收移位寄存器之间。 配置步骤: 1.编程UART_CR1的M位来定义字长。 2.在UART_CR3中编程停止位的位数。 3.按下列顺序编写波特率寄存器选择要求的波特率。 a) UART_BRR2 b) UART_BRR1 4.将UART_CR2的REN置1。这将激活接收器,使它开始寻找起始位。

当一字符被接收到时* RXNE位被置位。它表明移位寄存的内容被转移到RDR。

  • 如RIEN位被设置,则产生中断。
  • * 在接收期间如果检测到帧错误,噪音或溢出错误,错误标志将被置起。

  • 由软件读UART_DR寄存器完成对RXNE位清除。RXNE标志也可以通过对它写0来清除。 RXNE位必须在下一字符接收结束前被清零,以避免溢出错误。 注意:在接收数据时,RE位不应该被复位。如果RE位在接收时被清零,当前接收的字节会丢失。
  • 断开符号 当STM8接收到一个断开帧时,UART像处理帧错误一样处理它。 空闲符号 当一空闲帧被检测到时,其处理步骤和接收到普通数据帧一样,但如果ILIEN位被置1将产生一个中断。 过载错误 如果RXNE还没有被复位,又接收到一个字符,则发生溢出错误。数据只有当RXNE位被清零后才能从移位寄存器转移到RDR寄存器。 当溢出错误产生时:

  • OR位被置位。
  • * RDR内容将不会丢失。读UART_DR寄存器仍能得到先前的数据。

  • 移位寄存器中以前的内容将被覆盖。随后接收到的数据都将丢失。
  • 如果RIEN位被置1,则产生中断。
  • 顺序执行对UART_SR和UART_DR寄存器的读操作,可复位OR位
  • 噪音错误 使用过采样技术(同步模式除外),通过区别有效输入数据和噪音来进行数据恢复。 STM8 P278 1.jpg (图103:STM8检测噪声的数据采样图) 注意:采样频率是波特率的16倍。 STM8 P278 2.jpg (表47:STM8检测噪声的数据采样表) 当在接收帧中检测到噪音时:* NF在RXNE位的上升沿被置1。

  • 无效数据从移位寄存器移送到UART_DR寄存器。 NF这个位和RXNE位同时置1,后者会引发中断。顺序执行对UART_SR和UART_DR寄存器的读操作,可复位NF位。
  • 帧错误 当以下情况发生时检测到帧错误: 由有大有在的时和于没同步上或量噪音的原因,停止位没预期间上接收识别出来。 误当帧错被检测到时:* 1位被硬件置FE* 无效数据从移位寄存器传送到UART_DR寄存器。

  • 在单字节通信时,没有中断产生。然而,这个位和RXNE位同时置1,后者将引发中断 。 顺序执行对UART_SR和UART_DR寄存器的读操作,可复位FE位。
  • 间止位接收期的可配置的停 被接收的停止位的个数可以通过控制寄存器3的控制位来配置。在正常模式时,可以是1或2个,IrDA模式里是1个,在智能卡模式里是1.5个。* 1个停止位:对1个停止位的采样在第8,第9和第10采样点上进行。

  • 1.5个停止位(仅智能卡模式):对1.5个停止位的采样是在第16,第17和第18采样点进行的。 能卡会在采样时拉低数据线,以此表示出现了帧错误。FE在1.5个停接收到NACK信号的智 位结束时和RXNE一起被置1。
  • * 2个停止位:对2个停止位的采样是在第一停止位的第8,第9和第10个采样点完成的。如果第一个停止位期间检测到一个帧错误,帧错误标志将被置1。第二个停止位不再检查帧错误。在第一个停止位结束时RXNE标志将被置1。