主题中讨论的其他器件: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
