TI中文支持网
TI专业的中文技术问题搜集分享网站

对于TI DSP移相全桥控制官方历程的一个疑问

最近使用TI 提供的DEMO板(DSP28027移相全桥控制),TI官方提供例程(路径controlSUITE-development_kits-HVPSFB_v1.1-HVPSFB_PCMC-HVPSFB-Main.c)中有两个问题:问题1:在 A1()(定期的执行的函数)函数中有这样的一个语句:if ( (*ePWM[1]).TZFLG.bit.OST == 1 ),有点不太明白:程序为什么要定期查询这个标志位,做什么用。问题2:C2()函数中有这些语句:

if (input_good == 80) 

  {    EPwm1Regs.TZCLR.bit.OST = 1;  // Clear any spurious OC trip     

  EPwm2Regs.TZCLR.bit.OST = 1;  // Clear any spurious OC trip       

EPwm4Regs.TZCLR.bit.OST = 1;  // Clear any spurious OC trip  

 }

TI提供的后面的解释是“Clear any spurious OC trip”,为什么程序要这样设置,为什么要清除标志位,这样做的目的是什么?望各位高手不吝赐教。小弟在此谢过。 

Eric Ma:

yi,

首先需要了解的一点是OST是一次保护动作,配置OST相关寄存器后,如果对应的危险事件发生,会关断PWM引脚。然后用户程序需要对这种出错情况出现后进行相应的处理。假如检测到危险事件消失了,再清除OST事件,PWM才会打开。

所以A1就是判断如果OST出现时,即出现危险事件时,用户程序要做一些什么,比如是指示灯报警,或是继续检测相关信号,看是否危险事件还存在。

C2是当没有危险情况出现了,那么就清除OST事件。

Eric

最近使用TI 提供的DEMO板(DSP28027移相全桥控制),TI官方提供例程(路径controlSUITE-development_kits-HVPSFB_v1.1-HVPSFB_PCMC-HVPSFB-Main.c)中有两个问题:问题1:在 A1()(定期的执行的函数)函数中有这样的一个语句:if ( (*ePWM[1]).TZFLG.bit.OST == 1 ),有点不太明白:程序为什么要定期查询这个标志位,做什么用。问题2:C2()函数中有这些语句:

if (input_good == 80) 

  {    EPwm1Regs.TZCLR.bit.OST = 1;  // Clear any spurious OC trip     

  EPwm2Regs.TZCLR.bit.OST = 1;  // Clear any spurious OC trip       

EPwm4Regs.TZCLR.bit.OST = 1;  // Clear any spurious OC trip  

 }

TI提供的后面的解释是“Clear any spurious OC trip”,为什么程序要这样设置,为什么要清除标志位,这样做的目的是什么?望各位高手不吝赐教。小弟在此谢过。 

user3681076:

回复 Eric Ma:

首先感谢的您的解释,还有点疑问,贴出程序:

void C2(void)

{if (Gui_Vfbin > 11200 && Gui_Vfbin < 13440)   // 350<Vfbin<420

if (input_good >= 100) 

{     if (start_flag == 0)

{  VfbSetSlewed = 2093568;

Gui_VfbSet = 12.2*1024; 

start_flag = 1;

}

}

else

{   input_good++;

if (input_good == 80) 

  {    EPwm1Regs.TZCLR.bit.OST = 1;  // Clear any spurious OC trip     

  EPwm2Regs.TZCLR.bit.OST = 1;  // Clear any spurious OC trip       

EPwm4Regs.TZCLR.bit.OST = 1;  // Clear any spurious OC trip  

 }

}

}

else…………

在C任务中,首先是判断输入电压是否在350~420之间,在此范围的话,在进行计数,使用input_good标志位,我的疑问是,为什么要技术到80时,要清楚OST事件标志位,后面官方给出的解释是Clear any spurious OC trip,我是不太明白,为什么要在80的时候清标志位,请您解释下。小弟在此谢过。

 

 

 

 

 

 

 

 

 

最近使用TI 提供的DEMO板(DSP28027移相全桥控制),TI官方提供例程(路径controlSUITE-development_kits-HVPSFB_v1.1-HVPSFB_PCMC-HVPSFB-Main.c)中有两个问题:问题1:在 A1()(定期的执行的函数)函数中有这样的一个语句:if ( (*ePWM[1]).TZFLG.bit.OST == 1 ),有点不太明白:程序为什么要定期查询这个标志位,做什么用。问题2:C2()函数中有这些语句:

if (input_good == 80) 

  {    EPwm1Regs.TZCLR.bit.OST = 1;  // Clear any spurious OC trip     

  EPwm2Regs.TZCLR.bit.OST = 1;  // Clear any spurious OC trip       

EPwm4Regs.TZCLR.bit.OST = 1;  // Clear any spurious OC trip  

 }

TI提供的后面的解释是“Clear any spurious OC trip”,为什么程序要这样设置,为什么要清除标志位,这样做的目的是什么?望各位高手不吝赐教。小弟在此谢过。 

wang wang hongxing:

回复 user3681076:

看这个程序也有两三周时间了,以下是我的理解,不知是否理解透彻:

这个计数值设定为80是执行80次循环,(每(0.5us*2)执行一次),也就是为100次循环(0.1ms)时执行start_flag=1做准备。

程序中采用了两个COMP模块,comp1执行的斜率补偿功能来控制PCMC电流控制功能,另一个COMP2执行一次性的TPIP跳闸操作。

在汇编代码中,对EPWM1的UP段和DOWN段怎么处理做了明确:UP段由EPWM1A和EPWM2B配对才有功率输出,所以有OST出现时EPWM2B 会FORCE_LOW,DOWN段由EPWM1B和EPWM2A配对才有功率输出,所以有OST出现时EPWM2A 会FORCE_LOW。

对同步整流的处理分轻载,中载和重载分别处理:轻载时关闭同步整流输出,中载时只有重叠输出时才打开对应整流MOS,重载时只有对方重叠时才关闭整流MOS输出。

TRIP_UP(74)和TRIP_DOWN(PRD-68)的执行时为下次COMPB的同步信号输出,以及下次中断信号发生做准备。

汇编中剩下的就是AD采样,2P2Z和DAC_RAMP的调用,没什么特别之处。

最近使用TI 提供的DEMO板(DSP28027移相全桥控制),TI官方提供例程(路径controlSUITE-development_kits-HVPSFB_v1.1-HVPSFB_PCMC-HVPSFB-Main.c)中有两个问题:问题1:在 A1()(定期的执行的函数)函数中有这样的一个语句:if ( (*ePWM[1]).TZFLG.bit.OST == 1 ),有点不太明白:程序为什么要定期查询这个标志位,做什么用。问题2:C2()函数中有这些语句:

if (input_good == 80) 

  {    EPwm1Regs.TZCLR.bit.OST = 1;  // Clear any spurious OC trip     

  EPwm2Regs.TZCLR.bit.OST = 1;  // Clear any spurious OC trip       

EPwm4Regs.TZCLR.bit.OST = 1;  // Clear any spurious OC trip  

 }

TI提供的后面的解释是“Clear any spurious OC trip”,为什么程序要这样设置,为什么要清除标志位,这样做的目的是什么?望各位高手不吝赐教。小弟在此谢过。 

user3681076:

回复 wang wang hongxing:

嗯,谢谢您的回复,不过好像没有回答我的问题。

赞(0)
未经允许不得转载:TI中文支持网 » 对于TI DSP移相全桥控制官方历程的一个疑问
分享到: 更多 (0)