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:有关 CCB 的问题

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1495882/ucd3138-a-question-about-ccb

器件型号:UCD3138

工具/软件:

CH1:DPWM0A CH2:DPWM0B ch3:AD03

拓扑是降压。 因此、dutu 可能高于50%。DPWM 模式为 多模式。 要求 仅对 DPWM0A 使用 CBC、而 DPW0B 占空比与 DPWM0A 匹配。 DPWM 设置如下所示:

在数据表(页49表2-5)中、已设置上述寄存器。 但在测试波形中、DPW0B 与 DPWM0A 不匹配。  

FaultMuxRegs.ACOMPCTRL0.bit.ACOMP_B_THRESH = 100;
FaultMuxRegs.ACOMPCTRL0.bit.ACOMP_B_SEL = 0;/*为跳闸使用阈值寄存器*/
FaultMuxRegs.ACOMPCTRL0.bit.ACOMP_B_POL = 1;/*高于 THRESH 跳变*/
FaultMuxRegs.DPWM0CLIM.bit.ACOMP_B_EN = 1;
FaultMuxRegs.DPWM1CLIM.bit.ACOMP_B_EN = 1;

您能帮助我看看哪个寄存器没有设置吗? 非常感谢!

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

    您好、Liwei、

    您能展示 DPWM0初始化吗? 看起来甚至在 ACOMP_B 跳变之前、DPWM0A 和 DPWM0B 相位之间已经存在重叠。 即使 CBC 被禁用、仍然存在重叠吗? 不应该有任何时间 DPWM0A 和 DPWM0B 处于这样的状态  亮起 否则可能会出现过冲。  

    此外、如果 DPWM0B 占空比与 DPWM0A 占空比匹配、那么如果 CBC 将 DPWM0A 从 Ex 削减。 40%至20%、那么由于 B 相的 CBC 未启用、DPWM0B 占空比将保持在40%。 这是您需要的行为吗?

    此致、

    Jonathan Wong

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

    您好、Jonathan Wong:

       DPWM0A 初始化如下所示:

    Dpwm0Regs.DPWMEV1.all = 20;
    Dpwm0Regs.DPWMEV3.all =(PMBUS_DCDC_CONFIG[0].period >> 1);
    Dpwm0Regs.DPWMCTRL1.bit.event_up_sel = 1;
    Dpwm0Regs.DPWMCTRL0.bit.PWM_MODE = 2;
    Dpwm0Regs.DPWMCTRL0.bit.PWM_EN = 1;
    Dpwm0Regs.DPWMCTRL1.bit.SYNC_FET_EN =0;
    Dpwm0Regs.DPWMCTRL1.bit.GLOBAL_PERIOD_EN = 1;
    Dpwm0Regs.DPWMCTRL1.bit.check_override = 1;
    Dpwm0Regs.DPWMCTRL1.bit.ALL_PHASE_CLK_ENA = 1;
    Dpwm0Regs.DPWMCTRL1.bit.GPIO_A_EN = 0;
    Dpwm0Regs.DPWMCTRL1.bit.GPIO_B_EN = 0;
    Dpwm0Regs.DPWMCTRL2.bit.SAMPLE_TRIG_1_EN = 1;
    Dpwm0Regs.DPWMCTRL2.bit.sample_TRIG1_oversample = 3;
    Dpwm0Regs.DPWMCTRL2.bit.SAMPLE_TRIG1_MODE = 0;
    Dpwm0Regs.DPWMSAMPTRIG1.all =(PMBUS_DCDC_CONFIG[0].period);
    Dpwm0Regs.DPWMCTRL0.bit.MSYNC_SLAVE_EN = 0;/* DPWm0是主器件*/
    Dpwm0Regs.DPWMCTRL0.bit.BLANK_A_EN = 1;
    Dpwm0Regs.DPWMBLKABEG.all = 20;
    Dpwm0Regs.DPWMBLKAEND.ALL =(PMBUS_DCDC_CONFIG[0].period>>1);
    Dpwm0Regs.DPWMCTRL0.bit.BLANK_B_EN = 1;
    Dpwm0Regs.DPWMBLKBBEG.all =(PMBUS_DCDC_CONFIG[0].period >> 1);
    Dpwm0Regs.DPWMBLKBEND.ALL =(PMBUS_DCDC_CONFIG[0].period>>2);  

    DPWM0A 和 DPWM0B 最大占空比可能为96%、因此 DPWM0A 和 DPWM0B 相位之间存在重叠。 DPWM 模式是多模式。 如果 CBC 将 DPWM0A 从 Ex.80%削减到50%、DPWM0B 占空比将匹配到50%。  这是可能的吗?

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

    您好、Liwei、

    我明天会作出回应。

    此致、

    Jonathan Wong

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

    您好、Liwei、

    如果 CBC 将 DPWM0A 从80%切割到50%、并且您还希望将 DPWM0B 切割到50%、那么我认为最简单的方法是也为 DPWM0B 激活 CBC。 如果您不想这样做、那么是否可以使用 DPWM0A 和 DPWM1A 并且将 DPWM0A 作为 DPWM1A 的主器件? 它可以是 DPWM1A、DPWM2A 或 DPWM3A。

    请注意、您可以通过点击 Insert →Code 并选择编程语言来插入代码。 下面是 E2E 代码格式的 DPWM1初始化示例。

    void init_dpwm1(void) // DPWM1B is used to drive 1st phase 
    {
    	Dpwm1Regs.DPWMCTRL0.bit.PWM_EN = 0;  //disable everything
    
    	Dpwm1Regs.DPWMCTRL1.bit.GPIO_A_EN = 1; //turn off DPWM1A for now
    	Dpwm1Regs.DPWMCTRL1.bit.GPIO_B_EN = 1; //turn off DPWM1B for now
    
        // Enable Current Limit and Set min duty cycle to verify.
        Dpwm1Regs.DPWMCTRL0.bit.CBC_PWM_AB_EN = 1; // Enable cycle by cycle current limit.
        Dpwm1Regs.DPWMCTRL0.bit.BLANK_B_EN = 1;      // Enable blanking so we can see a min pulse for curr lim
        Dpwm1Regs.DPWMBLKBBEG.all = 0x0000;
        Dpwm1Regs.DPWMBLKBEND.all = 0x0500;
    
    	Dpwm1Regs.DPWMFLTCTRL.bit.B_MAX_COUNT = 2;
    	Dpwm1Regs.DPWMFLTCTRL.bit.ALL_FAULT_EN = 1; //enable this for OVP
    
    	Dpwm1Regs.DPWMCTRL2.bit.SAMPLE_TRIG_1_EN = 1; //enable sample trigger1
    
    #if(PFC_TYPE == INTERLEAVED)//if this is interleaved PFC
    	Dpwm1Regs.DPWMCTRL0.bit.PWM_MODE = 3; //triangular mode
    //	Dpwm1Regs.DPWMCTRL2.bit.SAMPLE_TRIG1_OVERSAMPLE = 0; //NO oversampling.
    	Dpwm1Regs.DPWMCTRL1.bit.EVENT_UP_SEL = 0; //update right away
    #elif(PFC_TYPE == BRIDGELESS)//if this is bridgeless PFC
    	Dpwm1Regs.DPWMCTRL0.bit.PWM_MODE = 3; //triangular mode
    //	Dpwm1Regs.DPWMCTRL2.bit.SAMPLE_TRIG1_OVERSAMPLE = 0; //NO oversampling.
    	Dpwm1Regs.DPWMCTRL1.bit.EVENT_UP_SEL = 0; //update right away
    #else //single phase
    #if ((UCD3138A==1)||(UCD3138064A==1)||(UCD3138A64A==1)||(UCD3138128A==1)||(UCD3138A64==1)||(UCD3138128==1))
    	Dpwm1Regs.DPWMEV1.all = 132*4; //aviod 132ns events update window
    	Dpwm1Regs.DPWMEV3.all = 132*4; //aviod 132ns events update window
    #else //non A version
    	Dpwm1Regs.DPWMEV1.all = 290;
    	Dpwm1Regs.DPWMEV3.all = 290;//aviod 72ns events update window
    #endif //((UCD3138A==1)||(UCD3138064A==1)||(UCD3138A64A==1)||(UCD3138128A==1))
    	Dpwm1Regs.DPWMCTRL0.bit.PWM_MODE = 2; //multi mode
    //	Dpwm1Regs.DPWMCTRL2.bit.SAMPLE_TRIG1_OVERSAMPLE = 3; //8X oversampling.
    	Dpwm1Regs.DPWMCTRL1.bit.EVENT_UP_SEL = 1; //update at end of period
    #endif
    
    	Dpwm1Regs.DPWMCTRL0.bit.CLA_EN = 1;
    	Dpwm1Regs.DPWMCTRL0.bit.PWM_EN = 1; //enable OK here, because nothing will happen until DPWM and front end are globally enabled 
    }

    此致、

    Jonathan Wong

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

    您好、Jonathan Wong:

       如果 CBC 将 DPWM0A 从80%切割到50%、并且您还希望将 DPWM0B 切割到50%、那么我认为最简单的方法是也为 DPWM0B 激活 CBC。

      是的。 我做了。 但发生故障后、DPWM0B 不会激活 CBC。 您可以看到上面的波形。

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

    您好、Liwei、

    我认为您的原始波形显示了在 DPWM0A 上启用 CBC  系统 。 在原始波形中是否也启用了 DPWM0B 的 CBC?

    此致、

    Jonathan Wong