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 OCP OVP问题

Guru**** 2539810 points


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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1090375/ucd3138-ucd3138hsfbevm-ocp-ovp-problem

部件号:UCD3138

大家好,我最近学习 了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的理解 是否正确?

谢谢!

 

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

    您好,

    通过比较器禁用OVP和OCP的修改是正确的。 它们是从比较器关闭的硬件。 另一种保护来自基于ADC12的固件关闭。 请尝试同时禁用固件关闭。

    此致,

    Sean

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

    请注意,代码也使用ACOMP_D逐周期运行OVP。  下面是代码:

    void init_ipri_cycle_By_cycle (void)//模拟比较器3 (AD04引脚)

    //模拟比较器3 (AD04引脚)。

    // FaultMuxRegs.ACOMPCTRL1.bit.ACOMP_D_thereh = 40;//分辨率为19.5mv/bit,27A CYC
    FaultMuxRegs.ACOMPCTRL1.bit.ACOMP_D_POL = 1;
    FaultMuxRegs.ACOMPCTRL1.bit.ACOMP_D_SEL = 0;

    FaultMuxRegs.DPWM0CLIM.bit.ACOMP_D_EN = 1;
    FaultMuxRegs.DPWM1CLIM.bit.ACOMP_D_EN = 1;
    FaultMuxRegs.DPWM2CLIM.bit.ACOMP_D_EN = 0;
    FaultMuxRegs.DPWM3CLIM.bit.ACOMP_D_EN = 0;

    下面是此代码,用于将"按周期循环"电流限制配置到DPMM中。

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

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

    Dpwm2Regs.DPWMCTRL0.bit.CBC_PWM_AB_EN = 0;
    Dpwm2Regs.DPWMCTRL0.bit.CBC_ADV_CNT_EN = 0;

    Dpwm3Regs.DPWMCTRL0.bit.CBC_PWM_AB_EN = 0;
    Dpwm3Regs.DPWMCTRL0.bit.CBC_ADV_CNT_EN = 0;

    逐周期运行正是它所暗示的,它在每个周期上工作当电流超过限制时,它会关闭DPWM输出。 在下一个周期中,如果电流低于限制,它们可以自由再次打开。

    我相信这就是你所看到的。   

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

    感谢您的回复!

    我注意到AD04用于 初级电流保护。但我只是更改了输出电流限制,初级电流限制没有更改。

    从有关 输出电流限制的代码来看,OCP不是周期限制模式,它应该像OVP一样关闭DPWM。   

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

    感谢您的回复!

    我根据ADC12检查了保护,如下所示

    在芯片中,就像这样

    我不理解固件的哪个部分可以直接关闭DPWM?

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

    我查看了代码。 固件关闭已被取出。

    奇怪的是,当OCP阈值低于2A时,输出电压暂时关闭, 然后再次打开并持续打开。 我怀疑ACOMP被触发并关闭一次,然后恢复。 您可以尝试其他方式。 在代码中禁用ACOMP_E关机,不要更改OCP故障设置,而是增加高于 OCP阈值的负载电流。