网站某个链接失效如何找外链资源
2026/2/21 2:40:22 网站建设 项目流程
网站某个链接失效,如何找外链资源,wordpress不能登录,企业网站改版方案12路脉冲移相#xff0c;dsp28335程序最近在折腾三相逆变器项目#xff0c;用DSP28335搞12路移相脉冲输出#xff0c;踩了不少坑。这玩意儿在电机控制和电源系统里用得贼多#xff0c;特别是需要精确时序控制的场合。老司机都知道#xff0c;TI的C2000系列玩PWM是真香dsp28335程序最近在折腾三相逆变器项目用DSP28335搞12路移相脉冲输出踩了不少坑。这玩意儿在电机控制和电源系统里用得贼多特别是需要精确时序控制的场合。老司机都知道TI的C2000系列玩PWM是真香但要把12路相位安排得明明白白还真得动点脑子。先说配置思路DSP28335的ePWM模块有6个独立单元每个单元能出两路互补信号。要搞12路移相得让每个模块的计数器错开相位。这里有个骚操作——把360度相位均分给6个模块每个模块负责两路信号相位差直接体现在TBCTR计数器的初始值上。上硬货看代码void InitEPwm() { // 基础时钟配置 EPwm1Regs.TBCTL.bit.CTRMODE TB_COUNT_UPDOWN; // 增减计数模式 EPwm1Regs.TBPRD 1500; // 周期值对应10kHz EPwm1Regs.TBPHS.half.TBPHS 0; // 主模块相位基准 // 从模块相位偏移配置 for(int i2; i6; i){ EPwm_REG_REGS(i)-TBPHS.half.TBPHS (i-1)*250; // 每个模块偏移30度 EPwm_REG_REGS(i)-TBCTL.bit.PHSEN TB_ENABLE; // 启用相位加载 } // 动作限定器配置 EPwm1Regs.AQCTLA.bit.CAU AQ_SET; // 计数等于CMPA时置高 EPwm1Regs.AQCTLA.bit.CAD AQ_CLEAR; // 计数等于周期值时置低 EPwm1Regs.CMPA.half.CMPA 750; // 50%占空比 }这里有几个关键点TBPHS寄存器控制相位偏移量计算时得注意周期值/360*相位角度。比如10kHz对应周期值1500假设系统时钟150MHz30度偏移就是1500/12125实际取了250是因为用的增减计数模式得算半周期。移相的精髓在同步链配置得用EPWM1作为主时钟其他模块通过SYNCO信号同步EPwm1Regs.TBCTL.bit.SYNCOSEL TB_SYNC_DISABLE; // 主模块不同步 EPwm2Regs.TBCTL.bit.SYNCOSEL TB_SYNC_IN; // 从模块同步输入 EALLOW; SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC 0; // 先暂停所有ePWM时钟 SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC 1; // 统一启动 EDIS;这个操作骚在统一启动时钟避免各模块启动时间不一致导致相位乱跳。实测中发现如果不做这个同步前几个周期的波形会抽风。中断处理也不能马虎特别是要做动态相位调整时interrupt void epwm1_isr(void) { static int phase_offset 0; phase_offset (phase_offset 5) % 360; // 每次中断相位5度 // 实时更新相位 EPwm2Regs.TBPHS.half.TBPHS (phase_offset * EPwm1Regs.TBPRD)/360; EPwm1Regs.ETCLR.bit.INT 1; // 清中断 PieCtrlRegs.PIEACK.all PIEACK_GROUP3; }这里有个坑直接改TBPHS可能会在计数器运行时产生毛刺稳妥的做法是在计数器为0时更新。所以中断触发时机要选在CTR0的时候配合TBCTL的PHSDIR位控制加载时机。最后说个实用技巧用CCS的Graph工具观察相位差巨方便// 在观察窗口添加 EPwm1Regs.CMPA.all, EPwm2Regs.CMPA.all, ...设置成并行显示直接看波形相位关系。比用示波器抓方便特别是调相位微调时能实时看到数值变化。这波操作下来12路脉冲跟军训列队似的整整齐齐相位差控制在±1ns以内没问题。关键是活用ePWM的同步机制别头铁硬算相位值。下次搞36路移相简单加个多级同步链就完事了不过那就是另一个故事了...

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询