大家好,我正在用C2000学习PWM,处理器是F28377S。
我想发送5000Hz的PWM,但是现在还没太搞明白PWM波的周期应该怎么算,还请大家帮助一下。
手册里有下面一张图,使用中间那个模式,我理解PWM波的频率就应该是 F= TBCLK/(TBPRD+1)
F28377S的频率是200MHz,即1/TBCLK=200M,所以想发出5000Hz的话,TBPRD = TBCLK/5000=200M/5000=4000
但是通过示波器测量的是否发现PWM波并没有获得想要的周期0.2ms,而是一个大概在3ms左右。
我把设置TBCLK的代码和示波器照片也贴到下面。请大家帮我看一下,是我理解错了,还是哪里不对。
非常感谢您的帮助!
// // Setup TBCLK // EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // Count up EPwm2Regs.TBPRD = 40000; // Set timer period EPwm2Regs.TBCTL.bit.PHSEN = TB_DISABLE; // Disable phase loading EPwm2Regs.TBPHS.bit.TBPHS = 0x0000; // Phase is 0 EPwm2Regs.TBCTR = 0x0000; // Clear counter EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV2; // Clock ratio to SYSCLKOUT EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV2;