久芯网

STM32H743ZIT6使用GPIO输出翻转电平如何达到4Mhz?

avatar 懒得起名1 提问时间: 2023-06-29 21:31:51 / 已解决

由于设计原因,所在引脚无法复用定时器PWM功能,只能用定时器在定时中断手动翻转引脚电平,但需要输出4MHz以上的时钟信号给其他芯片使用。听说GPIO能翻转50MHz,但实际1Mhz都不到。这需要如何做呢?

STM32H743ZIT6使用GPIO输出翻转电平如何达到4Mhz? [相关图片]STM32H743ZIT6使用GPIO输出翻转电平如何达到4Mhz? [相关图片]STM32H743ZIT6使用GPIO输出翻转电平如何达到4Mhz? [相关图片]


如需获得 STM32H743ZIT6 等器件的更多信息,请点击链接或 点击此处 联系在线客服!

4个回答
  • avatar xmshao
    最佳答案
    回答时间: 2023-06-29 21:53:38

    首先,GPIO的输出能力和实际输出不要混淆。比方马达支持的转速是8000转/分钟, 显然要实现该转速须有合适的驱动。 若凭一双手拨弄,再怎么使劲估计 每分钟有三五百转就了不得了,但并不能因此否认该马达的输出能力。 你关注的是GPIO的实际翻转输出。这个就得看你的实现方式了。 最佳方式自然是使用TIMER硬件PWM输出。 你现在是使用TIMER中断实现GPIO翻转,很多情形下,翻转频率主要由TIMER溢出频率决定。 具体到你这里,现在希望通过中断里实现GPIO翻转周期为4MHz. 这就意味着定时器的溢出周期 为8MHz。 对于定时器而言,实现这个溢出频率自然不在话下。 但是,你是在定时器中断里做GPIO翻转,进、出中断要时间、执行中断代码要时间。 此时翻转GPIO就不要基于函数调用了,尽量基于寄存器层面进行操作。 如果处理得不好,真有可能连1Mhz都输出不了。 我这边利用STM32H743芯片简单测试了下,主频400MHz,TIMER计数时钟200MHz,基于定时器中断 做GPIO翻转,做到6~7MHz的翻转输出问题不大。这个结果其实并不跟定时器本身定时长度直接相关了。 说实在的,这个东西,体验下无妨。系统里这么高频的中断没啥实用价值。

  • avatar 知足-
    回答时间: 2023-06-29 22:11:23

    定时器中断周期设置了多少?

  • avatar 懒得起名1
    回答时间: 2023-06-29 22:42:20
    知足- 发表于 2023-6-7 16:30
    定时器中断周期设置了多少?

    https://shequ.stmicroelectronics.cn/thread-640434-1-1.html 定时器周期是240/10=24M。计数值6。中断频率4MHz

  • avatar butterflyspring
    回答时间: 2023-06-29 23:00:06

    1.要实现4M的翻转频率,中断频率应该在8M才行。 2.如果以8M的频率中断,那么进出和处理中断时间要小于125ns,这对程序不现实,况且这么高频率的中断,其他代 码很难运行了。 3.另外不用定时器引脚就很难实现硬件方式输出。 本想用DMA搬运数据方式,但是DMAMUX2的触发源配置有点难度,关键搬运数据会影响整个PD口,多半也不合适~~~~

会员中心 微信客服
客服
回到顶部