jingjitidu 发表于 2023-6-29 11:23

UART在异常波特率下接收到错误数据

最近在做一个串口的通信协议,配置好模块功能并测试,串口收发功能正常。但是在跟主机进行通讯时出现问题,萎了兼容设备,主机有波特率识别功能,会从发出不同波特率的握手序列,从机收到正确序列后进行应答。

前期测试功能阶段肯定是使用的正确的速率,因此收发数据都正常。在连接主机的情况下,从正确速率下确实能收到正确的握手序列数据,但是在其他速率下也会收到数据,这些数据要么是数值错误的,要么是奇偶校验失败。其中奇偶校验失败的次数众多。而一旦发生奇偶校验失败,后面的协议就会终止当前的解析,抛弃所有数据等待新数据的到来。正因为如此,后面的应答序列也发布出去,一直走不到这一步。

想问问大家的串口是不是也有这种情况?是否只在正确速率下才能收到数据?而我这种情况又要如何解决?

watermellon 发表于 2023-6-30 23:18

接收不正确,更改不同的波特率,直到能接收正确为止

yangxiaor520 发表于 2023-7-1 11:17

波特率错误也能收到数据,只是数据不对而已。

liu96jp 发表于 2023-9-13 11:34

自适应的话,奇偶校验之类的得一样才行吧

t1ngus4 发表于 2023-9-13 12:42

这么弄,变量好多啊,很容易出问题啊

cen9ce 发表于 2023-9-13 13:45

其实不如固定一下奇偶校验和停止位位数等等

b5z1giu 发表于 2023-9-13 15:06

串口自适应的话是一直发一个标准的固定的数据,对方收到之后才能确认数据

q1ngt12 发表于 2023-9-13 17:08

我觉得你还是别做自适应了,你这设备都自己的,统一一下不就好了么

w2nme1ai7 发表于 2023-9-13 19:18

如果校验位和停止位都不一样,那没得兼容哈

tax2r6c 发表于 2023-9-14 07:12

你兼容不就是波特率么,如果停止位都不一样,那咋弄啊

lamanius 发表于 2023-9-14 09:29

我的串口没有这种问题,都是除了波特率不一样,其他都一直才行

l1uyn9b 发表于 2023-9-14 12:04

奇偶校验之类的就固定呗

g0d5xs 发表于 2023-9-14 13:30

确实,你要是这么设计的话,兼容不了,也做不到自适应
页: [1]
查看完整版本: UART在异常波特率下接收到错误数据