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.
配置一组EPWM触发ADC中断(SOCA),在ADC中断中配置三组同步的EPWM输出波形的频率、占空比以及死区时间,发现三组EPWM与晶振不同步导致实际配置的频率不符合预期是什么原因呢?我在ADC中断中配置Time Base 计数器初始化全零 可以保证EPWM同步,但其与晶振不同步,如果不配置时基计数器,EPWM与外部晶振同步,但三组之间无法同步
发现三组EPWM与晶振不同步导致实际配置的频率不符合预期是什么原因呢?
与晶振不同步能详细说下吗?你是这样配置的还是观测到的结果是这样?
你改变 TBPRD、CMPx 等相关参数的时候使用的是立即装载模式还是影子寄存器模式?
我依照TI默认device.h中定义的外部晶振选中20MHz,并将系统频率定为120MHz,我是将EPWM波形通过GPIO输出,用示波器测量实际输出波形观测到的结果;
TBPRD\CMPX使用的影子寄存器模式,我不是直接修改寄存器,而是通过TI给的相关配置函数走位带操作寄存器的;我通过2800157的GPIO口将晶振波形和EPWM波形都输出出来,通过一个GPIO的翻转来判断程序进入和退出ADC中断的时间;
与晶振同步的情况:当我在ADC中断外不去初始化三组目标PWM波的频率和占空比,进入ADC中断后也不配置TimeBaseCounter清零,此时观测寄存器内三组目标PWM的TimeBaseCounter在GPIO翻转时的计数值并不相同且与产生中断的EPWM模组时基计数值也不同,此时的结果是四组EPWM均不同步。
与晶振不同步的情况:同样在ADC中断外不去初始化三组目标PWM波的频率和占空比,进入ADC中断后配置四组EPWMTimeBaseCounter清零,此时观测寄存器内三组目标PWM的TimeBaseCounter在GPIO翻转时的计数值相同且与产生中断的EPWM模组时基计数值也相同,此时的结果是四组EPWM同步。但示波器观测晶振波形发现与四组EPWM不同步;
由于每次进入中断都会将EPWM模组的时基计数器清零,所以这个不同步我能理解,但是需要去规避这个问题
我的目标是在ADC中断前使EPWM模块上下桥均输出低电平,ADC中断中配置波形产生带有死区的上下桥互补的EPWM脉冲,我现在的做法是在进入中断前先对目标EPWM进行初始化频率配置,默认上下桥独立,这样能得到上下桥输出低电平,进入中断后不用配置时基计数器也能得到同步的PWM波形;但是这样带来了一个新问题,那就是在中断中配置的三组EPWM波其变频空间受到钳制,我测试下超过16.7Hz中断采样的时间就大于采样周期了。
楼上16.7Hz打错了,应该是16.7kHz。有一个问题想请教一下,同一组EPWM模组上下桥的频率可以单独自由配置吗?我在寄存器中每个EPWM module只看到一个TBPRD周期寄存器