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:DPWM 模块

Guru**** 2486875 points
Other Parts Discussed in Thread: UCD3138

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/701316/ucd3138-dpwm-module

器件型号:UCD3138

大家好、我们将 UCD3138用于在次级侧具有同步整流功能的有源钳位正向转换器。 下面是 DPWM 的配置。 是否有人可以验证下面的 DPWM?

DPWM0A =初级_正向_MOSFET

DPWM0B =次级钳位 MOSFET

DPWM1A=初级_Clamp_MOSFET

DPWM1B =次级正向 MOSFET

 

void init_dpwm0_OL (void)// DPWM1B 用于驱动同步 FET

Dpwm0Regs.DPWMCTRL1.bit.global_Period_EN = 1;

Dpwm0Regs.DPWMEV1.ALL = 0;//

Dpwm0Regs.DPWMEV2.all =(周期>> 1);

Dpwm0Regs.DPWMEV3.ALL =(周期>> 1)+死区时间;

Dpwm0Regs.DPWMEV4.ALL =周期-死区时间;

Dpwm0Regs.DPWMCTRL0.bit.PWM_MODE = 0;//设置为正常模式

Dpwm0Regs.DPWMCTRL0.bit.CLA_EN = 1;

Dpwm0Regs.DPWMCTRL1.bit.EVENT_UP_SEL = 1;//事件在周期结束时更新

Dpwm0Regs.DPWMCTRL1.bit.CHECK_OVERRIDE = 1;//通常 CLA = 0被视为故障;设置校验覆盖、以便 CLA=0

Dpwm0Regs.DPWMCTRL1.bit.ALL_PHASE_CLK_ENA = 1;//需要所有相位实现高分辨率

Dpwm0Regs.DPWMSAMPTRIG1.all = 1500;//(周期>> 1);/2100;279*16ns = 4.464us;-5000;//向所有写入以标准化为高分辨率

Dpwm0Regs.DPWMCTRL2.bit.sample_trig_1_EN = 1;

Dpwm0Regs.DPWMCTRL0.bit.PWM_EN = 1;

Dpwm0Regs.DPWMCTRL0.bit.MSYNC_SLAVE_EN =0;// DPWM0为主器件

Dpwm0Regs.DPWMCTRL0.bit.MASTER_SYNC_CNTL_SEL =0;// DPWM0为主器件

//*********

//启用同步 FET

Dpwm0Regs.DPWMCTRL2.bit.IDE_Duty_B_EN = 1;//启用 IDE

//*********

void init_dpwm1_OL (void)// DPWM1B 用于驱动同步 FET

Dpwm1Regs.DPWMCTRL0.bit.PWM_EN = 0;//针对初始化在本地禁用

Dpwm1Regs.DPWMCTRL0.bit.CLA_EN = 1;//默认为1 -使用 CLA

Dpwm1Regs.DPWMPRD.All =周期;//对所有值使用.all,以便缩放匹配

Dpwm1Regs.DPWMEV4.ALL = 0;//将事件1设置为周期的0%(开始)

Dpwm1Regs.DPWMEV3.ALL =(周期>> 1);//将事件2设置为周期的25%

Dpwm1Regs.DPWMEV2.all =(周期>> 1)+死区时间;//将事件3设置为周期的50%

Dpwm1Regs.DPWMEV1.all =周期-死区时间;//将事件4设置为周期的75%

Dpwm1Regs.DPWMCTRL0.bit.D_ENABLE = 1;//占空比为1-D

Dpwm1Regs.DPWMCYCADJA.ALL =死区时间*2;

Dpwm1Regs.DPWMSAMPTRIG1.ALL =(周期)/2;//3/4周期

Dpwm1Regs.DPWMCTRL2.bit.sample_trig_1_EN = 1;//启用1个采样触发器

Dpwm1Regs.DPWMCTRL1.bit.EVENT_UP_SEL = 1;//在周期结束时更新

Dpwm1Regs.DPWMCTRL0.bit.PWM_MODE = 4;//正常模式(这不是默认值)

Dpwm1Regs.DPWMCTRL0.bit.PWM_EN = 1;//本地启用 DPWM0

LoopMuxRegs.DPWMMUX.bit.DPWM1_SYNC_SEL = 0;

Dpwm1Regs.DPWMCTRL0.bit.MSYNC_SLAVE_EN = 1;// DPWM0为主器件、DPWM1为从器件

//*********

//启用同步 FET

Dpwm1Regs.DPWMCTRL2.bit.IDE_Duty_B_EN = 1;//启用 IDE

//*********

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    相应的工程师已收到您的问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我从未能够很好地阅读代码并告诉它是否起作用。 尤其是对于 UCD 的 DPWM 设置等复杂器件。
    遗憾的是、我们没有用于有源钳位的代码、或者我会向您指出这一点。
    我建议您使用开环板 EVM、并使用软件控制滤波器的输出、以控制 DPWM 并查看是否获得所需的信号。 我认为 TI 培训实验室展示了如何做到这一点: www.ti.com/.../ucd-training-labs

    简而言之、您可以将一组仅成比例的系数放入滤波器中、然后使用 CPU_SAMPLE 位控制输入、固件在该位将寄存器写入滤波器的输入、而不是将 EADC 用作误差源。

    或者、您也可以使用滤波器上的输出钳位来强制滤波器具有所需的值。 如果我们需要开发新的拓扑、这通常就是我们所做的。