我已阅读您有关串行端口通信的问题。但是我们有一个串口通信的问题。
我看到的一个问题是:在高波特率下,我们在接收端丢失了一些数据。你能告诉我为什么会发生这种情况吗?请问我该如何解决?
我们有一个以 115200 波特率发送数据的设备,并且接收器已设置为相同的波特率,但有时某些字节的数据在传输时会丢失。
我已阅读您有关串行端口通信的问题。但是我们有一个串口通信的问题。
我看到的一个问题是:在高波特率下,我们在接收端丢失了一些数据。你能告诉我为什么会发生这种情况吗?请问我该如何解决?
我们有一个以 115200 波特率发送数据的设备,并且接收器已设置为相同的波特率,但有时某些字节的数据在传输时会丢失。
如果您只需要每秒传输大约 300 个字节,则 115,200 是一个相当高的波特率。您可以通过降低速率来获得更稳定的连接。如果您能够自己设置连接的两端,那当然值得一试。
另外,你的电缆有多长?你自己做的吗?有很多事情会导致数据丢失,而电缆通常在其中扮演重要角色。
最后,您可能希望假设数据最终会丢失并考虑到这一点。只有 300 字节,您可以发送比您需要的更多的数据,即您可以重新传输任何可能已损坏或丢失的数据而不会受到太大影响。显然,这取决于您是否控制协议或是否可以在设备上配置不同的速度。
可能是您溢出了接收器的接收缓冲区。没有更多的实现细节很难说。
您的发送器通常发送多少字节?
您的发射器/接收器设备是否支持流量控制?可能您将不得不使用它。
这将有效地使您的 Receiver 对您的 Transmitter 说“等一下,停止发送,让我先处理我有的东西。”
硬件流控制(通常)通过RTS(请求发送)和CTS(清除发送)引脚使用。
看看这篇文章,它解释了更多关于它的内容。