打印
[STM32F4]

stm32接收数据的时候出现少接收1位

[复制链接]
1205|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
T-arm|  楼主 | 2016-9-21 12:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在做一个项目,使用stm32F407,在使用串口DMA接收数据的时候出现少接受一位的情况每次串口接收一帧数据,一帧数据有6个字节,正常情况下
第一次接收的数据为 :  0 1 2 3 4 5
第二次接收的数据为: 6 7 8 9 A B
但是有时候会出现
第一次接收的数据为 :  0 1 2 3 4 X     //X表示没有接收到数据,程序等待一段时间后等待超时就跳出,
第二次接收的数据为: 5 6 7 8 9 A   //第二次接收数据会把本来上一次应该接到到的5接收到了,但是会把本应该接收到的B字节挤到下一轮接受数据中


本来每次接收完,无论对错我都会把stm32内部的标志位清除掉,应该不会在下一轮的数据接收时还能接收到上一次的数据,导致数据每次接收都出现有一位数据要到下一轮数据接收的时候才能收到
不知道论坛里各位有没有遇到相同问题的哥们

沙发
yichunshan| | 2016-9-21 13:20 | 只看该作者
首先排除发送端问题。
像你这个情况,好像出在等待超时跳出之后。
正常你数据6个字节为一帧,不知道你接收6个字节之后执行什么操作?要不要清接收缓存?超时等待后要不要清?

使用特权

评论回复
板凳
T-arm|  楼主 | 2016-9-21 14:49 | 只看该作者
yichunshan 发表于 2016-9-21 13:20
首先排除发送端问题。
像你这个情况,好像出在等待超时跳出之后。
正常你数据6个字节为一帧,不知道你接收6 ...

发送段确实可能出现在规定的时间内不能发送完全部的字符,但是stm32这边接受完数据我已经从新把串口上所有的标志位清零了

使用特权

评论回复
地板
mmuuss586| | 2016-9-21 16:42 | 只看该作者
T-arm 发表于 2016-9-21 14:49
发送段确实可能出现在规定的时间内不能发送完全部的字符,但是stm32这边接受完数据我已经从新把串口上所 ...

这样的话,肯定会出现数据偶尔出错啊;

从通讯协议上改进,出现这种情况的时候,通知主机重发;

使用特权

评论回复
5
gaoyang9992006| | 2016-9-21 18:42 | 只看该作者
要计算一下你的波特率设置的是否靠谱,这个要看你选用的时钟系统是怎么个情况。

使用特权

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

本版积分规则

5

主题

15

帖子

0

粉丝