接收或发送的数据存储在两个 FIFO 中,但是接收 FIFO 的每个字符都有额外的四位用于指示状态。
发送数据:
当需要进行发送时,先将数据写入发送 FIFO。如果启用 UART,则会根据 UARTx.LCRH 寄存器中指示的参数开始发送数据帧。UART 模块会持续发送数据,直到发送 FIFO 中没有可发数据为止。数据一经写入发送 FIFO(即,如果 FIFO 不为空),UARTx.STAT 寄存器中的 BUSY 位即会生效,并在数据发送期间一直保持有效。仅
当发送 FIFO 为空,且最后一个字符(包括停止位)已发送到移位寄存器时,BUSY 位才为负。即使无法再启用 UART,UART 也可以指示它正忙。生成 BREAK 信号期间,也会设置 BUSY。
接收数据:
当接收器空闲(RX 信号持续为 1)且数据输入变为低电平(已接收到开始位)时,接收计数器开始运行,并根据 UARTx.CTL0 寄存器中 HSE 位的过采样设置,在不同的周期对数据进行采样。如果 RX 信号在基于过采样设置的特定数量的周期后仍为低电平,则开始位有效并被识别。检测到有效的开始位后,将根据数据字符的编程长度对连续的数据位进行采样。之后将捕获并校验奇偶校验位(如果使能了奇偶校验)。数据长度和奇偶校验都在 UART.LCRH 寄存器中定义。节 14.2.3.2 中介绍了过采样。
最后,如果 RXD 信号为高电平,则确认有效停止位,否则发生成帧错误。若成功接收到一帧数据,则数据和与之相关的错误标志都将保存到接收 FIFO 中。
|