UART接收数据时bit计数的一个问题

数据帧格式

起始位:1bit,数据位:8bit,无校验,停止位:1bit

注意点

接收数据bit计数时应计到1+8(bit) 时停止,而非计到1+8+1(bit)时停止;
实际工作是计到10bit时停止数据接收出错,而计到9bit时接收数据正常。

计数到10bit时结果

UART接收数据时bit计数的一个问题

计数到9bit时结果

UART接收数据时bit计数的一个问题

结果分析

根据仿真图可以看出,计数到9bit时有效数据已经接收完毕,而计数到10bit则显得有些多余;
而在仿真时可以看出两种情况接收到的数据相同,但是在实际工作过程中,计数到10bit时数据接收错误;

实际与仿真结果不一的原因(猜测)

当数据连续发送时,1bit停止位结束后,立即拉低为传输下一帧数据,而程序要在1bit停止位结束时同时开始下一帧技术,此时间间隔很小;
仿真时各个信号是理想的信号没有延迟,所以不影响接收下一帧数据;
实际工作过程中,在停止位结束时同时开始下一帧计数,可能由于电路延迟原因导致无法在此短时间间隔完成,所以会影响接收下一帧数据,从而导致出错。