主题中讨论的其他器件: C2000WARE
我想在 TMS320F28377S 中对 PWM 脉冲跳闸使用逐周期跳闸区域。 我曾尝试使用示例代码、如示例代码中所述、我们需要将 TZ1设置为高电平。
并 将 TZ1拉低 以实现逐周期跳闸。 该示例使用输入 X-BAR 作为跳匣区域的源。
但我观察到的是、当 TZ1被拉高时、会出现正常的 PWM 脉冲、但当 TZ1被拉低时、PWM 会永远拉高。
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 中对 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?
此致、
艾里森
您好、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高电平也一直保持高电平?
此致、
艾里森