OpenEdv-开源电子网

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

一个定时器输出4路不同频率的PWM实现方法?

[复制链接]

26

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
236
金钱
236
注册时间
2015-12-7
在线时间
59 小时
发表于 2017-2-23 13:14:13 | 显示全部楼层 |阅读模式
1金钱
帖子将持续的更新...


网上查阅提到比较多的方法是:


TIM_OCxPreloadConfig(TIMx, TIM_OCPreload_Disable);  
把这个预装载关闭掉,在中断中人为的预装载下一次的触发翻转的时间.实现一定时器的4路不同频率控制.


但是这个方法低频率一点还好.频率上去后似乎并不好使.(具体的迟点上上实验图.今天就是来开个地儿想与路过的看官讨论讨论.)

不知道路过的看官是否还有别的更好的方法?

最佳答案

查看完整内容[请看2#楼]

输出比较模式,就是你说的在中断里面修改值。 要是频率高了,还是老老实实用4个定时器吧。
< 主啊,请你温柔的笑吧 >
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-2-23 13:14:14 | 显示全部楼层
输出比较模式,就是你说的在中断里面修改值。  要是频率高了,还是老老实实用4个定时器吧。
回复

使用道具 举报

26

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
236
金钱
236
注册时间
2015-12-7
在线时间
59 小时
 楼主| 发表于 2017-2-23 20:24:51 | 显示全部楼层
本帖最后由 包子 于 2017-2-23 20:30 编辑

No,我又看到了一个帖子. 我还要试.Zzz

帖子内容如下:
设置每个通道在输出比较匹配时产生中断,在中断中将比较寄存器的数值读出并加上Half_Cyc的数值,如果计算出的数值超过16位则舍弃超出的部分,再把这个新的数值写回相应的比较寄存器;这样下次比较成功将刚好发生在一个半波周期之后,对应的管脚将被翻转。

上述方法在要求频率不高时十分有效,但如果频率较高时会有频繁的中断产生,这时可以使用DMA加以改善。

上述方法的基础是通过不断改变输出比较的匹配点进而产生管脚翻转输出,我们可以事先计算好这些比较匹配点,并通过DMA在每次匹配时逐次更新比较寄存器的内容:

方法一、使用两个DMA缓冲区,在DMA控制器操作一个缓冲区时,程序计算好另一个缓冲区的数据,然后在DMA传输结束的中断处理中切换DMA操作的缓冲区。

方法二、使用一个大的DMA缓冲区,先计算好半个缓冲区的内容,启动DMA为循环模式并设置它在DMA传送一半和完成时均产生中断;启动DMA后继续计算好另外半个缓冲区的内容,当发生DMA中断时表示有一半缓冲区变空,这时在中断处理中计算好这半个缓冲区。

只要DMA缓冲区开的足够大,方法二可以保证CPU有充足的时间进行数据处理,并且保证不断地输出波形。
< 主啊,请你温柔的笑吧 >
回复

使用道具 举报

26

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
236
金钱
236
注册时间
2015-12-7
在线时间
59 小时
 楼主| 发表于 2017-2-23 20:28:47 | 显示全部楼层
另外这个部分我是要加在 写好的级联主定时器中. 目的是 实现输出4路计数PWM变频输出.

我级联的两个定时器现在可以输出4路PWM计数输出.  频率可以1-2M都准确输出需要的脉冲个数.
所以你说的4个定时器对我来说不现实..  我还是老老实实看看怎么提速.
< 主啊,请你温柔的笑吧 >
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-2-23 20:35:00 | 显示全部楼层
包子 发表于 2017-2-23 20:24
No,我又看到了一个帖子. 我还要试.Zzz

帖子内容如下:

用DMA是一个方法。
你可以试试
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 13:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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