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.

UCD3138: UCD3138HSFBEVM-029开发板过流保护和过压保护问题?

Part Number: UCD3138

您好,我最近在学习使用UCD3138HSFBEVM-029开发板,对于UCD3138的过流保护和过压保护机制有些疑问。开发板的过流保护和过压保护代码如下

void init_vout_fault(void) // Analog comparator B
{


  FaultMuxRegs.ACOMPCTRL0.bit.ACOMP_B_POL = 1;
  FaultMuxRegs.ACOMPCTRL0.bit.ACOMP_B_SEL = 0;

  FaultMuxRegs.ACOMPCTRL0.bit.ACOMP_EN = 1; 

  FaultMuxRegs.DPWM0FLTABDET.bit.ACOMP_B_EN = 1; // ACOMP-B will turn off DPWM0
  FaultMuxRegs.DPWM1FLTABDET.bit.ACOMP_B_EN = 1; // ACOMP-B will turn off DPWM1
  FaultMuxRegs.DPWM2FLTABDET.bit.ACOMP_B_EN = 0; // ACOMP-B will turn off DPWM2
  FaultMuxRegs.DPWM3FLTABDET.bit.ACOMP_B_EN = 0; // ACOMP-B will turn off DPWM3

	configure_ovp();

}


void init_iout_fault(void) // Using analog comparator E
{

  FaultMuxRegs.ACOMPCTRL2.bit.ACOMP_E_POL = 1;
  FaultMuxRegs.ACOMPCTRL2.bit.ACOMP_E_SEL = 0;

  FaultMuxRegs.ACOMPCTRL0.bit.ACOMP_EN = 1; 
 
  FaultMuxRegs.DPWM0FLTABDET.bit.ACOMP_E_EN = 1; // ACOMP-E will turn off DPWM0
  FaultMuxRegs.DPWM1FLTABDET.bit.ACOMP_E_EN = 1; // ACOMP-E will turn off DPWM1
  FaultMuxRegs.DPWM2FLTABDET.bit.ACOMP_E_EN = 0; // ACOMP-E will turn off DPWM2
  FaultMuxRegs.DPWM3FLTABDET.bit.ACOMP_E_EN = 0; // ACOMP-E will turn off DPWM3

  configure_iout_ocp();
  iout_comp_thresh =	FaultMuxRegs.ACOMPCTRL2.bit.ACOMP_E_THRESH;
}

开发板使用了模拟比较器B和模拟比较器E作为过压保护和过流保护的阈值判断比较器,然后通过比较器发送错误信号给DPWM0和DPWM1使其关闭。

但是我在测试时,发现出现过压时,电源能正常关机,保护取消后重启可以恢复运行。如下图:

但是我将输出电流增加到过流保护值时,过流保护并没有触发。当保持电源输出电流不变,此时将过流保护值设置到输出电流以下时,会在一瞬间触发过流保护,电源输出掉电,但是电源马上又自动重启。而此时输出还是在过流保护值以上。如下图所示:

进一步,为了测试我的疑问,我修改了代码,将比较器B和比较器E与DPWM0和DPWM1的连接断开,代码改成如下:

void init_vout_fault(void) // Analog comparator B
{

  FaultMuxRegs.ACOMPCTRL0.bit.ACOMP_B_POL = 1;
  FaultMuxRegs.ACOMPCTRL0.bit.ACOMP_B_SEL = 0;

  FaultMuxRegs.ACOMPCTRL0.bit.ACOMP_EN = 1; 

  FaultMuxRegs.DPWM0FLTABDET.bit.ACOMP_B_EN = 0; // ACOMP-B will turn off DPWM0
  FaultMuxRegs.DPWM1FLTABDET.bit.ACOMP_B_EN = 0; // ACOMP-B will turn off DPWM1
  FaultMuxRegs.DPWM2FLTABDET.bit.ACOMP_B_EN = 0; // ACOMP-B will turn off DPWM2
  FaultMuxRegs.DPWM3FLTABDET.bit.ACOMP_B_EN = 0; // ACOMP-B will turn off DPWM3

	configure_ovp();

}


void init_iout_fault(void) // Using analog comparator E
{

  FaultMuxRegs.ACOMPCTRL2.bit.ACOMP_E_POL = 1;
  FaultMuxRegs.ACOMPCTRL2.bit.ACOMP_E_SEL = 0;

  FaultMuxRegs.ACOMPCTRL0.bit.ACOMP_EN = 1; 
 
  FaultMuxRegs.DPWM0FLTABDET.bit.ACOMP_E_EN = 0; // ACOMP-E will turn off DPWM0
  FaultMuxRegs.DPWM1FLTABDET.bit.ACOMP_E_EN = 0; // ACOMP-E will turn off DPWM1
  FaultMuxRegs.DPWM2FLTABDET.bit.ACOMP_E_EN = 0; // ACOMP-E will turn off DPWM2
  FaultMuxRegs.DPWM3FLTABDET.bit.ACOMP_E_EN = 0; // ACOMP-E will turn off DPWM3

  configure_iout_ocp();
  iout_comp_thresh =	FaultMuxRegs.ACOMPCTRL2.bit.ACOMP_E_THRESH;
}

奇怪的是,此时仍能正常触发过压保护,过流保护的现象也一致。是不是我对UCD3138的故障保护原理理解有问题?