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.

TMS320F280033: HRPWM频率调整,实际输出PWM频率抖动问题

Part Number: TMS320F280033


你好,我现在正尝试利用28033实现HRPWM功能。

测试的时候发现,示波器观察到的PWM脉冲频率会在设定频率附近抖动,当设定频率合适(TBPRDHR=0)时观察到输出PWM脉冲频率稳定不抖动。

程序中根据手动设定的频率计算TBPRD和TBPRDHR,HRCNFG[AUTOCONV]=1;手动修改频率时才会更新TBPRD和TBPRDHR。

下面是录制的一些波形以及DSP寄存器值(DSP运行频率120MHz):

1.设定201kHz,TBPRD=298,TBPRDHR=0x8200;可以看到示波器测量到的频率在200.66kHz~201.36kHz之间波动,平均值是201kHz

2.设定200kHz,TBPRD=300,TBPRDHR=0x0000;可以看到示波器测量到的频率稳定在200kHz

3.设定501kHz,TBPRD=119,TBPRDHR=0xC300;可以看到示波器测量到的频率在498.8kHz~503.7kHz间波动,平均值是501kHz

4.设定500kHz,TBPRD=120,TBPRDHR=0x0000;可以看到示波器测量到的频率稳定在500kHz

5.设定1001kHz,TBPRD=59,TBPRDHR=0xF100;可以看到示波器测量到的频率在993.9kHz~1.01MHz间波动,平均值是1001kHz

6.设定1000kHz,TBPRD=60,TBPRDHR=0x0000;可以看到示波器测量到的频率稳定在1000kHz

7.设定999kHz,TBPRD=59,TBPRDHR=0xF100;可以看到示波器测量到的频率在991.4kHz~1.0MHz间波动,平均值是999kHz

请问,上述情况是正常的吗?如果不正常,可能问题出现在哪里呢?

附上HRPWM相关配置代码:

	EPwm1Regs.HRCNFG.all				= 0;
	EPwm1Regs.HRCNFG.bit.EDGMODE		= HR_BEP;
	EPwm1Regs.HRCNFG.bit.EDGMODEB	= HR_BEP;
	EPwm1Regs.HRCNFG.bit.CTLMODE		= HR_CMP;
	EPwm1Regs.HRCNFG.bit.CTLMODEB	= HR_CMP;
	EPwm1Regs.HRCNFG.bit.HRLOAD		= HR_CTR_ZERO_PRD;
	EPwm1Regs.HRCNFG.bit.HRLOADB		= HR_CTR_ZERO_PRD;
	EPwm1Regs.HRCNFG.bit.AUTOCONV	= 1;
	EPwm1Regs.HRPCTL.bit.HRPE		= 1;
	
	

  • 首先,使能了高精度之后,波形边沿的压摆率确实没有普通模式好,上升时间和下降时间都会有显著增加,并且会有超调量、会产生过冲,稳定时间也会增加。相比之下,普通模式下的波形基本就是一个非常标准的方波。

    其次,使能了高精度之后,对示波器的观测能力也有一定的要求。以TBCLK=100MHz为例,普通步长是10ns,高精度步长的典型值是150ps,一般的示波器很难体现这么微小的变化。我之前用泰克的TDS2024B(非常普通的一台示波器,基本就是大学实验室里的基本款)测量过,如果一步一步的增加高精度步长,波形抖动的根本看不出来什么;我当时的方法就是每次增加100个HR值,就能明显的观察到一个非常稳定的15ns的步进变化。就算波形有抖动,你以一个固定的位置来观测,很容易就能看出来的。