打印
[技术问答]

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

[复制链接]
936|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jingjitidu|  楼主 | 2023-6-29 11:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在做一个串口的通信协议,配置好模块功能并测试,串口收发功能正常。但是在跟主机进行通讯时出现问题,萎了兼容设备,主机有波特率识别功能,会从发出不同波特率的握手序列,从机收到正确序列后进行应答。

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

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

使用特权

评论回复
沙发
watermellon| | 2023-6-30 23:18 | 只看该作者
接收不正确,更改不同的波特率,直到能接收正确为止

使用特权

评论回复
板凳
yangxiaor520| | 2023-7-1 11:17 | 只看该作者
波特率错误也能收到数据,只是数据不对而已。

使用特权

评论回复
地板
liu96jp| | 2023-9-13 11:34 | 只看该作者
自适应的话,奇偶校验之类的得一样才行吧

使用特权

评论回复
5
t1ngus4| | 2023-9-13 12:42 | 只看该作者
这么弄,变量好多啊,很容易出问题啊

使用特权

评论回复
6
cen9ce| | 2023-9-13 13:45 | 只看该作者
其实不如固定一下奇偶校验和停止位位数等等

使用特权

评论回复
7
b5z1giu| | 2023-9-13 15:06 | 只看该作者
串口自适应的话是一直发一个标准的固定的数据,对方收到之后才能确认数据

使用特权

评论回复
8
q1ngt12| | 2023-9-13 17:08 | 只看该作者
我觉得你还是别做自适应了,你这设备都自己的,统一一下不就好了么

使用特权

评论回复
9
w2nme1ai7| | 2023-9-13 19:18 | 只看该作者
如果校验位和停止位都不一样,那没得兼容哈

使用特权

评论回复
10
tax2r6c| | 2023-9-14 07:12 | 只看该作者
你兼容不就是波特率么,如果停止位都不一样,那咋弄啊

使用特权

评论回复
11
lamanius| | 2023-9-14 09:29 | 只看该作者
我的串口没有这种问题,都是除了波特率不一样,其他都一直才行

使用特权

评论回复
12
l1uyn9b| | 2023-9-14 12:04 | 只看该作者
奇偶校验之类的就固定呗

使用特权

评论回复
13
g0d5xs| | 2023-9-14 13:30 | 只看该作者
确实,你要是这么设计的话,兼容不了,也做不到自适应

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

8

帖子

0

粉丝