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.

[参考译文] TMS320F28335:在更改 PHSDIR 后、ePWM 的波形在大约2到3个周期内保持异常低电平

Guru**** 2830615 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1246445/tms320f28335-the-waveform-of-epwm-will-stay-abnormal-low-about-2-to-3-period-after-change-the-phsdir

器件型号:TMS320F28335

大家好、

我的客户更改 PHSDIR 会在 ePWM 的 ISR 期间正常运行。 和 ePWM 的波形、这改变了 PHSDIR 更改参数后的2到3个周期内保持异常低电平、 PHSDIR

EPwm5Regs.TBSTS.all=0;
	        EPwm5Regs.TBPHS.half.TBPHS=0;     
	        EPwm5Regs.TBCTR=0;                

	        EPwm5Regs.CMPCTL.all=0x50;        
	        EPwm5Regs.CMPA.half.CMPA =750*0.5;   
	        EPwm5Regs.CMPB=0;

	        EPwm5Regs.AQCTLA.all=0x6;        
	                                                  
	        EPwm5Regs.AQCTLB.all=0;
	        EPwm5Regs.AQSFRC.all=0;
	        EPwm5Regs.AQCSFRC.all=0;

	        EPwm5Regs.TZSEL.all=0x0300;
	        EPwm5Regs.TZCTL.all=0;
	        EPwm5Regs.TZEINT.all=0;
	        EPwm5Regs.TZFLG.all=0;
	        EPwm5Regs.TZCLR.all=0;
	        EPwm5Regs.TZCTL.bit.TZA = 0x2;   
	        EPwm5Regs.TZCTL.bit.TZB = 0x2;
	                                                  
	        EPwm5Regs.DBRED=10;              
	        EPwm5Regs.DBFED=10;

	        EPwm5Regs.ETSEL.all=0;           
	        EPwm5Regs.ETFLG.all=0;
	        EPwm5Regs.ETCLR.all=0;
	        EPwm5Regs.ETFRC.all=0;

	        EPwm5Regs.PCCTL.all=0;
	        EPwm5Regs.TBCTL.all=0x0020+200E;   
	        EPwm5Regs.TBCTL.bit.PHSEN = 0;         
	        EPwm5Regs.TBPRD=750;

if(PWM2_CC_Duty < -0.4)
              {
               PWM2_CC_Duty1 = 0.4;
               PWM2_CC_Duty = -0.4;
      	       EPwm5Regs.TBCTL.all=0x0020+200E;
               EPwm5Regs.TBPHS.half.TBPHS=PWM2_CC_Duty1*phase_shift_cycle;

              }
              else if(PWM2_CC_Duty >= -0.4 && PWM2_CC_Duty < -0.007)
              {
              PWM2_CC_Duty1 = -PWM2_CC_Duty;
      	      EPwm5Regs.TBCTL.all=0x0020+200E;
              EPwm5Regs.TBPHS.half.TBPHS=PWM2_CC_Duty1*phase_shift_cycle;
              }
              
                if(PWM2_CC_Duty >= 0 && PWM2_CC_Duty <= 0.4)
                 {
         	     EPwm5Regs.TBCTL.all=0x0020+000E;   
         	     PWM2_CC_Duty1 = PWM2_CC_Duty;
                 EPwm5Regs.TBPHS.half.TBPHS=PWM2_CC_Duty1*phase_shift_cycle;
                 }

同步 信号生成日期 CTR = CMPB = 0 周期 阈值为 相同 。 还有其他操作、例如在 ISR 期间更改占空比。 在本客户案例中、基极 PWM 是 ePWM1 ePWM5 系统遇到此问题。

以下是客户的项目:

e2e.ti.com/.../Thread_5F00_756634.zip

以及客户 重现问题的步骤:

e2e.ti.com/.../Thread_5F00_756634.mp4

GPIO0/1 属于 ePWM1 GPIO8/9 属于 ePWM5

--

谢谢、此致

耶鲁

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,耶鲁,

    当客户 更改方向时、他们是否完全更新 TBCTR? 通过改变方向、您可能会丢失出现的 AQ 事件、从而导致您的输出在意料之外的情况下保持开启/关闭。

    为什么他们要在运行时更改方向?  

    此致!

    马瑞安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ryan、

    感谢您的答复。

    如果更改方向,您可能会丢失 AQ 事件,从而导致您的输出在无法预期的情况下保持打开/关闭状态。

    我曾经想到过这一点。 但是、波形丢失时间花费的时间太长、几乎是几个 TBPRD。

    它们更改 PHSDIR 以控制相位是否滞后或超前。 这似乎是一个好主意。 "那你打算怎么办?"

    --

    谢谢、此致

    耶鲁

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,耶鲁,

    此主题可能有助于客户确保正确改变方向。

    https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1158359/tms320f28379d-can-i-change-epwm-up-down-counting-direction-online

    "当您想要改变方向时、可以读取 TBCTR 值、将该值写入 TBPHS、然后执行软件同步。 考虑到执行 TBPHS 写入和软件同步的时间、您可能必须将 TBPHS 值增加一个或两个计数。"  

    换了方向后、客户似乎没有发出软件同步。

    它们是在其 ISRTimer0中还是在 Phase_SHIFT 中断中更新相位方向?

    此致!

    马瑞安