最近在搞STM32H753的东西, 然后让ST的FAE 帮我们写代码, 他们的硬度工程师告诉我他需要13uS 把512byte的数据从SRAM MDMA传到SDRAM,虽然说SRAM SDRAM共享一个32bit的FMC但是这个速度, 我真的一口血吐在了屏幕上
我能想到的原因可能是他没有用internal SRAM 做buffer, 直传的话需要不停的来回切BUS 和片选,但是我看他给我的示波器图像,传512 byte 数据的时候,SDRAM和SRAM的片选得切了几百次, DMA的buffer不应该这么小吧
还有一个原因就是可能SDRAM需要不停地刷新cell,会把bus抢过去
想问一下各位大佬有没有什么别的看法
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
dma每次只能读一个字-你16位sram就要256次,8位sram就要512次。
我没用过这个高级的片子,我只用过F1和F0的,用过了之后,使我对DMA的印象大大改观。DMA从来就没有保证过它的速度,他只是保证了内存(和外设)直接传输而不用经过CPU。但是对于数据直接拷贝来说,比memcpy都慢了不知道多少。
借用编程语言的术语来说,DMA就是提供了一个异步的解决方案,但是要用到同步的情形却用异步来解决,那就是跟自己过不去。
对,你说的没错,dma 最大的好处就是不需要cpu 干涉,实际上也是保证速度的一种方式嘛,而且我这个确实需要异步,cpu 还要干其他事情。问题是我不知道st的fae 为什么要这么写,sdram sram 来回切的cost 是相当的可怕的
st 的mdma 我看介绍是可以做mutiple beats 的,最高好像是128beats 但是我一开就挂
一周热门 更多>