UART的可能性会导致数据丢失吗?

2019-07-14 17:30发布

在很多使用STM32,HAL的例子中,通过中断接收UART数据,代码如下所示:最初(开始接收):
  1. <font size="4">HAL_UART_Receive_IT(&huart1, Rx_data, 1); </font>
复制代码

中断接收完成后:
  1. <font size="4">//Interrupt callback routine
  2. void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)  
  3. {
  4.     ...
  5.     HAL_UART_Receive_IT(&huart, Rx_data, 1);            
  6. }</font>
复制代码我想知道,是否有可能在实际接收和再次启动中断的(接收完成)回调之后丢失字节。或者假设上面的中断处理程序太短,数据仍然在UART缓冲区中?


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
kingnet_520888
2019-07-15 09:04
UART的RTS / CTS与16字节Rx缓冲器之间的H / W流控制旨在防止溢出。但是,在流量控制延迟太长的情况下,包括奇偶校验以提高信号完整性很有用。

当通过软件重试或数据过滤要求低错误率或在嘈杂环境中测试最大数据速率时,启用奇偶校验非常有用。

检查也是有益的; 停止位错误,缓冲区溢出错误并使用模拟环境噪声进行测试。(ESD,RF脉冲,SMPS CM噪声等缺少接地等)

一周热门 更多>