TI中文支持网
TI专业的中文技术问题搜集分享网站

msp430f5529定时器产生SPWM波,滤波出的正弦波出现问题

硬件:利用Timer的捕捉比较功能,输出波形,软件:利用DDS原理,查256个8bit的波表,输出SPWM波通过截至频率100HZ左右的低通滤波,LC和RC都尝试过,输出波形有很大的毛刺。检查波表没有问题,用数字示波器查看SPWM波,在出现毛刺的地方,对应SPWM波一小周期的占空比发生不连续的突变。从整个波形上看,这种情况呈周期性。另外,通过改变波表降低输出正弦波的幅度,毛刺可以消失。软件没有其他模块,只有一个TAxCCR0的中断函数。

ming cai3:

TA1,TA2,TB都尝试过,捕捉通道几乎都试过,都没有得到很好的解决!!!

Eric Fu:

回复 ming cai3:

ming cai3 你好,

能否把你用DDS,生成SPWM的过程描述的再详细一点。

ming cai3:

回复 Eric Fu:

这里是我测试的代码!加了按键控制频率控制字的模块!

Hongru Sun:

我也出现了跟你相同的情况,我的函数里只有TA0中断,正弦半波里只有一个图片上这样的毛刺,出现在下行部分,同样是减小正弦波幅值毛刺消失,请问您是怎样解决这个问题的?谢谢

Hongru Sun:

回复 Eric Fu:

我现在也有同样的问题啊,用TACCR1、TACCR2跟TACCR0比较,改变比较值产生SPWM波,但是只要增大正弦表的幅值就出现这样的毛刺,请问如何解决?谢谢

ming cai3:

回复 Hongru Sun:

我认为不能完全解决。我分析了一下,我是进入TAxCCR0中断改变它的值,来调整脉宽,但是一进入中断,TAR重新计数,到你给TAxCCR0重新赋值,已经计数了N个,但是如果你新赋予的值小于此时的TAR,那么经过定时器比较,在下个周期这个新赋的值就不起作用,也就是说,如果你用OUTMOD_7高电平不复位,继续高电平,在相同的一个周期,高电平变大,占空比变大,反映到波形上该点的电压值变大形成个刺。减少幅度,没有出现刺,是因为你赋的值确保你在下个周期都有效,进行正常的高低电平反转。希望我的解释能够给你启发,如果你能不通过降幅改善波形,能否分享一下,如果还不理解我的解释,请尽快告诉我,以便交流,或者你有其他利用这块单片机做SPWM波的思路,分享一下。

Fuchong Wang:

回复 ming cai3:

正准备回复,发现你发帖已经发现了问题的要点。

主要是你的定时器始终和CPU主时钟一样,CPU来不及处理

优先使用TitmerB,看看手册,那是有缓冲器的

首先,中断中总尽量不要放入计算,计算想办法放到主程序中去,中断中直接给TACCRx赋值。

第二,你还用了一个定时器中断,会干扰即使处理。因为没有msp430硬件嵌套中断,所以这一点要想办法处理。

第三,TACCR0=256,首先,2一般是255,周期就是256了。如果可以另外加硬件,可以将TACCR0设置成511之类的,如果周期还是能够达到的话,这样那个sin表的最小值可以为256了

第四,优先使用TitmerB,看看手册,那是有缓冲器的

没仔细考虑你的情况,只是提点建议,不一定行,您可以思考一下能否有用

Hongru Sun:

回复 ming cai3:

我大致理解你的思路了,但是我现在有点迷糊:减小正弦波幅值是什么意思,是减小正弦表里的数值赋给比较值CCR1?那么减小之后TAR应该更容易大于这个值啊,那样不是更容易陷入高电平?我现在滤波之后的波形有点像一个振荡,而且一个周期内只有一个很稳定的毛刺,我就搞不清是硬件还是软件的问题了

Fuchong Wang:

回复 Hongru Sun:

这个你自己思考一下行不行,具体我也没怎么想,我也不了解具体的过程

反正我觉得在TACCR0中断中给TACCR1赋值的时候可能会导致突变,至于是不是你那个现象的根本原因就不知道了

ming cai3:

回复 Fuchong Wang:

非常感谢谢你的意见,我来试试!

赞(0)
未经允许不得转载:TI中文支持网 » msp430f5529定时器产生SPWM波,滤波出的正弦波出现问题
分享到: 更多 (0)