请教朋友们一个问题,怎样配置寄存器使ePWM模块工作在HRPWM模式呢?先谢谢各位了!
Eric Ma:
hongyue,
HRPWM模块可以说跟PWM模块是相对独立的,HRPWM模块不会影响ePWM模块的配置。
所以ePWM模块你就按照正常的配置。然后添加HRPWM模块的设置就好了。
而HRPWM模块的设置,归根到底就是:当我们在计算占空比或是周期时,会多出来小数点的TBCLK,这时候就可以将这小数点的TBCLK由HRPWM来实现。因为HRPWM的微步长是150ps, 比如0.5 TBCLK/150ps 就是HRPWM要计算的微步长数,载入相应寄存器就可以了。
你可以看一下C:\ti\controlSUITE\device_support\f28m35x\v160\F28M35x_examples_Control\hrpwm_prdupdown_sfo_v7例子,然后看一下HRPWM 的user guide,在芯片主页下方可以找到。
Eric
请教朋友们一个问题,怎样配置寄存器使ePWM模块工作在HRPWM模式呢?先谢谢各位了!
hongyue yu:
回复 Eric Ma:
谢谢Eric,user guide里面计算PWM频率与精度的部分不是很理解,比如说sysclk=50MHz、MEP steps=111,为什么手册里面给出的PWM最高频率为2.5MHz呢,不明白是怎么算出来的?那这样算出来在递增或递减计数时TBPRD的值最小为2119,在可逆计数时TBPRD最小值为1110。
请教朋友们一个问题,怎样配置寄存器使ePWM模块工作在HRPWM模式呢?先谢谢各位了!
Eric Ma:
回复 hongyue yu:
hongyue,
MEP steps = 1/50Mhz / 180ps(手册用这个做例子,实际为150ps) =111. 就是一个TBCLK除以微步长就是多少个总步长的意思。
至于最高PWM频率,我认为是指在这个最高频率下,还能够达到后面十几位的精度。
另外,50M CPU , 2.5MHz的最高频率,up mode , TBPRD 应该是20。
Eric
请教朋友们一个问题,怎样配置寄存器使ePWM模块工作在HRPWM模式呢?先谢谢各位了!
hongyue yu:
回复 Eric Ma:
谢谢Eric,那我是理解的太简单了,那就是说不管MEP steps设置为多少计算TBPRD时仍需按系统时钟(如50MHz)来计算。
还得请教您一个问题,就是关于中断的,我现在使用两个ePWM模块,其中ePWM1一个用来产生中断,产生的中断就是去更新另一个ePWM2模块的计数比较值;ePWM2模块就是控制GPIO管脚的输出波形和计数比较值。因为如果使用同一个ePWM模块的话中断周期会跟着TBPRD的值的增大而增大,所以用另一个ePWM模块去产生中断。现在有个问题就是如果我设置的ePWM1模块的中断周期大于ePWM2模块的计数周期的2倍,也就是说ePWM2模块的计数器已经由0计数到TBPRD值又递减到0,而这时ePWM1仍未产生一次中断也未去更新ePWM2的CMPA/B的值,那此时ePWM2模块在下一个周期计数时就仍是按照先前的CMPA/B的值来控制GPIO管脚的输出。还请Eric帮忙看一下理解的是否正确。谢谢!
请教朋友们一个问题,怎样配置寄存器使ePWM模块工作在HRPWM模式呢?先谢谢各位了!
hongyue yu:
回复 Eric Ma:
谢谢Eric!