(stm32f4的DMA最快只能到20Mhz吗?)最近翻自己的垃圾堆找出两片DAC904,于是想用stm32驱动做个dds,用DMA将数据搬运到GPIO口进行控制。板子还没画先来测试下stm32最快能达到多少刷新率。用的是stm32f407zet6,TIM1 UP触发,DMA2_STREAM5的通道6,内存到外设,外设地址GPIOC-ODR,内存地址定义一个数组0x00,0x01,循环模式。首先测试stm32主频150Mhz,TIM1不分频,重装载30,开始测试,用示波器查看IO翻转率5Mhz(2.5Mhz方波),OK没问题。重装载改15再测试,10Mhz,也没问题。好了,接下来直接改成3,测试,20Mhz(10Mhz方波)?????exm?突然想起来手册上好像提到说到关于dma带宽说为了保证内核运行正常,总线仲裁会给内核保证一定的带宽,那么留给DMA的就只有20Mhz吗?更奇怪的是我把主频从150Mhz改成168Mhz之后这个翻转率依然不变还是20Mhz,这就有点不理解了,150Mhz主频的时候翻转20Mhz,168Mhz还是20Mhz难道留给DMA的是个固定值吗?有大神能给解答一下吗?(GPIO配置是没问题的,在主函数while循环里168Mhz主频可以输出接近84Mhz的波形)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
请问为什么说限制是在GPIO呢,直接CPU操作是可以到最大84M的方波的呢。
是的,直接用TIM1UP触发的dma 纯硬件,感觉是有限制的,用180M的429也只能到差不多25M的翻转率
试试一次dma多个数据,比如发送搞一个 0XFF,0X00,0XFF,0X00,0XFF,0X00,之类的数组
一周热门 更多>