完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我有一个带有 1Mx16 外部 SRAM 和 SDMMC 的 STM32f427。
我正在通过 DMA 将 SDMMC 以两个 512 字节的块读入 SRAM 到 1024 字节的缓冲区中。 SRAM 从 0x64000000 映射到 0x641fffff。地址和数据不复用 我现在发现,如果我将缓冲区的起始位置设置为 0x64033c98,则从 0x64034000 到 0x64034007 的 8 个字节永远不会更新。其他一切都是坚如磐石和正确的,包括一直到 0x64034097。 处理器的时钟频率为 144 MHz。 我设置了 FMC:
我没有逻辑分析仪来查看是否曾请求过该特定写入,但如果我用示波器探测随机地址和数据线,一切看起来都很好。 我目前的解决方法是将其 DMA 到内部 RAM,然后使用处理器将字复制到外部 RAM;这似乎可行,但内部 RAM 很紧,我不想浪费周期! |
|
相关推荐
1个回答
|
|
我想我已经找到它失败的原因了。我正在读取的缓冲区未在 16 字节边界上对齐 - 它仅在 8 字节边界上对齐。
我代码中的所有其他缓冲区都与 16 字节边界对齐,并且更改它可以恢复正确的行为。 我想我在文档的某个地方读到了这一点。我希望它出现在参考手册中。 在 DMA 10.3.11 的部分中提到,当使用突发传输时,数据必须与传输的大小对齐,并且突发 bust 不能跨越 1k 边界。我设置了 4 次传输的突发:
|
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2634 浏览 1 评论
3208 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1783 浏览 1 评论
3609 浏览 6 评论
5987 浏览 21 评论
939浏览 4评论
1315浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
582浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1302浏览 3评论
1357浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 12:34 , Processed in 1.260694 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号