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.

[参考译文] TMS320F28069M:在启用 SYNC 的情况下更改从 ePWM 的 TBPRD 值

Guru**** 2077950 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1127746/tms320f28069m-changing-tbprd-value-of-slave-epwms-while-sync-enabled

器件型号:TMS320F28069M

EPWM1是主器件、EPWM2是从器 件同步、因为我在它们之间进行相移。

EPWM1设置为 TBPRD=4500 (10kHz)、因此如果我更改 EPWM2 TBPRD 值=9000 (5Khz)、则操作限定符不输出任何内容。 只有当它们的值相同或 PHSEN 被禁用(我不想这么做)时、它们才起作用。

我的目标是:


1) EPWM1在10kHz 时的中断(用于计算)、SYNC 被禁用、(EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;)

2) EPWM2 AQ 用于在5Khz 下进行切换、但我想将相位更改为我希望的 EPWM1相位。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Syed、

    [~ userid="529698" URL"/support/microriers/C2000-microriers-group/C2000/f/C2000-microriers-forum/1127746/tms320f28069m-changing-tbprd-value-of-slave-ePWM-why-sync-enabled"]EPWM1设置为 TBPRD=4500 (10kHz)、如果 EPWM2限定符的输出值没有改变、则为5kHz。 它们仅在相同的值或 PHSEN 被禁用(我不想这么做)时才起作用。[/QUERP]

    您能否提供 EPWM1和 EPWM2的初始化代码、以便我检查您使用的计数模式以及您的动作限定符设置是什么? 当您说"动作限定器不输出任何内容"时、您意味着您看到 EPWM2处于恒定低电平状态?

    此致、

    Marlyn

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    无效
    InitEPwm1Examples()

    //
    //设置 TBCLK
    //
    EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;//
    EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
    EPwm1Regs.TBPHS.Half.TBPHS = 0;

    EPwm1Regs.TBPRD = 4500;//9000 //设置计时器周期801 TBCLK
    // EPwm1Regs.TBPHS.Half.TBPHS = 0x0000;//相位为0
    EPwm1Regs.TBCTR = 0x0000;//清除计数器

    //
    //设置比较值
    //
    EPwm1Regs.CMPA.half.CMPA = 0;//设置比较 A 值
    EPwm1Regs.CMPB = 0;//设置比较 B 值

    //
    //设置计数器模式
    //
    EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//向上计数

    EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;//时钟与 SYSCLKOUT 的比率
    EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;

    //
    //设置隐藏
    //
    EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
    EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
    EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;//零负载
    EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

    //
    //设置操作
    //
    EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;//在事件 A 上设置 PWM1A、递增计数
    EPwm1Regs.AQCTLA.bit.CAD = AQ_SET;//在事件 A 上清除 PWM1A、递减计数

    EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;//在事件 B 上设置 PWM1B、递增计数
    EPwm1Regs.AQCTLB.bit.CBD = AQ_SET;//在事件 B 上清除 PWM1B,倒计数

    //
    //中断,我们将在其中更改比较值
    //
    EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_PRDZERO;//选择零事件上的 INT
    EPwm1Regs.ETSEL.bit.INTEN = 1;//启用 INT
    EPwm1Regs.ETPS.bit.INTPRD = 1;//在发生第5个事件时生成 INT

    //
    epwm1_info.EPwmRegHandle =&EPwm1Regs;


    无效
    InitEPwm2Examples()

    //
    //设置 TBCLK
    //
    EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;//直通
    EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE;
    EPwm2Regs.TBPHS.Half.TBPHS = 0;


    EPwm2Regs.TBPRD = 9000;//4500 //设置计时器周期801 TBCLK
    EPwm2Regs.TBCTR = 0x0000;//清除计数器

    //
    //设置比较值
    //
    EPwm2Regs.CMPA.half.CMPA = 2000;//设置比较 A 值
    EPwm2Regs.CMPB = 0;//设置比较 B 值

    //
    //设置计数器模式
    //
    EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//向上计数

    EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;//时钟与 SYSCLKOUT 的比率
    EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV1;

    //
    //设置隐藏
    //
    EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
    EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
    EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;//零负载
    EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

    //
    //设置操作
    //
    EPwm2Regs.AQCTLA.bit.CAU = AQ_CLEAR;//在事件 A 上设置 PWM1A、递增计数
    EPwm2Regs.AQCTLA.bit.CAD = AQ_SET;//在事件 A 上清除 PWM1A、递减计数

    EPwm2Regs.AQCTLB.bit.CBU = AQ_CLEAR;//在事件 B 上设置 PWM1B、递增计数
    EPwm2Regs.AQCTLB.bit.CBD = AQ_SET;//在事件 B 上清除 PWM1B,倒计数

    epwm2_info.EPwmRegHandle =&EPwm2Regs;

    当 TBPRD 不同时、EPWM2一直处于低电平。
    一旦我将它们更改为相同的值、它就会开始工作、或者如果我禁用同步、它将再次开始工作。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Syed、

    请参阅此主题 :https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/801113/ccs-tms320f28379d-cannot-synchronize-different-epwm-frequencies 

    本质上、您应该切换 EPWM1和 EPWM2的频率以实现正确同步。

    此致、

    Marlyn