
基于DSP28335的两相交错双向DCDC变换器在电力电子领域DCDC 变换器可是个相当重要的角色能在不同电压等级间实现高效的能量转换。而今天咱们要聊的是基于 DSP28335 的两相交错双向 DCDC 变换器这玩意儿可不简单有着诸多独特的优势。两相交错双向 DCDC 变换器简介两相交错双向 DCDC 变换器结合了两相交错技术和双向能量传输功能。交错技术能让多个变换器通道以一定相位差工作这样可以减小输入输出电流纹波提高变换器的效率和功率密度。双向功能则意味着它既可以将能量从一个端口传输到另一个端口也能反向传输这在很多需要能量双向流动的场合非常实用比如电动汽车的电池充放电系统、可再生能源发电系统的储能环节等。DSP28335 登场TI 公司的 DSP28335 可是一款高性能的数字信号处理器具有强大的运算能力和丰富的外设资源。它的高速处理能力可以快速地实现复杂的控制算法对于两相交错双向 DCDC 变换器这种需要精确控制的系统来说DSP28335 就是绝佳的控制核心。代码实现与分析下面咱们来看看一些关键代码部分。首先是初始化 DSP28335 的时钟和 GPIO 引脚。#include DSP2833x_Device.h #include DSP2833x_Examples.h void InitSysCtrl(void); void InitGpio(void); void main(void) { InitSysCtrl(); InitGpio(); // 后续可以添加控制算法代码 while(1) { // 主循环 } } void InitSysCtrl(void) { EALLOW; // 解锁保护寄存器 SysCtrlRegs.WDCR 0x00AF; // 使能看门狗 SysCtrlRegs.PLLCR 0x0A; // 设置 PLL 倍频系数 while(SysCtrlRegs.PLLSTS.bit.MCLKSTS ! 1); // 等待 PLL 锁定 SysCtrlRegs.HISPCP.all 0x00; // 高速外设时钟分频 SysCtrlRegs.LOSPCP.all 0x02; // 低速外设时钟分频 EDIS; } void InitGpio(void) { EALLOW; // 配置 GPIO 引脚为 PWM 输出 GpioCtrlRegs.GPAMUX1.bit.GPIO0 1; GpioCtrlRegs.GPAMUX1.bit.GPIO1 1; EDIS; }代码分析InitSysCtrl函数这个函数主要是对系统时钟进行初始化。首先解锁保护寄存器然后使能看门狗设置 PLL 倍频系数让 DSP 工作在合适的时钟频率下。等待 PLL 锁定后再设置高速和低速外设的时钟分频。InitGpio函数该函数用于配置 GPIO 引脚。这里将 GPIO0 和 GPIO1 配置为 PWM 输出因为后续需要通过这两个引脚输出 PWM 信号来控制两相交错双向 DCDC 变换器的开关管。接下来看看 PWM 信号的生成代码。#include DSP2833x_Device.h #include DSP2833x_Examples.h void InitEPwm(void); void main(void) { InitSysCtrl(); InitGpio(); InitEPwm(); while(1) { // 主循环 } } void InitEPwm(void) { EALLOW; // 配置 EPWM1 EPwm1Regs.TBPRD 1000; // 周期寄存器 EPwm1Regs.CMPA.half.CMPA 500; // 比较寄存器 A EPwm1Regs.TBCTL.bit.CTRMODE TB_COUNT_UPDOWN; // 计数模式 EPwm1Regs.TBCTL.bit.PHSEN TB_DISABLE; // 相位使能 EPwm1Regs.TBCTL.bit.HSPCLKDIV TB_DIV1; // 高速时钟分频 EPwm1Regs.TBCTL.bit.CLKDIV TB_DIV1; // 时钟分频 EPwm1Regs.CMPCTL.bit.SHDWAMODE CC_SHADOW; // 比较寄存器 A 影子模式 EPwm1Regs.CMPCTL.bit.SHDWBMODE CC_SHADOW; // 比较寄存器 B 影子模式 EPwm1Regs.AQCTLA.bit.CAU AQ_SET; // 计数器上溢时设置输出 EPwm1Regs.AQCTLA.bit.CAD AQ_CLEAR; // 计数器下溢时清除输出 // 配置 EPWM2 实现交错 EPwm2Regs.TBPRD 1000; EPwm2Regs.CMPA.half.CMPA 500; EPwm2Regs.TBCTL.bit.CTRMODE TB_COUNT_UPDOWN; EPwm2Regs.TBCTL.bit.PHSEN TB_ENABLE; // 相位使能 EPwm2Regs.TBPHS.half.TBPHS 500; // 相位偏移 EPwm2Regs.TBCTL.bit.HSPCLKDIV TB_DIV1; EPwm2Regs.TBCTL.bit.CLKDIV TB_DIV1; EPwm2Regs.CMPCTL.bit.SHDWAMODE CC_SHADOW; EPwm2Regs.CMPCTL.bit.SHDWBMODE CC_SHADOW; EPwm2Regs.AQCTLA.bit.CAU AQ_SET; EPwm2Regs.AQCTLA.bit.CAD AQ_CLEAR; EDIS; }代码分析InitEPwm函数这个函数用于初始化 ePWM 模块。先配置 EPWM1设置周期寄存器TBPRD和比较寄存器CMPA确定 PWM 信号的周期和占空比。选择计数模式为TBCOUNTUPDOWN并设置输出动作当计数器上溢时设置输出下溢时清除输出。对于 EPWM2除了和 EPWM1 类似的配置外还使能了相位功能并设置了相位偏移TBPHS。这样就实现了两相交错的 PWM 信号输出两个 PWM 信号之间有一定的相位差从而让两相交错双向 DCDC 变换器的两个通道交错工作。总结基于 DSP28335 的两相交错双向 DCDC 变换器在很多应用场景都有着巨大的潜力。通过 DSP28335 的强大功能和合适的代码实现我们可以精确地控制变换器的工作。当然这只是一个简单的示例实际应用中还需要考虑更多的因素比如控制算法的优化、保护功能的实现等。但相信随着技术的不断发展这种变换器会在电力电子领域发挥更大的作用。基于DSP28335的两相交错双向DCDC变换器