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.

[参考译文] TMS320F28377S:如何在 TMS320F28377S 中为 ePWM 脉冲使用逐周期跳闸?

Guru**** 2391695 points
Other Parts Discussed in Thread: TMS320F28377S, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1314223/tms320f28377s-how-to-use-cycle-by-cycle-trip-for-epwm-pulses-in-tms320f28377s

器件型号:TMS320F28377S
主题中讨论的其他器件: C2000WARE

我想在 TMS320F28377S 中对 PWM 脉冲跳闸使用逐周期跳闸区域。 我曾尝试使用示例代码、如示例代码中所述、我们需要将 TZ1设置为高电平。  
并 将 TZ1拉低 以实现逐周期跳闸。 该示例使用输入 X-BAR 作为跳匣区域的源。

但我观察到的是、当 TZ1被拉高时、会出现正常的 PWM 脉冲、但当 TZ1被拉低时、PWM 会永远拉高。

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

    您好、Rupa、

    是否使用 C2000Ware 中的示例?您能否说明您指的是哪个示例?

    是否设置 TZSEL[CBC1]位= 1以启用 TZ1的逐周期跳闸、并使用 TZCTL 寄存器中的 TZA 和 TZB 选择 ePWM 通道 A 和 B 所需的操作? 逐周期跳闸应在 TZCLR[CBCPULSE]指定的每个 PWM 周期 中被清除。 您为这些位选择了什么? 如果跳闸事件不再存在、这将清除跳闸。

    当 TZ1发生时、您还可以检查 CBC 标志是否设置正确(TZFLG[CBC])。

    此致、

    艾里森

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

    尊敬的 Allison:

    我 指的是以下示例代码:C2000Ware_4_03_00_00\device_support\f2837xs+ examples\cpu1\ePWM_trip_zone。  

    在代码中、TZSEL[CBC1]位设置为1、TZCTL.bit.tZA = TZ_FORCE_HI;

    TZCLR[CBCPULSE]未配置,是否应该配置?

    这是供您参考的代码片段:

    我修改了 ePWM 8A 的示例代码(最初使用 epwm2A 进行配置)
    //
    //启用 TZ1作为一个逐周期跳闸源
    //
    EALLOW;
    EPwm8Regs.TZSEL.bit.CBC1 = 1;

    //
    //设置 TZA
    //
    EPwm8Regs.TZCTL.bit.tZA = TZ_FORCE_HI;

    //
    //启用 TZ 中断
    //
    EPwm8Regs.TZEINT.bit.CBC = 1;
    EDIS;

    EPwm8Regs.TBPRD = 6000;//设置计时器周期
    EPwm8Regs.TBPHS.bit.TBPHS = 0x0000;//相位为0
    EPwm8Regs.TBCTR = 0x0000;//清除计数器

    //
    //设置 TBCLK
    //
    EPwm8Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//向上计数
    EPwm8Regs.TBCTL.bit.PHSEN = TB_DISABLE;//禁用相位加载
    EPwm8Regs.TBCTL.bit.HSPCLKDIV = TB_DIV4;//时钟与 SYSCLKOUT 的比率
    EPwm8Regs.TBCTL.bit.CLKDIV = TB_DIV4;//缓慢、仅用于观察
    //范围。

    //
    //设置比较
    //
    EPwm8Regs.CMPA.bit.CMPA = 3000;

    //
    //设置操作
    //
    EPwm8Regs.AQCTLA.bit.CAU = AQ_SET;//在 CAU 上设置 PWM2A
    EPwm8Regs.AQCTLA.bit.CAD = AQ_CLEAR;//清除 CAD 上的 PWM2A

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

    您好、Rupa、

    TZCLR[CBCPULSE]应默认设置为在 CBC = 0时清除 CTR 跳闸锁存、因此没关系(我唯一要担心的是 、如果这意外设置为11、因为 CBC 跳闸锁存没有清除)。  

    我看到您在使用 EPWM8寄存器、还想问是否刚刚尝试过在未进行任何修改的情况下运行 C2000Ware 示例以验证可以在 EPWM2上正确看到 CBC 跳闸函数? 然后在什么之后将其更改为 EPWM8?

    此致、

    艾里森

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

    尊敬的 Allison:

    正如您所说,我使用 EPWM2验证了 C2000Ware 示例,但 CBC 跳闸不能正常工作。

    当 TZ1被拉至低电平时、PWM 脉冲保持高电平。

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

    您好、Rupa、

    这些 C2000Ware 示例应该是正确的、因此我将更深入地研究它 、并测试 我最后的示例中是否存在错误、并将在星期一结束时向您更新。 与此同时、 如果您 愿意、还可以尝试下载最新版本的 C2000Ware (版本:5.01.00.00)、以防在不同版本之间进行了更改。 我还建议查看  C2000Ware_5_01_00_00\driverlib\f2837xs+ examples\cpu1\ePWM 中的 DriverLib 示例。 这里有更多示例、也有一个类似的跳闸区域示例(但使用了 DriverLib)供您使用-请告诉我您是否能够让这个示例正常运行!

    此致、

    艾里森

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

    您好、Rupa、

    我对此进行了测试、示例 epwm_trip_zone 看起来 如预期正常工作。

    TZ1最初连接至高电平、这意味着没有跳闸(PWM 正常工作)。 仅当 TZ1信号连接至低电平时、跳闸条件才为真; 当条件(TZ1 =低电平)为真时、CBC 跳闸将保持重复(一个周期一个周期)、并且由于跳闸的结果 EPWM2将保持高电平、直到 TZ1再次为高电平(意味着跳闸条件不再为真)。 我再次将 TZ1拉至高电平后、CBC 跳闸不再适用、PWM 信号按预期恢复。 您是否仍然看到 EPWM2信号即使再次拉至 TZ1高电平也一直保持高电平?

    此致、

    艾里森

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

    作为一项新增注释、您还可以排除在 TZ ISR (GPIO11)中切换的 GPIO、当 TZ1连接为低电平时、该 GPIO 将切换、表明 ISR 正在发生以清除标志- ISR 将继续发生、直到跳闸条件不再成立 (意味着 TZ1再次连接至高电平)