你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
懒得起名1 提问时间:2023-6-7 12:30 / 已解决

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

复用.jpg波形.JPG50Mhz.png

收藏 评论4 发布时间:2023-6-7 12:30

举报

4个回答
xmshao 最优答案 回答时间:2023-6-8 13:38:57
首先,GPIO的输出能力和实际输出不要混淆。比方马达支持的转速是8000转/分钟,


显然要实现该转速须有合适的驱动。 若凭一双手拨弄,再怎么使劲估计


每分钟有三五百转就了不得了,但并不能因此否认该马达的输出能力。




你关注的是GPIO的实际翻转输出。这个就得看你的实现方式了。
最佳方式自然是使用TIMER硬件PWM输出。


你现在是使用TIMER中断实现GPIO翻转,很多情形下,翻转频率主要由TIMER溢出频率决定。


具体到你这里,现在希望通过中断里实现GPIO翻转周期为4MHz. 这就意味着定时器的溢出周期
为8MHz。 对于定时器而言,实现这个溢出频率自然不在话下。


但是,你是在定时器中断里做GPIO翻转,进、出中断要时间、执行中断代码要时间。


此时翻转GPIO就不要基于函数调用了,尽量基于寄存器层面进行操作。



如果处理得不好,真有可能连1Mhz都输出不了。




我这边利用STM32H743芯片简单测试了下,主频400MHz,TIMER计数时钟200MHz,基于定时器中断
做GPIO翻转,做到6~7MHz的翻转输出问题不大。这个结果其实并不跟定时器本身定时长度直接相关了。


说实在的,这个东西,体验下无妨。系统里这么高频的中断没啥实用价值。
知足- 回答时间:2023-6-7 16:30:50

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

懒得起名1 回答时间:2023-6-8 10:39:56

知足- 发表于 2023-6-7 16:30
定时器中断周期设置了多少?

https://shequ.stmicroelectronics.cn/thread-640434-1-1.html

定时器周期是240/10=24M。计数值6。中断频率4MHz

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

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版