大家好,我最近学习 了UCD3138HSFBEVM,该EVM具有OCP和OVP功能,代码是:
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;
}
正如我们所看到的,EVM使用OVP的比较器B和OCP的比较器E,然后将故障信号发送到DPWM0和DPWM1,然后关闭它们。我的理解是否正确?
当我测试OVP时,当我将OVF设置为Vout (输出电压)以下时,可以关闭DPWM, 如下所示:

但是,当我测试OVP时,当我将OC故障设置为低于Iout时,EVM会暂时关闭,并恢复正常, 如下所示:

然后更改代码,断开 比较器B/E和DPWM0/1:
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;
}
但OVP和OCP也可以如上所示触发。
我对OVP和OCP的理解 是否正确?
谢谢!

