你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F765使用DMA的Circular模式将串口接收的数据移动到内存指定区域,部分情况下失效

[复制链接]
leekuip 提问时间:2022-2-7 18:06 / 未解决

如题,STM32F765使用DMA的Circular模式将串口接收的数据移动到内存指定区域,在UCOS多任务程序中可以正常接收数据,但是裸机的时候,比如写了一个for循环一直执行一段代码,DMA就不更新数据到内存中了,仿真的时候,打个断点,才会有数据更新到内存中。

正常不是应该CPU和DMA交替使用总线的吗?为什么会出现这样的情况

收藏 评论5 发布时间:2022-2-7 18:06

举报

5个回答
废鱼 回答时间:2022-2-8 08:31:30

应该是处理太快,还没有收到新数据。建议加延时。

butterflyspring 回答时间:2022-2-8 10:14:53
楼主估算一下串口接收一帧数据需要多长时间,而for循环执行多长时间。 如同楼上所说,串口的接收时间与F7的运算速度比,那是很慢的。 最简单验证延时足够长的时间再去检查内存收到的数据。 DMA相当于搬运工,硬件配置好后自动运行,与内核运行的其他代码没直接关系了。
leekuip 回答时间:2022-2-8 18:14:35

解决掉了,Cache的问题,把接收缓冲区Cache禁用就好了

xmshao 回答时间:2022-2-9 10:59:16
從你描述現象來看,有點詭異。不看代碼難以鎖定原因。不過,對於H7/F7系列,注意下因Cache導致的數據一致性問題
leekuip 回答时间:2022-6-21 09:57:17
xmshao 发表于 2022-2-9 10:59
從你描述現象來看,有點詭異。不看代碼難以鎖定原因。不過,對於H7/F7系列,注意下因Cache導致的數據一致性 ...

确实是数据一致性的问题
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版