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.

[参考译文] TMS320F28377D:未计算 ePWM 中断

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/824102/tms320f28377d-not-getting-calculated-epwm-interrupt

器件型号:TMS320F28377D
主题中讨论的其他器件:TMS320F28379D

您好!

我使用 launchpad 套件开发了用于 TMS320F28379D 的 fimware、其中 ysstem 时钟为200MHz、将 PWM12配置为向上向下计数模式、TBPRD 为27777。

空 InitPwm12 (空)

EALLOW;
EPwm12Regs.TBPRD = 27777;//
EPwm12Regs.TBPHS.bit.TBPHS = 0x0000;//相位为0
EPwm12Regs.TBCTR = 0x0000;//清除计数器

EPwm12Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//向上和向下计数
EPwm12Regs.TBCTL.bit.PHSEN = TB_ENABLE;//禁用相位加载
EPwm12Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;//时钟与 SYSCLKOUT 的比率
EPwm12Regs.TBCTL.bit.CLKDIV = TB_DIV1;

EPwm12Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;

EPwm12Regs.DBCTL.bit.IN_MODE = DBA_ALL;
EPwm12Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;
EPwm12Regs.DBCTL.bit.OUT_MODE = DB_FUL_ENABLE;

EPwm12Regs.DBFED.bit.DBFED= FED_TIME* SYSTEM_CLOCKOUT;
EPwm12Regs.DBRED.bit.DBRED= FED_TIME* SYSTEM_CLOCKOUT;

EPwm12Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm12Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm12Regs.CMPCTL.bit.LOADAMODE = CC_CTR_Zero_PRD;//零负载
EPwm12Regs.CMPCTL.bit.LOADBMODE = CC_CTR_Zero_PRD;

#ifdef EPWM12_INT_ENABLE
EPwm12Regs.ETSEL.bit.INTSEL = ET_CTR_PRDZERO;//选择零事件上的 INT
EPwm12Regs.ETSEL.bit.INTEN = 1;//启用 INT
EPwm12Regs.ETPS.bit.INTPRD = et_1st;//在第三个事件上生成 INT */
#endif
EDIS;

根据上述设置、每个零事件和事件都应产生中断、即我正在获取的开发套件中的88835usec。

我们已经使用 TMS320F28377D 设计了 DSP 板。 我将相同的固件加载到此板、并检查了中断时间是否为160uSec。

我比较了电路板和 Launchpad 上的系统时钟输出、它与25MHz 相同(被8个默认分频因子偏离)。

我还通过将 TBPRD 值更改为 55554进行了检查、根据该检查、我的中断时间在电路板上加倍、达到320uSEc、在 launchpad 上达到280uSec。

提前感谢。

对此,

Nilesh

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

    Nilesh、

    我想到了几件事。  首先、我认为您的 PWM 运行超出规格。  您可以应用到 PWM 模块的最大时钟频率为100MHz、而不是200MHz (请参阅数据表中的表5-12)。  您可能需要调整 PERCLKDIVSEL 寄存器中的 EPWMCLKDIV 域、然后更改 TBPRD 的计算。

    此外、我注意到这一行:

      EPwm12Regs.TBCTL.bit.PHSEN = TB_ENABLE;//禁用相位加载

    分配和注释似乎不匹配。  PWM 模块12是否可以与其他器件同步?

    此致、

    Richard

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

    尊敬的 Richard:

    感谢您为我的问题提供宝贵的时间。

    我已经 为 PWM 模块设置了如下时钟、

    ClkCfgRegs.PERCLKDIVSEL.BIT.EPWMCLKDIV = 0;//使 PWM 基源与系统时钟相同

    对于 EPwm12Regs.TBCTL.bit.PHSEN = TB_ENABLE;//禁用相位加载、只是注释 错误。 模块与 EPWM1同步。

    我仍然会删除此同步功能并检查其效果。

    对此,

    Nilesh koladiya

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

    Nilesh、

    关于...

    我已经 为 PWM 模块设置了如下时钟、

    ClkCfgRegs.PERCLKDIVSEL.BIT.EPWMCLKDIV = 0;//使 PWM 基源与系统时钟相同

    只是想清楚一点、我想说如果您以200MHz 的频率运行器件、则无法做到这一点。 您可能理解了这一点、我只是想确保。 谢谢。

    此致、

    Richard

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

    尊敬的 Richard:

    我是否有任何原因无法以200MHz 运行 PWM?

    在器件的数据表或用户手册中是否有任何相关参考?

    对此,

    Nilesh

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

    Nilesh、

    100MHz 是为该器件指定的最大 PWM 时钟频率。  我的第一份回复中提到了数据表参考。

    我们不对任何超出规格的内容进行测试或保证。

    此致、

    Richard

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

    尊敬的 Richard:

    我将在编码中更改它并检查结果。

    对此,

    Nilesh

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

    谢谢、Nilesh。   

    很抱歉重复回复。  他们现在正在升级 e2e 服务器、看起来出现了问题。

    此致、

    Richard

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

    您好、Nilesh、

    如果您仍然遇到此问题的困难、您能否告知我们?  谢谢。

    此致、

    Richard

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

    尊敬的 Richard:

    很抱歉、我的测试有点忙。

    我将 PWM 源时钟更改为系统时钟的一半、即100Mhz、现在工作正常。 在具有200MHz 频率的开发套件上、工作正常、但在我的板上工作不正常。 问题现已解决。

    对此,

    Nilesh