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.

关于pmsm3_3例程中旋变激励输出正弦波的频率



按照下面的计算,应该可以通过PWM7和8引脚用示波器看到频率为freq_exc的正弦波,为什么仿真结果不对呢?比如说当freq_exc = 5 时,理论上应该是5k,但是示波器上输出的却是10k。这是什么情况?

float Ts = 0.001/RESOLVER_PWM_FREQUENCY; /* PWM frequency, see parameter.h */

float freq_exc = RESOLVER_EXCITATION_FREQUENCY*1000; /* Excitation frequency (Hz) */

float amplitude = 1.0; /* Peak value of excitation signal (pu) */

float ang_exc = 0;

_iq sin_sig_ref = 0; /* excitation signal (pu) */

// Excitation signal generation for resolver sensor

sin_sig_ref = _IQmpy(_IQ(amplitude),_IQsinPU(_IQ(ang_exc)));

ang_exc += freq_exc*T;

if (ang_exc >= 1)

ang_exc -= 1;

res_pwm1.signal_ref = _IQtoIQ15(sin_sig_ref);

res_pwm1.update(&res_pwm1);

  • 看不到你的PWM模块的设置,不能断定问题在哪。

    建议将res_pwm1.update()函数的原型以及res_pwm1结构体的定义发出来看一下。

  • /*----------------------------------------------------------------------------

    Initialization constant for the F28X Timer TxCON for PWM Generation.

    Sets up the timer to run free upon emulation suspend, continuous up-down mode

    prescaler 1, timer enabled.

    ----------------------------------------------------------------------------*/

    #define PWM_RESOLVER_INIT_STATE  (FREE_RUN_FLAG +         \

                                     TIMER_CONT_UPDN +        \

                                     TIMER_CLK_PRESCALE_X_1 + \

                                     TIMER_ENABLE_BY_OWN    + \

                                     TIMER_ENABLE )

    /*----------------------------------------------------------------------------

    Initialization constant for the F28X ACTRx register for Resolver drive.

    Sets up PWM7/8 polarities.

    ----------------------------------------------------------------------------*/

    #define ACTRB_PWM_RESOLVER_INIT_STATE ( COMPARE1_AL + \

                                           COMPARE2_AH + \

                                           COMPARE3_FL + \

                                           COMPARE4_FL + \

                                           COMPARE5_FL + \

                                           COMPARE6_FL )

    /*-----------------------------------------------------------------------------

    Define the structure of the RESOLVER_PWM Driver Object

    -----------------------------------------------------------------------------*/

    typedef struct {  

           int signal_ref;         /* Input: Excitation reference signal (Q15)  */

           int pwm_period;         /* Parameter: PWM Half-Period in CPU clock cycles (Q0)  */

           void (*init)();         /* Pointer to the init function   */

        void (*update)();   /* Pointer to the update function */

           } RESOLVER_PWM ;

    /*-----------------------------------------------------------------------------

  • void F28X_EV2_Resolver_PWM_Init(RESOLVER_PWM *p)

    {      

          /* Initialize PWM7/PWM8 (EVB) */

           EvbRegs.T3PR = p->pwm_period;             /* Init Timer 3 period Register  */

           EvbRegs.T3CON.all = PWM_RESOLVER_INIT_STATE;     /* Symmetrical Operation  */

           EvbRegs.COMCONB.all = 0xA200;

           EvbRegs.ACTRB.all = ACTRB_PWM_RESOLVER_INIT_STATE;                

           EALLOW;                       /* Enable EALLOW */

           GpioMuxRegs.GPBMUX.all |= 0x0003;

           EDIS;                         /* Disable EALLOW */

    }

    void F28X_EV2_Resolver_PWM_Update(RESOLVER_PWM *p)

    {      

           long tmp;

           EvbRegs.T3PR = p->pwm_period;        /* Update Timer 3 period Register  */

           tmp = (long)p->pwm_period*(long)(p->signal_ref);

           EvbRegs.CMPR4 = (int)(tmp>>16) + (int)(p->pwm_period>>1);

    }

  • 没有看到freq_exc与p->pwm_period的关系,不过有几个方向你可以检查一下:1. EV的时钟应该是系统时钟提供的,你选择的分频是多少? 2. 计数模块是什么?单调上升还是对称的? 3. 在结构体定义的注释中 int pwm_period;         /* Parameter: PWM Half-Period in CPU clock cycles (Q0)  */ 提到该参数是半周期?

  • 主程序里的主频率为150MHz,计数模块为Eva的T1UFINT,定义的pwm_period的值为3750,PWM波形为对称的,EV中断频率为20kHz,这些应该都没问题的。程序里的"freq_exc"为5k,“T”为1/(20k)。

  • 你好, 请问下可以给我发一份 这个exe文件吗?现在官网无法下载 ,谢谢! yelangxu@163.com