OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4389|回复: 2

H7 串口DMA接收异常,数据移位

[复制链接]

13

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
394
金钱
394
注册时间
2021-3-6
在线时间
115 小时
发表于 2022-8-11 18:02:17 | 显示全部楼层 |阅读模式
现象:第一次接收数据正常,但是后面数据接收长度会多一位而且缓冲区中的数据是从buff+1地址开始的,这是什么情况呀?
DMA配置:串口接收DMA循环模式
DMA配置.png
串口DMA配置:
串口DMA配置.png
DMA重启:
DMA重启.png
串口接收中断:
串口接收.png
现象:第一次接收正常,数据长度:6
第一次接收.png
第二次接收异常,数据移位切长度多一位:
第二次接收.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

84

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1360
金钱
1360
注册时间
2021-2-25
在线时间
100 小时
发表于 2022-8-12 14:34:22 | 显示全部楼层
回复 支持 反对

使用道具 举报

13

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
394
金钱
394
注册时间
2021-3-6
在线时间
115 小时
 楼主| 发表于 2022-8-12 16:43:41 | 显示全部楼层
问题找到了,通过单步调试发现,接收完成后再重新使能DMA数据流时,NDTR寄存器会自动减一,猜测:在串口开启接收DMA后再去启动DMA,会让DMA“误判”导致数据多一位;解决办法,在串口中断服务函数中接受完数据后,关闭DMA的同时关闭串口接受DMA,然后再重新使能DMA后再是能串口DMA接收功能。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 09:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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