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

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

相关推荐
不悔哥2 天前
开源OV-Watch:怎么做一个智能手表
单片机·开源·嵌入式
XiHongShi20162 天前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
深圳老胡2 天前
STM32F407 控制 L6470 步进电机驱动 —— 控制过程简介
笔记·stm32·单片机·嵌入式硬件·代码规范
女神下凡2 天前
嵌入式设计的各种存储芯片的硬件/软件设计规范,非常全面。
arm开发·单片机·嵌入式硬件
梅梅9662 天前
一款mipi转lvds的lcd调试(LT8912B)
单片机·计算机外设·电脑·显示器·pd芯片
开发笔记-阿牛2 天前
蓝牙音乐灯拆解,又一次拆到蓝牙音乐灯芯片CK6865L
人工智能·单片机·嵌入式硬件·音视频·音频
从零开始的嵌入式之旅2 天前
day47
arm开发·经验分享·笔记·嵌入式硬件
恒锐丰科技林技术员2 天前
EG1164 高压大电流升压同步整流芯片解析
经验分享·嵌入式硬件·硬件工程
CHENKONG_CK2 天前
破解制鞋打磨痛点:RFID赋能去毛刺工序自动化升级
网络·单片机·嵌入式硬件·网络协议·tcp/ip
祖力552 天前
ARM时钟
嵌入式硬件·arm·时钟·imx6ull