STM32/STM8技术论坛
直播中

李涛

7年用户 182经验值
私信 关注
[问答]

STM32串口使用DMA方式进行接收,打印的数据和发送的数据不一致

STM32串口为不占cpu资源使用DMA方式进行接收,设定接收缓冲区,在while(1)中查询已接收到的数据并进行处理,可是使用串口调试工具发送数据到板子,板子再将数据通过窗口打印处理,打印的数据和发送的数据出现不一致情况,求大侠帮忙看看!谢谢大家

回帖(15)

李晓鹏

2019-3-7 07:09:25
***
举报

段宜敏

2019-3-7 07:23:58
串口数据接收处理时有没有进行校验!
举报

李杰

2019-3-7 07:34:44
看一下串口设置是否一样,波特率,数据位,校验位等是否一致,还有显示方式和发送方式是否一致
举报

李涛

2019-3-7 07:45:27
用仿真器直接观察缓冲区,这才是根。
发出来就多了道手续。
一步一步查,就是把几个过程分开,保证前面的结果正确,再查下一步。一步一步,就是这意思。
3 举报
  • jf_76731107: 兄弟,你找到问题所在了吗?
  • jf_76731107: 我也有这样的问题,前两位是对的,后面就全错了
  • jf_76731107: 原子的源代码也不行,我就很无语

李涛

2019-3-7 07:58:32
引用: redsworm 发表于 2019-3-7 09:11
串口数据接收处理时有没有进行校验!

通过j-link在线仿真调试,发现打印出来的数据和缓冲区的数据一致,可是这个数据和我发送的是有区别的,比如我发送
ff fe fe f0 e0
可是缓冲区的数据变成了
ff fe 20 f0 f0
这样的的数据,难道DMA搬运数据出问题?可是我的配置和网上的例程基本差不多的。如果DMA搬运数据出问题,可是第一个字节ff总是不会出错,这是为啥?
举报

李涛

2019-3-7 08:08:20
引用: kpj3026 发表于 2019-3-7 09:22
看一下串口设置是否一样,波特率,数据位,校验位等是否一致,还有显示方式和发送方式是否一致

这个检查过好几次,没有什么问题的
举报

李涛

2019-3-7 08:15:54
引用: redsworm 发表于 2019-3-7 09:11
串口数据接收处理时有没有进行校验!

有校验。有木有可能是硬件问题,因为断电一段时候在上电是发送正常,长时间运行一下,又可能出现这样的问题??
举报

张琪

2019-3-7 08:21:12
用DMA接收数据时要注意一帧数据接收完,或者一帧数据和设定的DMA缓冲区不一样长时候的处理方法。
举报

刘欣

2019-3-7 08:31:33
用DMA接收数据时要注意一帧数据接收完,或者一帧数据和设定的DMA缓冲区不一样长时候的处理方法。
举报

彭玉林

2019-3-7 08:40:08
引用: zoms0 发表于 2019-3-7 10:03
有校验。有木有可能是硬件问题,因为断电一段时候在上电是发送正常,长时间运行一下,又可能出现这样的问题??

这个不太可能是硬件问题........
举报

李涛

2019-3-7 08:52:43
引用: 60user198 发表于 2019-3-7 10:19
用DMA接收数据时要注意一帧数据接收完,或者一帧数据和设定的DMA缓冲区不一样长时候的处理方法。

波特率才设置为9600
举报

h1654155275.5795

2019-3-7 09:07:20
DMA搬移肯定不会出问题的,多少人都用过了。
只可能是程序或者硬件有问题。
举报

李涛

2019-3-7 09:14:13
引用: hsdfss 发表于 2019-3-7 10:54
DMA搬移肯定不会出问题的,多少人都用过了。
只可能是程序或者硬件有问题。

因为程序简单,就这点配置,没发现问题所在,换另一块板子试,不会出现这样的错误,但是说之前那块是硬件问题,我也觉得不太可能!!!
举报

李涛

2019-3-7 09:22:12
引用: nc***iantai01 发表于 2019-3-7 10:27
这个不太可能是硬件问题........

不是硬件问题,是程序问题,因为另一块板子也出现同一的情况了!!可是程序中,真心找不出问题出来!!急死了!
举报

吴祁隆

2021-5-13 10:02:33
我用DMA实现串口的发送,接收到的数据全是00 ,不知道哪里出了问题,可否把你的配置的代码可以发出来参考一下?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分