微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI电源管理交流 > PWR027_PSFB运行时,直流侧缓慢抬升电压到10V左右DPWM就关闭了,这是什么原因呢?

PWR027_PSFB运行时,直流侧缓慢抬升电压到10V左右DPWM就关闭了,这是什么原因呢?

时间:10-02 整理:3721RD 点击:

我把init_protection()中的欠压保护init_uvp()给去掉,然后缓慢抬升电压,发现当抬升到输入10V左右(输出电压达到2V),DPWM就关闭了。

之后在寻找问题时发现,将init_protection()中的三条FaultMuxRegs.ACOMPCTRL0.bit.ACOMP_EN = 1; 给屏蔽了,电压可以继续抬升。

为了找出是哪个模拟错误,我先后把相关的模拟比较使能都关闭了,而FaultMuxRegs.ACOMPCTRL0.bit.ACOMP_EN = 1仍在,电压又无法抬升。

***********************************************************************

这是什么原因呢?  我这样调试是否有些欠妥?我关闭的模拟比较使能包括:

   init_ocp(void)中的:  //   FaultMuxRegs.DPWM0FLTABDET.bit.ACOMP_E_EN = 1;
                                         //  FaultMuxRegs.DPWM1FLTABDET.bit.ACOMP_E_EN = 1;
                                         // FaultMuxRegs.DPWM2FLTABDET.bit.ACOMP_E_EN = 1;
                                         //  FaultMuxRegs.DPWM3FLTABDET.bit.ACOMP_E_EN = 1;    

     //Dpwm0Regs.DPWMFLTCTRL.bit.ALL_FAULT_EN = 1;
    //Dpwm0Regs.DPWMFLTCTRL.bit.AB_MAX_COUNT = 0; 
    //Dpwm0Regs.DPWMFLTCTRL.bit.A_MAX_COUNT = 0;
    //Dpwm0Regs.DPWMFLTCTRL.bit.B_MAX_COUNT = 0; 
    //Dpwm1Regs.DPWMFLTCTRL.bit.ALL_FAULT_EN = 1;
    //Dpwm1Regs.DPWMFLTCTRL.bit.AB_MAX_COUNT = 0;
    //Dpwm1Regs.DPWMFLTCTRL.bit.A_MAX_COUNT = 0;
    //Dpwm1Regs.DPWMFLTCTRL.bit.B_MAX_COUNT = 0;
    //Dpwm2Regs.DPWMFLTCTRL.bit.ALL_FAULT_EN = 1;
    //Dpwm2Regs.DPWMFLTCTRL.bit.AB_MAX_COUNT = 0;
    //Dpwm2Regs.DPWMFLTCTRL.bit.A_MAX_COUNT = 0;
    //Dpwm2Regs.DPWMFLTCTRL.bit.B_MAX_COUNT = 0;
    //Dpwm3Regs.DPWMFLTCTRL.bit.ALL_FAULT_EN = 1;
    //Dpwm3Regs.DPWMFLTCTRL.bit.AB_MAX_COUNT = 0;
    //Dpwm3Regs.DPWMFLTCTRL.bit.A_MAX_COUNT = 0;
    //Dpwm3Regs.DPWMFLTCTRL.bit.B_MAX_COUNT = 0; 

void init_cbc(void)中的:

                          //FaultMuxRegs.DPWM0CLIM.bit.ACOMP_F_EN = 1;
                         // FaultMuxRegs.DPWM1CLIM.bit.ACOMP_F_EN = 1;
                         // FaultMuxRegs.DPWM2CLIM.bit.ACOMP_F_EN = 1;
                         // FaultMuxRegs.DPWM3CLIM.bit.ACOMP_F_EN = 1;

                      //Dpwm0Regs.DPWMCTRL0.bit.CBC_PWM_AB_EN = 1;

                     //Dpwm1Regs.DPWMCTRL0.bit.CBC_PWM_AB_EN = 1;

                      //Dpwm2Regs.DPWMCTRL0.bit.CBC_PWM_AB_EN = 1;

                      //Dpwm3Regs.DPWMCTRL0.bit.CBC_PWM_AB_EN = 1;

void init_ovp(void)中的:

//FaultMuxRegs.DPWM0FLTABDET.bit.ACOMP_B_EN = 1;
//FaultMuxRegs.DPWM1FLTABDET.bit.ACOMP_B_EN = 1;
//FaultMuxRegs.DPWM2FLTABDET.bit.ACOMP_B_EN = 1;
//FaultMuxRegs.DPWM3FLTABDET.bit.ACOMP_B_EN = 1;
//Dpwm0Regs.DPWMFLTCTRL.bit.ALL_FAULT_EN = 1;
//Dpwm1Regs.DPWMFLTCTRL.bit.ALL_FAULT_EN = 1;
//Dpwm2Regs.DPWMFLTCTRL.bit.ALL_FAULT_EN = 1;
//Dpwm3Regs.DPWMFLTCTRL.bit.ALL_FAULT_EN = 1;

void  init_dpwm(void)中的:

//FaultMuxRegs.DPWM0CLIM.bit.ANALOG_PCM_EN   = 1; 
//FaultMuxRegs.DPWM1CLIM.bit.ANALOG_PCM_EN   = 1; 
//FaultMuxRegs.DPWM2CLIM.bit.ANALOG_PCM_EN   = 1; 
//FaultMuxRegs.DPWM3CLIM.bit.ANALOG_PCM_EN   = 1; 

inline void idle_state_handler(void)中的:

//FaultMuxRegs.ACOMPCTRL0.bit.ACOMP_B_INT_EN = 1;
//FaultMuxRegs.ACOMPCTRL2.bit.ACOMP_E_INT_EN = 1;

 

除了模拟比较器,还有Fault引脚也是可以触发保护的。

看下状态机是停在哪个状态了。

FAULTMUXRAWSTAT  以及FAULTMUXINTSTAT 都fresh了,  显示都是0

观测发现,从上电开始,SUPPLY_STATE一直保持在STATE_FAULT状态。

给原边慢慢上电,仍然有输出,FAULTMUXINTSTAT,FAULTMUXRAWSTAT都有过错误ACOMP_G,ACOMP_C。

终于发现问题了,是interrupts.c中的

		if(FaultMuxRegs.FAULTMUXRAWSTAT.bit.ACOMP_C==1) //under voltage导致的
但是又有疑问,我已经把void init_uvp(void)给屏蔽了,并且硬件电路也没有连AD08,怎么还会导致
FaultMuxRegs.FAULTMUXRAWSTAT.bit.ACOMP_C==1的发生?

cxbah agag

终于发现问题了,是interrupts.c中的

		if(FaultMuxRegs.FAULTMUXRAWSTAT.bit.ACOMP_C==1) //under voltage导致的
但是又有疑问,我已经把void init_uvp(void)给屏蔽了,并且硬件电路也没有连AD08,怎么还会导致
FaultMuxRegs.FAULTMUXRAWSTAT.bit.ACOMP_C==1的发生?

AD08是悬空么? 

如果暂时不用,可以将其接地。

cxbah agag

FAULTMUXRAWSTAT  以及FAULTMUXINTSTAT 都fresh了,  显示都是0

这个寄存器是读一次便被清空的。需要先将其的值赋给一个自定义的变量。

麻烦请问下您的代码是如何得到呢?我也需要

UCD3138 PSFB EVM-027的程序,请问可以共享下吗?

你好TI的工作人员,请问你能给我发一份

UCD3138 PSFB EVM-027的程序吗?十分感谢我的邮箱是einsteinzhang@icloud.com

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top