winamp123 发表于 2020-7-30 19:32:02

如何提高STM32 GPIO 输出速度?

由于应用需要,用GPIO输出高低电平产生脉冲,通过软件控制GPIO输出翻转。用的是STM32F412, APB2最高达到100M,可实际GPIO输出最多只能达到10M 频率。 请问能继续提高GPIO输出速度吗? 能否达到20M?
谢谢回复。



laidaihua 发表于 2020-8-3 00:41:28

这个要求好奇葩,你真要这样,用逻辑门电路搭一个就完事儿了,还要STM32干嘛?

radio2radio 发表于 2020-7-30 22:23:03

你需要那么高的输出频率,是不能靠软件反转GPIO来做的,即便可以做到,MCU也忙到干不了多少其他事情了。合理的做法,就是用硬件把时钟分频到你需要的频率直接输出。

比如,某些脚位是可以输出时钟分频信号的,这个IC有没有,我不确定。
用定时器,是否可以做到那么高的频率,就要做一个出来,试一试。

乐天乐 发表于 2020-7-31 08:13:21

你想输出作为时钟用吗?又没有用到MCO脚是这样吗?

likang1202 发表于 2020-7-31 09:07:49

定时器PWM可以试一下

winamp123 发表于 2020-7-31 09:45:34

谢谢以上的回复。这个应用是一个GPIO 固定个数CLK输出,另外一个GPIO读取输入的。这样通过MCO,PWM还不合适,只能软件模拟。

toofree 发表于 2020-7-31 11:10:43

winamp123 发表于 2020-7-31 09:45
谢谢以上的回复。这个应用是一个GPIO 固定个数CLK输出,另外一个GPIO读取输入的。这样通过MCO,PWM还不合适 ...
可以考虑用DMA,DMA驱动IO是可以的。写过WS2812的程序,一串点60个灯。忘了用的是DMA驱动SPI,还是DMA驱动定时器了。
页: [1]
查看完整版本: 如何提高STM32 GPIO 输出速度?