OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6747|回复: 8

求教一个关于F4的DMA速度或者说带宽的问题。(stm32f4的DMA最快只能到20Mhz吗?)

[复制链接]

2

主题

25

帖子

0

精华

高级会员

Rank: 4

积分
568
金钱
568
注册时间
2013-9-25
在线时间
93 小时
发表于 2018-7-27 09:42:11 | 显示全部楼层 |阅读模式
2金钱
    (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的波形)

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-7-30 02:14:03 | 显示全部楼层
回复

使用道具 举报

2

主题

25

帖子

0

精华

高级会员

Rank: 4

积分
568
金钱
568
注册时间
2013-9-25
在线时间
93 小时
 楼主| 发表于 2018-7-30 10:10:45 | 显示全部楼层
正点原子 发表于 2018-7-30 02:14
限制在GPIO,不在DMA.

    请问为什么说限制是在GPIO呢,直接CPU操作是可以到最大84M的方波的呢。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-7-31 02:10:00 | 显示全部楼层
sabaka 发表于 2018-7-30 10:10
请问为什么说限制是在GPIO呢,直接CPU操作是可以到最大84M的方波的呢。

直接操作能达到84M的话,那用DMA也可以很快才对,我前面说错了。
你定时器触发,没用中断吧?纯硬件的?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

25

帖子

0

精华

高级会员

Rank: 4

积分
568
金钱
568
注册时间
2013-9-25
在线时间
93 小时
 楼主| 发表于 2018-7-31 18:22:51 | 显示全部楼层
正点原子 发表于 2018-7-31 02:10
直接操作能达到84M的话,那用DMA也可以很快才对,我前面说错了。
你定时器触发,没用中断吧?纯硬件的 ...

    是的,直接用TIM1UP触发的dma 纯硬件,感觉是有限制的,用180M的429也只能到差不多25M的翻转率
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-8-1 01:18:46 | 显示全部楼层
sabaka 发表于 2018-7-31 18:22
是的,直接用TIM1UP触发的dma 纯硬件,感觉是有限制的,用180M的429也只能到差不多25M的翻转率

试试一次dma多个数据,比如发送搞一个 0XFF,0X00,0XFF,0X00,0XFF,0X00,之类的数组
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

25

帖子

0

精华

高级会员

Rank: 4

积分
568
金钱
568
注册时间
2013-9-25
在线时间
93 小时
 楼主| 发表于 2018-8-1 18:24:48 | 显示全部楼层
正点原子 发表于 2018-8-1 01:18
试试一次dma多个数据,比如发送搞一个 0XFF,0X00,0XFF,0X00,0XFF,0X00,之类的数组

   这个一开始就试过了,两个和多个没区别的,倒是刚刚看到了篇文章“STM32的FSMC扩展SRAM的时序测量及配置”在其中作者对stm32f4的fsmc外挂sram测试的时候也测试了内置sram的速度,8位读的时候内置是接近27Mbyte ,16位是两倍32位是16位的两倍,也就是sram的读取频率最大也就27M左右(写好像快些能到32M),难道是内存读写速度只有这么快吗?这才是限制了dma到GPIO翻转速度的原因??
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-8-2 01:35:31 | 显示全部楼层
sabaka 发表于 2018-8-1 18:24
这个一开始就试过了,两个和多个没区别的,倒是刚刚看到了篇文章“STM32的FSMC扩展SRAM的时序测量及配 ...

F4的FSMC,WR时钟,大概可以到35Mhz左右
因此写SRAM,应该在35M*2左右的速度是可以达到的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

25

帖子

0

精华

高级会员

Rank: 4

积分
568
金钱
568
注册时间
2013-9-25
在线时间
93 小时
 楼主| 发表于 2018-8-2 15:59:44 | 显示全部楼层
正点原子 发表于 2018-8-2 01:35
F4的FSMC,WR时钟,大概可以到35Mhz左右
因此写SRAM,应该在35M*2左右的速度是可以达到的。

     理论值是这样,实际考虑器件的参数一般达不到。那位作者测试的内部sram读取速度也才27Mbyt,所以我认为这个才是限制了dma-gpio速度的原因吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-1 02:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表