打印
[STM32F1]

如何精确调整用PWM生成的正弦波的频率

[复制链接]
6745|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kaifeier|  楼主 | 2015-9-13 19:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    我现在已经用定时器+DMA+PWM的方式实现了4KHz的输出波形。但是不能精确的微调频率,比如从4000到4100HZ 通过指令1HZ 步距小范围的连续调整。  
    现在的方案是,使用两个定时器,其中定时器1做波形数据提取计数器,定时器2做PWM输出,利用定时器1的CCx比较事件触发一次DMA传送,数据是事先根据输出频率通过SIN计算得出的数组,数组的个数是随着输出频率的变化而变化的,数组是8位的,0--255 代表波形的值。定时器2的ARR设置为255,波形数组的值通过DMA定时更新到定时器2的CCR寄存器,PWM 的输出通过简单的RC滤波,即可生成正弦波了。
    这个方案的好处是可以用一个定时器生成多个不同频率的正弦波,而且PWM的频率是固定的,方便滤波。缺点是波形数据要占用大量的内存,而且比较高频率.如4K时,调节精度只有3、4HZ。
    请问大家有没有好的方案。
沙发
icecut| | 2015-9-13 19:48 | 只看该作者
dds 方案就这样.......

使用特权

评论回复
板凳
kaifeier|  楼主 | 2015-9-13 20:15 | 只看该作者
还能再提高频率调节的分辨率吗

使用特权

评论回复
地板
songchenping| | 2015-9-14 09:39 | 只看该作者
硬件所致,分辨率和频率成反比啊。

使用特权

评论回复
5
williamhenry| | 2015-9-16 16:34 | 只看该作者
具体是怎样设置你的寄存器的?我正在调试F105VC的Timer3的Channel4,没有中断发生,不知道是怎么回事。

使用特权

评论回复
6
拉克丝| | 2015-9-17 21:55 | 只看该作者
分辨率应该是还能调的

使用特权

评论回复
7
kaifeier|  楼主 | 2015-9-18 12:41 | 只看该作者
问题解决了:)

使用特权

评论回复
8
kaifeier|  楼主 | 2015-9-18 12:48 | 只看该作者
最后的方案是采用STM32单片机实现DDS技术。网上的方案很少,我是参考了几家的原理,又自己脑补了下。其实挺简单的
只需要简单的RC滤波可以输出很漂亮的0.01 到 4000的正弦波,调节步距可精确到0.01HZ,而且还能在同一通道输出调制后的信号。一个定时器的4个通道均可生成任意频率和波形。

使用特权

评论回复
9
kaifeier|  楼主 | 2015-9-18 13:06 | 只看该作者
源码就不贴了,说下大概的原理。
使用两个定时器,分别是TIM1 和 TIM6.  TIM1的CH1 ~ CH4 做 四路波形输出,不分频,ARR值为63(这个63是输出波形的Y轴分辨率)。TIM6 做波形输出定时器(中断开启),不分频,ARR=1000,即72M/1000=72K 的溢出率。在程序开始时生成一个256的正弦波的数组(数值0~63)。在TIM6的中断程序中,用一个32位变量对频率控制字进行累加,取高8位做地址,读取波形数组的数值并赋值给TIM1的CCRx寄存器。 此时在TIM1的对应通道管脚即可生成一个72KHz 的PWM 波,其正空比周期改变,这个周期就是频率控制字决定的。通过RC滤波,波形完美呈现。

使用特权

评论回复
10
sjh2100| | 2017-9-6 15:19 | 只看该作者
kaifeier 发表于 2015-9-18 13:06
源码就不贴了,说下大概的原理。
使用两个定时器,分别是TIM1 和 TIM6.  TIM1的CH1 ~ CH4 做 四路波形输出 ...

4路输出的作用是什么?

使用特权

评论回复
11
hua_ren| | 2017-9-7 11:13 | 只看该作者
我也在调试这个。争取这2天搞定。。

使用特权

评论回复
12
电子乌托邦| | 2018-5-9 22:50 | 只看该作者
stm32 TIM产生正弦波 标记一下。

使用特权

评论回复
13
fengfeng的恒| | 2018-5-10 09:02 | 只看该作者
DDS技术。mark

使用特权

评论回复
14
HAORANAN123| | 2018-5-10 13:11 | 只看该作者

DDS技术。mark

使用特权

评论回复
15
gejigeji521| | 2020-5-10 12:07 | 只看该作者
所以最好用DAC单片机

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝