[技术问答] UART在异常波特率下接收到错误数据

[复制链接]
 楼主| jingjitidu 发表于 2023-6-29 11:23 | 显示全部楼层 |阅读模式
最近在做一个串口的通信协议,配置好模块功能并测试,串口收发功能正常。但是在跟主机进行通讯时出现问题,萎了兼容设备,主机有波特率识别功能,会从发出不同波特率的握手序列,从机收到正确序列后进行应答。

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

想问问大家的串口是不是也有这种情况?是否只在正确速率下才能收到数据?而我这种情况又要如何解决?
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 | 显示全部楼层
确实,你要是这么设计的话,兼容不了,也做不到自适应
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

8

帖子

0

粉丝
快速回复 返回顶部 返回列表