您的位置 首页 制造

stm32 DMA功能材料

为了快速传送一个数据块,使用DMA传送程序(MemtoMem16bits)测量了一下传送的时间,128个16b数据大约用了12us(72Mhz时钟)。

为了快速传送一个数据块,运用 DMA 传送程序(Mem to Mem 16bits) 测量了一下传送的时刻,128个16b数据大约用了12us (72Mhz 时钟)。 换句话来说,STM32 DMA 功能为10M/s

又运用memcpy 来比对一下,用时约4us ,明显memcpy 要快许多。

btw, 在ST的手册里边未见对DMA功能的表述。

———————————-

DMA传送数据的速度不会比CPU直接传送数据快,由于总

线频率没有变。

当CPU也在运转履行指令时,DMA传送数据的速度会比CPU直接传送数据慢,这是由于DMA与CPU分时运用同一条总线的原因。

———————————-

有一个专门讲DMA功能的手册的,你能够在官网上找到的
里边对DMA的功能描绘得很清楚
AN2548 Using the STM32F101xx and STM32F103xx DMA controller

—————————————-

这个说法有点问题
DMA数据传送是memory->memory
memcpy是memory -> cpu_internal_register -> memory

memcpy快应该是由于1. memcpy采用了ldm/stm指令,这个对进步速度很有协助 2. 总线裁定偏袒cpu core

—————————————

恩………… DMA控制器并不在memory之内?我想你的意思是指MASTER DMA吧,像PCI那样。但即使是legacy dma,由dma controller经过硬件的方法存取memory在一般状况下也应该比cpu快,由于不需要取指/解码/履行这样的流程。不过stm32的 controller不支撑bust mode的确对其速度有很大影响,而ldm/stm指令实践上起到了bust mode的效果,能够在一次取指/解码/履行进程中操作多个数据。假如controller支撑burst,信任就能够逾越memcpy的速度了。现在来看stm32 dma的速度的确不如memcpy,其最大的优点在于cpu能够不参与其进程。

———————————–

十分赞同byeyear 的解说,趁便问一句,其他品牌的M3的DMA是否也不支撑 burst 形式?

————————————

DMA并不一定快,仅仅进步了有用代码的运转功率。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/zhizao/258963.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部