我在程序中进行了如下设置:
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
ePWM1的时钟频率应该是相对于系统主频不分频的。但是测试后发现ePWM的时钟频率不是200MHz而是100MHz,请问这是为什么呢。
Howard Zou:
请问你是如何测试时钟频率的?通过产生一个PWM波然后测量其周期吗?如果是这样,PWM工作在什么模式?
我在程序中进行了如下设置:
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
ePWM1的时钟频率应该是相对于系统主频不分频的。但是测试后发现ePWM的时钟频率不是200MHz而是100MHz,请问这是为什么呢。
xuan yan:
回复 Howard Zou:
是用这种方式测的频率,用的是递增模式的。
我在程序中进行了如下设置:
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
ePWM1的时钟频率应该是相对于系统主频不分频的。但是测试后发现ePWM的时钟频率不是200MHz而是100MHz,请问这是为什么呢。
BO LIU18:
回复 xuan yan:
默认是100MHz的,这个377的手册里有写过,epwmclck是sysclk的一半。不过你再仔细查看下手册有一个寄存器可以设置切换到200MHz。
我在程序中进行了如下设置:
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
ePWM1的时钟频率应该是相对于系统主频不分频的。但是测试后发现ePWM的时钟频率不是200MHz而是100MHz,请问这是为什么呢。
Brian Wang0:
以上两图来自TI官方手册,请注意一下PERCLKDIVSEL.EPWMCLKDIV 这个寄存器,默认情况下会将对系统主频进行分频,应该可以解决您的问题。
手册链接:http://www.ti.com/cn/lit/pdf/spruhm8
我在程序中进行了如下设置:
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
ePWM1的时钟频率应该是相对于系统主频不分频的。但是测试后发现ePWM的时钟频率不是200MHz而是100MHz,请问这是为什么呢。
qiaodi chen:
我也遇到了这个问题,我的理解是这样的:
首先,通过上图可以知道,EPWM的时钟来自于PLLCLK,那么我们的PLLCLK是多少呢?
如果采用TI给的例程文件(.c和.h以及cmd)的话,会发现_LAUNCHXL_28377S并没有被定义,所以这里会执行else部分的代码(单步测过确实如此)。如果晶振是10M(TILAUNCHPAD口袋版是10M)所以我们的PLLCLK=10M*(20+0)/2=100M。还有如果想调整为200M的话,需要先定义_LAUNCHXL_28377S。希望可以解决你的问题。