为了快速传送一个数据块,运用 DMA 传送程序(Mem to Mem 16bits) 测量了一下传送的时刻,128个16b数据大约用了12us (72Mhz 时钟)。 换句话来说,STM32 DMA 功能为10M/s
——————————
DMA传送数据的速度不会比CPU直接传送数据快,由于总
线频率没有变。
当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之内?
——————————
十分赞同byeyear 的解说,趁便问一句,其他品牌的M3的DMA是否也不支撑 burst 形式?
——————————
DMA并不一定快,仅仅进步了有用代码的运转功率。