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

DSP2812例程BLDC3_1中PWM初始化函数的疑问

各位大佬们好,感谢大佬们不吝赐教,我的问题如下:

1、 EvaRegs.ACTRA.all = 0x0000;这句中ACTRA寄存器为什么这样设置呢,查表这是禁止了PWM1~6的发生;

2、EvaRegs.GPTCONA.all = 0x0000;这句中GPTCONA寄存器为什么这样设置呢,查表这是禁止了 定时器1.2的比较输出

程序如下:

void F281X_EV1_BLDC_PWM_Init(PWMGEN *p){              EvaRegs.T1PR = p->PeriodMax;             // Init Timer 1 Period Register########################T1PR决定周期##############
        EvaRegs.T1CON.all = BLDCPWM_INIT_STATE;   // Init PWM Operation
        EvaRegs.ACTRA.all = 0x0000;     //######################禁止PWM1~6的发生###########################                      EvaRegs.GPTCONA.all = 0x0000;         //###################禁止定时器的比较输出######################
        EvaRegs.COMCONA.all = 0xA200;
        EALLOW;                       // Enable EALLOW
        GpioMuxRegs.GPAMUX.all |= 0x003F;    // Setting PWM1-6 as primary output pins
        EDIS;                         // Disable EALLOW

Susan Yang:您可以参考一下

www.ti.com/…/spru065e.pdf

ACTRA比较方式控制寄存器,控制PWM引脚的 高/低 有效,设置了COMCONx,则ACTRA和ACTRB会重新加载

The compare action control registers (ACTRA and ACTRB) control the action that takes place on each of the six compare output pins (PWMx, where x = 1−6 for ACTRA, and x = 7−12 for ACTRB) on a compare event, if the compare operation is enabled by COMCONx[15]. ACTRA and ACTRB are doublebuffered. The condition on which ACTRA and ACTRB is reloaded is defined by bits in COMCONx.ACTRA and ACTRB also contain the SVRDIR, D2, D1,and D0 bits needed for space vector PWM operation.

各位大佬们好,感谢大佬们不吝赐教,我的问题如下:

1、 EvaRegs.ACTRA.all = 0x0000;这句中ACTRA寄存器为什么这样设置呢,查表这是禁止了PWM1~6的发生;

2、EvaRegs.GPTCONA.all = 0x0000;这句中GPTCONA寄存器为什么这样设置呢,查表这是禁止了 定时器1.2的比较输出

程序如下:

void F281X_EV1_BLDC_PWM_Init(PWMGEN *p){              EvaRegs.T1PR = p->PeriodMax;             // Init Timer 1 Period Register########################T1PR决定周期##############
        EvaRegs.T1CON.all = BLDCPWM_INIT_STATE;   // Init PWM Operation
        EvaRegs.ACTRA.all = 0x0000;     //######################禁止PWM1~6的发生###########################                      EvaRegs.GPTCONA.all = 0x0000;         //###################禁止定时器的比较输出######################
        EvaRegs.COMCONA.all = 0xA200;
        EALLOW;                       // Enable EALLOW
        GpioMuxRegs.GPAMUX.all |= 0x003F;    // Setting PWM1-6 as primary output pins
        EDIS;                         // Disable EALLOW

user6007383:

回复 Susan Yang:

您好,首先感谢您的回答,可能是我没表达清楚,我的疑问是为什么初始化时禁止了PWM1~6的发生呢,不应该使能吗?

各位大佬们好,感谢大佬们不吝赐教,我的问题如下:

1、 EvaRegs.ACTRA.all = 0x0000;这句中ACTRA寄存器为什么这样设置呢,查表这是禁止了PWM1~6的发生;

2、EvaRegs.GPTCONA.all = 0x0000;这句中GPTCONA寄存器为什么这样设置呢,查表这是禁止了 定时器1.2的比较输出

程序如下:

void F281X_EV1_BLDC_PWM_Init(PWMGEN *p){              EvaRegs.T1PR = p->PeriodMax;             // Init Timer 1 Period Register########################T1PR决定周期##############
        EvaRegs.T1CON.all = BLDCPWM_INIT_STATE;   // Init PWM Operation
        EvaRegs.ACTRA.all = 0x0000;     //######################禁止PWM1~6的发生###########################                      EvaRegs.GPTCONA.all = 0x0000;         //###################禁止定时器的比较输出######################
        EvaRegs.COMCONA.all = 0xA200;
        EALLOW;                       // Enable EALLOW
        GpioMuxRegs.GPAMUX.all |= 0x003F;    // Setting PWM1-6 as primary output pins
        EDIS;                         // Disable EALLOW

user6007383:

如题:例程中PWM初始化时有EvaRegs.GPTCONA.all = 0x0000;差表这样是将输出PWM的定时器1比较输出极性设置成强制低,并禁止定时器1的比较输出。

  所以我很困惑,这样不是禁止PWM 的输出吗?是例程错了吗?初始化语句如下:

void F281X_EV1_BLDC_PWM_Init(PWMGEN *p) {               EvaRegs.T1PR = p->PeriodMax;             // Init Timer 1 Period Register        EvaRegs.T1CON.all = BLDCPWM_INIT_STATE;   // Init PWM Operation        EvaRegs.ACTRA.all = 0x0000;                        EvaRegs.GPTCONA.all = 0x0000;        EvaRegs.COMCONA.all = 0xA200;
        EALLOW;                       // Enable EALLOW        GpioMuxRegs.GPAMUX.all |= 0x003F;    // Setting PWM1-6 as primary output pins        EDIS;                         // Disable EALLOW}

赞(0)
未经允许不得转载:TI中文支持网 » DSP2812例程BLDC3_1中PWM初始化函数的疑问
分享到: 更多 (0)