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.
您好!
我使用 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
尊敬的 Richard:
我将在编码中更改它并检查结果。
对此,
Nilesh
谢谢、Nilesh。
很抱歉重复回复。 他们现在正在升级 e2e 服务器、看起来出现了问题。
此致、
Richard
您好、Nilesh、
如果您仍然遇到此问题的困难、您能否告知我们? 谢谢。
此致、
Richard
尊敬的 Richard:
很抱歉、我的测试有点忙。
我将 PWM 源时钟更改为系统时钟的一半、即100Mhz、现在工作正常。 在具有200MHz 频率的开发套件上、工作正常、但在我的板上工作不正常。 问题现已解决。
对此,
Nilesh