搜索
bottom↓
回复: 38

STM32 实现可变频率固定脉冲个数输出方法.

[复制链接]

出0入0汤圆

发表于 2011-8-19 18:36:30 | 显示全部楼层 |阅读模式
原理:1.使用两个定时器,一个定时器用于PWM输出(定时器2),一个定时器用于计数(定时器1)。
      2.两个定时器都工作在从模式。
      3.定时器1工作于PWM门控模式(占空比50%),只有定时器1的OC1REF低电平时,启动定时器。定时器3的脉冲输出口OC1作为外部触发信号。
      4.定时器2工作外部时钟,单脉冲脉冲输出模式,选择TIM2的触发输入作为计数脉冲(当计数值达到设定值时,OC1,变为高电平,
        定时器1停止PWM脉冲输出.


优点:启动PWM,全部由硬件实现,脉冲个数到了,自动停止脉冲输出,在脉冲输出过程当中,可以随意改变脉冲频率。

如果有更好的方法,大家一起讨论!

出0入18汤圆

发表于 2011-8-19 19:42:25 | 显示全部楼层
STM32 没干过

LPC17XX 倒是用过,

一个定时器,匹配时输出翻转 实现PWM功能,周期到的时候触发中断,在中断里面 脉冲个数 --,周期 值 ++,这样周期就变化,脉冲数固定了。哈哈!

出0入0汤圆

发表于 2011-8-19 19:51:03 | 显示全部楼层
回复【楼主位】inele  
原理:1.使用两个定时器,一个定时器用于pwm输出(定时器2),一个定时器用于计数(定时器1)。
      2.两个定时器都工作在从模式。
      3.定时器1工作于pwm门控模式(占空比50%),只有定时器1的oc1ref低电平时,启动定时器。定时器3的脉冲输出口oc1作为外部触发信号。
      4.定时器2工作外部时钟,单脉冲脉冲输出模式,选择tim2的触发输入作为计数脉冲(当计数值达到设定值时,oc1,变为高电平,
        定时器1停止pwm脉冲输出.

优点:启动pwm,全部由硬件实现,脉冲个数到了,自动停止脉冲输出,在脉冲输出过程当中,可以随意改变脉冲频率。
如果有更好的方法,大家一起讨论!
-----------------------------------------------------------------------

如果要输出 4 路 占空50%不变  频率 脉冲数可调的 有什么比较准确的方法? 在意脉冲准确,方法复杂点没关系,系统中还有其他中断  STM32F103ZE

出0入0汤圆

 楼主| 发表于 2011-8-19 20:11:06 | 显示全部楼层
回复【2楼】xivisi LiYong
-----------------------------------------------------------------------

你说的4路具体的是什么情况,4路脉冲频率是否都一样,脉冲个数是否都一样,相位是是否一样。

出0入0汤圆

发表于 2011-8-19 20:14:25 | 显示全部楼层
amrk

出0入0汤圆

发表于 2011-8-19 20:19:06 | 显示全部楼层
回复【4楼】inele  
回复【2楼】xivisi liyong
-----------------------------------------------------------------------
你说的4路具体的是什么情况,4路脉冲频率是否都一样,脉冲个数是否都一样,相位是是否一样。  
-----------------------------------------------------------------------

4路完全独立  互不影响

出0入0汤圆

 楼主| 发表于 2011-8-19 21:02:50 | 显示全部楼层
回复【6楼】xivisi LiYong
-----------------------------------------------------------------------
使用中断软件计数的方法,频率低还可以,频率高对中断要有影响,完全硬件实现就比较难了,
有一种方法不知道行不行(没试过),使用DMA,在RAM中放IO数据,DMA定时对GPIO送数,不知道行不行。
频率精度可能差点,脉冲个数多的话,占用RAM就多。

如果四路脉冲输出信号独立,可使用4个定时器,每个定时器产生一路脉冲,定时器更新产生DMA中断,利用DMA传数数量,控制输出脉冲个数,
当DMA发生中断,也就是说输出脉冲数到了!

出0入0汤圆

发表于 2011-8-19 21:05:54 | 显示全部楼层
这个好像用在步进电机控制中比较多。

出0入0汤圆

发表于 2011-8-19 21:51:12 | 显示全部楼层
回复【7楼】inele  
回复【6楼】xivisi liyong
-----------------------------------------------------------------------
使用中断软件计数的方法,频率低还可以,频率高对中断要有影响,完全硬件实现就比较难了,
有一种方法不知道行不行(没试过),使用dma,在ram中放io数据,dma定时对gpio送数,不知道行不行。
频率精度可能差点,脉冲个数多的话,占用ram就多。
如果四路脉冲输出信号独立,可使用4个定时器,每个定时器产生一路脉冲,定时器更新产生dma中断,利用dma传数数量,控制输出脉冲个数,
当dma发生中断,也就是说输出脉冲数到了!
-----------------------------------------------------------------------

O(∩_∩)O谢谢  STM32 才上手不久

出0入0汤圆

发表于 2011-8-20 08:49:08 | 显示全部楼层
我经常再用,STM32 用两个TIM 主从的功能!

出0入228汤圆

发表于 2011-8-20 08:59:19 | 显示全部楼层
学习

出0入228汤圆

发表于 2011-8-20 09:03:04 | 显示全部楼层
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4265382&bbs_id=9999
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3210838&bbs_id=9999

出0入0汤圆

发表于 2011-8-20 09:06:37 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-20 09:15:39 | 显示全部楼层
学习,谢谢。
准备应用频率和脉冲个数都可以改变的方式。

出0入0汤圆

发表于 2011-11-22 22:53:10 | 显示全部楼层
学习,正需要这方面的资料。

出0入0汤圆

发表于 2012-7-31 21:06:16 | 显示全部楼层
有代码么

出0入0汤圆

发表于 2013-9-1 12:55:34 | 显示全部楼层
原理:1.使用两个定时器,一个定时器用于PWM输出(定时器2),一个定时器用于计数(定时器1)。
      2.两个定时器都工作在从模式。
      3.定时器1工作于PWM门控模式(占空比50%),只有定时器1的OC1REF低电平时,启动定时器。定时器3的脉冲输出口OC1作为外部触发信号。
      4.定时器2工作外部时钟,单脉冲脉冲输出模式,选择TIM2的触发输入作为计数脉冲(当计数值达到设定值时,OC1,变为高电平,
        定时器1停止PWM脉冲输出.


优点:启动PWM,全部由硬件实现,脉冲个数到了,自动停止脉冲输出,在脉冲输出过程当中,可以随意改变脉冲频率。

你的这个帖子看不懂,能不能详细解释一下?

出0入0汤圆

发表于 2013-9-1 17:01:04 来自手机 | 显示全部楼层
我也实现了。lz有没有在外部用与门处理?如何做结束处理?是用中断吗?在加减速方面如何处理?我用103rf做4了路脉冲输出。希望一起交流。420304805

出0入0汤圆

 楼主| 发表于 2013-9-15 20:54:42 | 显示全部楼层
没有使用外部门电路辅助,这是优点,频率和脉冲数都可调,缺点是,频率调节就不是任意时刻都做调整,是固定的,比如一秒种固定调节两次或四次或8次,

出0入0汤圆

发表于 2013-12-11 23:06:37 | 显示全部楼层
hunyuanqi0 发表于 2013-9-1 12:55
原理:1.使用两个定时器,一个定时器用于PWM输出(定时器2),一个定时器用于计数(定时器1)。
      2.两个 ...

能否具体来说一下, 搞了好久没搞出来...

出0入0汤圆

发表于 2013-12-11 23:27:49 | 显示全部楼层
用定时器的四个cc通道,dma传递输出比较值,可以做到频率和脉冲个数可变

出0入0汤圆

发表于 2013-12-11 23:55:58 来自手机 | 显示全部楼层
马克,等详解

出0入0汤圆

发表于 2013-12-13 13:21:05 | 显示全部楼层
mark, thanks

出0入0汤圆

发表于 2014-8-18 09:12:27 | 显示全部楼层
这位前辈,思路很好啊,刚对STM32上手,能否指点一下。

出20入0汤圆

发表于 2014-9-22 09:24:40 | 显示全部楼层
如果  使用  一个定时器1 作为另一个 定时器2的预分频器的 模式, 即  定时器1输出的PWM脉冲,每一个脉冲触发定时器2 自动计数1次,当 达到设定的脉冲数量CCR时,产生一个定时器2中断,在该中断里重新设置定时器2的PWM频率,此方法怎样,希望讨论

出0入0汤圆

发表于 2014-10-1 21:23:06 | 显示全部楼层
Mark,,,,,,,,,,,,,,,,,,

出0入0汤圆

发表于 2014-10-12 16:24:48 | 显示全部楼层
单脉冲,的响应时间是多少,90K可以响应到吗?

出0入0汤圆

发表于 2014-10-16 18:05:58 | 显示全部楼层
做个标记,也在学习这快,比较迷茫,貌似定时器频繁中断的话,频率高点比如50k就做不了什么事情了额

出0入0汤圆

发表于 2015-1-31 03:30:19 | 显示全部楼层
myxiaonia 发表于 2013-12-11 23:27
用定时器的四个cc通道,dma传递输出比较值,可以做到频率和脉冲个数可变

你好,能不能不能给个思路我要输出四路频率一致,脉冲个数一样的,但是想用少点定时器,谢谢啊。

出0入0汤圆

发表于 2015-1-31 07:30:04 | 显示全部楼层
微风 发表于 2015-1-31 03:30
你好,能不能不能给个思路我要输出四路频率一致,脉冲个数一样的,但是想用少点定时器,谢谢啊。 ...

这还不简单,1路pwm输出,接4路缓冲器件,不就是符合你要求了么

出0入0汤圆

发表于 2015-1-31 08:29:05 | 显示全部楼层

出0入0汤圆

发表于 2015-1-31 14:04:01 | 显示全部楼层
myxiaonia 发表于 2015-1-31 07:30
这还不简单,1路pwm输出,接4路缓冲器件,不就是符合你要求了么

这个缓冲器件是什么啊,菜鸟不太懂,我已经实现单个控制,通过级联的方式但是必须是固定的定时器,这样定时器不够啊,没法输出四路我用的是STM32F407VG100脚得,谢谢了着急用

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-1-31 14:18:42 | 显示全部楼层
微风 发表于 2015-1-31 14:04
这个缓冲器件是什么啊,菜鸟不太懂,我已经实现单个控制,通过级联的方式但是必须是固定的定时器,这样定 ...

你所说的4路pwm是不是完全一致的,用缓冲区的意思就是相当于复制成4份,符合你要求么

出0入0汤圆

发表于 2015-1-31 14:43:41 | 显示全部楼层
myxiaonia 发表于 2015-1-31 14:18
你所说的4路pwm是不是完全一致的,用缓冲区的意思就是相当于复制成4份,符合你要求么 ...

但是定时器有限制啊,需要八个但是我的芯片没有那么多,最多也就能到三组因为不不能重复使用定时器你看看我发的那个内部触发连接的图片,所以很纠结啊,不知道什么办法能解决啊,希望大神能够耐心的想一下,我也是很着急啊万分感谢

出0入0汤圆

发表于 2015-1-31 15:23:59 | 显示全部楼层
微风 发表于 2015-1-31 14:43
但是定时器有限制啊,需要八个但是我的芯片没有那么多,最多也就能到三组因为不不能重复使用定时器你看看 ...

看来你的应用中4路pwm是要独立启停的,否则完整复制就行了

出0入0汤圆

发表于 2017-4-6 23:05:22 来自手机 | 显示全部楼层
学习了,思路不错

出0入0汤圆

发表于 2017-4-7 08:36:07 | 显示全部楼层
这个应用在超声波脉冲发送上倒是很好。

出100入101汤圆

发表于 2017-4-7 09:23:06 | 显示全部楼层
定时器方式输出PWM,局限很大
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 20:48

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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