完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
当我在寻找 H7 DMA 数据时,
的 我看到下面的文章说 DMA 在 H7 设备上不工作。 https://community.st.com/s/article/FAQ-DMA-is-not-working-on-STM32H7-devices 的 该文章中的解决方案 1 如下所示。 的 ---------------------------------------------- ---------------------------------------------- -------------------------- 解决方案示例1:所有内存简单放置到D1域 “必须全局禁用 D-Cache 才能使此解决方案起作用。” GCC(用于 STM32/Eclipse 的 Atollic TrueStudio/System Workbench) “用 RAM_D1 替换 DTCMRAM”用于链接描述文件(.ld 文件扩展名)中的部分放置。例如像这样: 的 。数据 : { ... /* 保持不变 */ } >RAM_D1 AT> 闪存 ---------------------------------------------- ---------------------------------------------- -------------------------- 的 但是,“STM32Cube_FW_H7_V1.9.0/NUCLEO-H743ZI/Examples/ADC/ADC_DMA_Transfer” 的 例子中DTC MRAM改为RAM_D1(STM32H743ZITx_FLASH.ld), 但是 Main.c 文件是:(第 58 行) 的 /* 启用 CPU 缓存 */ CPU_CACHE_Enable(); 的 解决方案应该是把DTC MRAM换成RAM_D1,全局禁用D-Cache,但是例子好像不是这样。 的 哪一个是正确的? |
|
相关推荐
1个回答
|
|
在为 STM32H7 设备使用 DMA 时,应注意内存分配。
大多数 ST 项目使用的默认内存是 DTCM,STM32H7 设备中的 DMA无法访问它。 因此,您应该将其更改为 DTCM 可访问的其他内容(例如 AXI SRAM 0x2400 0000)。请参阅系统架构 部分下的相应参考手册 。 在大多数情况下,这可以解决问题。然而,有时对于更高级的应用程序,D-Cache 会影响 DMA 传输的功能,因为产品 SRAM 的默认缓存策略是普通内存(可缓存)。缓存会将新数据保存在内部缓存中,不会将它们写入 SRAM 内存。然而,DMA 控制器从 SRAM 存储器而不是 D-Cache 加载数据。读取数据时可能会发生相同的行为,因为 DMA 将更新 SRAM 中的缓冲区,并且 SRAM 的内容不会立即对 CPU 可见,因为 CPU 会看到以前缓存的数据。这将导致数据一致性问题。 因此,如果更改内存分配没有解决问题,则必须禁用 D-Cache。但我认为在您的情况下,将内存分配更改为 AXI SRAM(例如)足以解决问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2642 浏览 1 评论
3208 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1783 浏览 1 评论
3611 浏览 6 评论
5989 浏览 21 评论
939浏览 4评论
1316浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
584浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1303浏览 3评论
1361浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 16:15 , Processed in 1.268102 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号