DSP 多个 PWM 同步总出问题?28377S 同步链路和主从配置一次讲清!

📌 以 TMS320F28377S 为例

在使用 DSP28377S 进行多路 ePWM 同步控制时,很多人容易踩坑。这里总结几个关键点,尤其适用于多模块同步、移相控制等场景。


✅ 一、必须先开启 PWM 外设时钟

在系统初始化阶段,一定要确认 ePWM 模块时钟已经开启

对应函数路径:

InitSysCtrl(); └── InitPeripheralClocks();

InitPeripheralClocks() 中:

  • 赋值为 1 → 对应 PWM 模块时钟开启

  • 赋值为 0 → 对应 PWM 模块时钟关闭

⚠️ 如果忘记开启时钟,后续所有 PWM 配置都会"无效",但程序不会报错,非常容易误判。


✅ 二、ePWM 同步链路结构必须搞清楚

TMS320F28377S 中,同步信号并不是所有 PWM 共用一条总线,而是分组的。

📌 同步分组关系:

  • EPWM7 / EPWM8 / EPWM9 → 共用一个同步链

  • EPWM10 / EPWM11 / EPWM12 → 共用一个同步链

⚠️ 特别注意:

虽然 EPWM7 的同步信号可以传递到 EPWM10

不能直接传递到 EPWM11

👉 EPWM11 的同步源仍然来自 EPWM10

👉 EPWM12 的同步源来自 EPWM11

也就是说:

如果你要使用 EPWM11 的相位寄存器(TBPHS),

必须先使能 EPWM10 的同步输出。

否则 EPWM11 根本接收不到同步信号。


✅ 三、EPWM10 & EPWM11 正确同步配置示例

假设我们希望:

  • EPWM10 作为主模块

  • EPWM11 作为从模块(移相)


🔹 EPWM10(主模块)配置

EPwm10Regs.TBCTL.bit.PHSEN = TB_DISABLE; // 禁止相位加载 → 主模块 EPwm10Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; // 计数到0时发出同步信号

说明:

  • PHSEN = DISABLE → 表示本模块作为同步源

  • SYNCOSEL = ZERO → 在计数器清零时产生同步脉冲


🔹 EPWM11(从模块)配置

EPwm11Regs.TBCTL.bit.PHSEN = TB_ENABLE; // 允许相位加载 → 从模块 EPwm11Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; // 接收同步信号

说明:

  • PHSEN = ENABLE → 允许加载 TBPHS,相位生效

  • SYNCOSEL = IN → 同步信号来自 EPWM10


🔥 四、常见踩坑总结

✔ 没开 PWM 时钟

✔ 主模块没有打开同步输出

✔ 从模块 PHSEN 没使能

✔ 同步链路理解错误(以为所有 PWM 都是同一条同步链)

✔ 相位寄存器写了但没生效(本质是没收到同步信号)


🎯 小结

在 DSP28377S 多 PWM 同步配置中:

先确认时钟 → 再确认同步链路 → 再确认主从关系 → 最后确认 PHSEN

同步链路搞错,是最常见也是最隐蔽的问题。

相关推荐
普中科技1 天前
【普中STM32F1xx开发攻略--标准库版】-- 第 45 章 FSMC-外扩 SRAM 实验
stm32·单片机·嵌入式硬件·fsmc·普中科技·外扩sram·is62wv51216
xiaoyuchidayuma2 天前
永磁同步发电机的线电压和直流母线电压的关系
嵌入式硬件
潜创微科技2 天前
4K60 over IP 方案简介
网络·嵌入式硬件·网络协议·tcp/ip·音视频
rit84324992 天前
基于C#的USB HID设备读取测试软件
嵌入式硬件
三佛科技-187366133972 天前
FT32F103C8AT7兼容GD32F103C8T632 位通用微控制器MCU,替代性分析
单片机·嵌入式硬件
iCxhust2 天前
8086汇编 word ptr
汇编·单片机·嵌入式硬件·微机原理·8088单板机
嵌入式ZYXC2 天前
第3篇:《面试题:I2C为什么要加上拉电阻?阻值怎么选?》
stm32·单片机·嵌入式硬件·面试·职场和发展
leo__5202 天前
C# 虚拟键盘(软键盘)实现
单片机·c#·计算机外设
你疯了抱抱我2 天前
【STM32】使用 STM32CubeMX 生成项目,LED测试;上位机:STM32F411CEU6
stm32·单片机·嵌入式硬件