大致弄清了EPWM中断的设置。 首先需知道TBCLK的值。此值由EPwmXRegs.TBCTL.bit.HSPCLKDIV 和EPwmXRegs.TBCTL.bit.CLKDIV这两个值来决定 (X代表第X个EPWM中断)。这两个值与具体决定TBCLK值的值有个对应表。
即 A = HSPCLKDIV * 2 (HSPCLKDIV = 000H时例外,A=1) B = CLKDIV^2 (CLKDIV = 000H时例外,B=1) 而 TBCLK = SYSCLKOUT / (A*B) 程序中, HSPCLKDIV = 1, CLKDIV = 1, 则对应的 A = 2 , B = 2 另,SYSCLKOUT设置为60M
所以 TBCLK = 60M / (2*2) = 15M , 换成时值为 TBCLK = 1 / 15M = 6.6667e-008 (s)
接下来,设置PWM的“控制”(?)模式,共有三种 2模式 :UP-DOWN COUNT MODE 1模式 :DOWM COUNT MODE 0模式 :UP COUNT MODE 在2模式下,EPWM中断的周期时间值 Tpwm = 2 * TBPRD * TBCLK 而在0和1模式下,EPWM中断的周期时间值 Tpwm =(TBPRD+1)* TBCLK
在InitAdc()函数中, EPwm1Regs.TBCTL.bit.CTRMODE = 0; EPwm1Regs.TBPRD = 0x06FF; //1791 所以 Tpwm =(1791+1)* TBCLK = 1792 * 6.6667e-008 = 0.00011946667(s)
所以Adc采样率(Adc采样由ePWM中断来驱动) Fs_adc = Fpwm = 1 / Tpwm = 9370 Hz = 8.3kHz |
联系客服