This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

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

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

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

  • ming cai3 你好,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 减小幅值,是增大波表对应的值。

  • 你好,请问可以加扣扣交流一下吗?1032390435@qq.com

  • 你好,

    不知道尝试提高PWM频率是否可以帮你解决该问题?

    你可以尝试带有TImerD,高数PWM输出模块的MSP430来做SPWM。

  • 您好!
    我最近在学习有关逆变的内容,恰巧在网上看到了您的文章。用您的程序,试了一下,滤波出来是 一个正弦波。我想请教您您的正弦波表是如何得到的呢?为什么我用自编的C程序替换以以下的波表:

    127,130,132,135,138,140,143,145,
    148,150,153,155,158,160,163,165,
    167,170,172,174,177,179,181,183,
    185,188,190,192,194,196,198,200,
    202,203,205,207,209,211,212,214,
    216,217,219,220,222,224,225,226,
    228,229,230,232,233,234,235,237,
    238,239,240,241,242,243,244,245,
    245,246,247,248,248,249,250,250,
    251,251,252,252,252,253,253,253,
    253,254,254,254,254,254,254,254,
    254,254,254,253,253,253,253,252,
    252,251,251,250,250,249,249,248,
    247,247,246,245,244,243,242,242,
    241,240,238,237,236,235,234,233,
    231,230,229,227,226,224,223,222,
    220,218,217,215,213,212,210,208,
    206,205,203,201,199,197,195,193,
    191,189,187,185,183,180,178,176,
    174,171,169,167,164,162,160,157,
    155,152,150,147,145,142,139,137,
    134,131,129,126,123,121,118,115,
    112,110,107,104,101,98,95,92,
    89,87,84,81,78,75,72,69,
    66,63,60,57,54,51,48,44,
    41,38,35,32,29,26,23,20,
    17,14,10,7,4,1,2,5,
    8,11,15,18,21,24,27,30,
    33,36,39,42,45,49,52,55,
    58,61,64,67,70,73,76,79,
    82,85,88,90,93,96,99,102,
    105,108,110,113,116,119,122,124出来的正弦波不是很标准呢?

  • 还有就是,smclk配置为4M,为什么TA1CCR0配置成256,波表也是256这样如何得到50HZ的呢,最后为什么通过改变step的值会改变输出波的频率呢?以上,十分希望您能给出一点回答,感激不尽。

  • 你好,

    你可以把你的代码共享出来吗?

    附件是我们的参考设计的SPWM模块代码

    :

  • 要了解DDS的原理。这里的波表相当于存储在ROM,有个公式和查表步进以及控制器频率的关系。

  • 可以留下QQ,方便交流

  • 我的qq是813475603,主要是之前查了很多SPWM的程序,每个人的波表都不一样,我按照有关的公式算了算,也不是太懂

  • 楼主你好!

    1、把DDS的输出的数自己打出来,看看输出的数值是否有跳变;

    2、从波形看,突变点比较固定,看着像是程序的问题。