前言

上一篇文章我把 MATLAB / Simulink 配置 TI C2000 生成代码环境 的流程完整梳理了一遍,解决的是“环境能不能配通”的问题。
这一篇就继续往前走,不再停留在工具链层面,而是真正开始用 Simulink 生成 PWM,把模型跑到开发板上。

这篇文章我继续走 实操路线,把视频里的流程、重点和容易踩坑的地方整理出来,尽量让你能照着做出来。

如果你想看我实际操作的完整过程,包括参数怎么点、引脚怎么找、SysConfig 怎么看、杜邦线怎么接,建议直接去 Bilibili 看视频完整版,会更直观。

点击这里MATLAB配置PWM实现呼吸灯
如无法跳转,请复制链接至bilibili: https://b23.tv/0hZ2eMC


目录

前言

一、这篇文章适合谁看?

二、先说结论:PWM 这篇的重点,不是“拖模块”,而是“占空比怎么变”

三、先把原理讲清楚:为什么改占空比,LED 就会变亮变暗?

四、视频里的整体流程,其实可以分成两段

五、具体实操流程

六、常见问题汇总

七、总结


一、这篇文章适合谁看?

如果你现在正好遇到下面这些情况,这篇基本就是对口的:

  • 上一篇环境已经配好了,想继续做一个真正能跑起来的例子

  • 想知道 Simulink 里的 ePWM 模块到底怎么配

  • 想把 PWM 输出到 TI C2000 开发板上

  • 想通过改变占空比,让 LED 出现亮度变化

  • 想理解 PWM 周期、比较值、占空比动态输入 之间的关系

  • 想知道为什么模型能生成代码,但板子上 LED 没反应

这篇文章的目标很明确:

用 MATLAB / Simulink 配置 ePWM,并在 TI C2000 开发板上做出可见的亮度变化效果。


二、先说结论:PWM 这篇的重点,不是“拖模块”,而是“占空比怎么变”

很多人第一次做 PWM,会把注意力都放在 ePWM 模块本身,觉得“我把模块拖进来就差不多了”。
但实际上,真正决定效果的不是模块名字,而是:

  • PWM 周期怎么定

  • 比较值 CMPA 怎么给

  • 输出动作逻辑怎么写

  • 占空比是固定值,还是动态输入

  • 实际输出引脚和板上 LED 是否打通

这一篇视频里,最有价值的地方就在于它不是只做一个“固定占空比输出”,而是进一步把 计数器输出接到 ePWM 的比较值输入,让占空比随时间变化。

这就意味着:

你不只是学会了“发一个 PWM”,而是开始学会“控制 PWM 的占空比变化”。

这一步其实已经是很多控制应用的基础了,比如:

  • LED 亮度调节

  • 呼吸灯

  • 电机占空比控制

  • 功率调节

  • 后续闭环控制中的 PWM 驱动


三、先把原理讲清楚:为什么改占空比,LED 就会变亮变暗?

PWM 的本质并不复杂。
它不是去真的改变电压大小,而是在一个固定周期里,通过控制高电平持续的时间比例,来改变平均输出效果。

对 LED 来说,可以简单理解成:

  • 占空比越大,LED 看起来越亮

  • 占空比越小,LED 看起来越暗

所以如果你让占空比随时间变化,比如从小到大再重复,LED 就会出现明显的亮度变化效果。
这也是视频里这套模型的核心思路:

固定 PWM 周期,让比较值 CMPA 动态变化,从而让占空比动态变化。


四、视频里的整体流程,其实可以分成两段

这次视频的内容不是一上来就做呼吸灯,而是分成两段来做,逻辑很合理。

第一段:先验证 ePWM 输出是通的

先做一个基础版 PWM 输出,确认:

  • ePWM 模块本身能正常工作

  • 代码能正常生成

  • 下载到开发板后确实有输出

  • 调整比较值后,效果会变化

这一步的意义很重要。
因为如果你连“静态 PWM 输出”都没打通,后面再去做动态变化,只会更乱。

第二段:再做动态占空比变化

在确认基础输出没问题之后,再新增一个计数器模块,让它不断输出变化的数值,把这个数值送给 ePWM 的比较值输入端。

这样占空比就不再是一个固定数,而是会随时间变化。

这也是这篇文章最值得学的部分。


五、具体实操流程


1. 先做一个基础 PWM 输出,验证板子能不能正常响应

视频前半段先做的是一个比较直接的 PWM 输出测试。
核心思路就是:

  • 使用 ePWM 模块输出 PWM

  • 调整比较值

  • 下载到开发板

  • 观察 LED 或输出效果是否变化

这一步虽然简单,但非常关键,因为它能先帮你确认整条链路是不是通的:

  • Simulink 模型没问题

  • 代码生成没问题

  • 下载运行没问题

  • PWM 输出本身也没问题

这一阶段你不需要一上来就追求“呼吸灯”,先确认 PWM 能发出来 才是最重要的。


2. 新建一个更适合做动态占空比的模型

在基础验证完成之后,视频里重新搭了一个模型,用来实现亮度动态变化。

模型结构很简洁,核心就是两个模块:

  • Counter Free-Running

  • ePWM

然后把计数器的输出接到 ePWM 的输入端,让 ePWM 的比较值不再固定,而是由外部信号动态提供。

这一步的意义就是:

把“固定占空比 PWM”升级成“占空比可变 PWM”。

从建模思路上说,这比只会填固定参数要更重要。


3. 配置 Counter Free-Running:让比较值动起来

视频里这个计数器模块的作用,是持续输出一个变化的数值,作为 PWM 比较值来源。

这里有两个关键设置:

位数

视频中把位数设置成了 8 位

这意味着计数器输出范围是:0 ~ 255

这个范围非常关键,因为它会直接影响你后面 PWM 比较值和周期怎么配。

采样时间

视频里给计数器设置了一个较慢的采样时间,用来控制占空比变化速度。
如果这个采样时间设得太小,占空比变化会非常快,LED 的亮度变化就会太急,看起来不自然。

这里你要记住一句话:

计数器不是只负责“计数”,它也在决定占空比变化的节奏。


4. 配置 ePWM:让 PWM 波真正按你的逻辑输出

这一部分是整篇文章的核心。

视频里 ePWM 的配置大致可以分成三块来看。


(1)先确定 PWM 模块和周期参数

在 ePWM 的基础设置里,视频中选用了 ePWM1,并设置了 PWM 周期参数。

因为前面计数器输出范围是 0~255,所以视频里把 Timer period 设置成了:256

这一步非常有代表性,因为它体现了一个很重要的建模思路:

比较值范围最好和 PWM 周期范围对齐。

这样做的好处是:

  • 占空比变化关系更直观

  • 后面调试更方便

  • 计数器输出可以直接作为比较值使用

另外,视频里还设置了合适的计数模式,用于生成 PWM 波形。
这部分如果设置错了,后面波形占空比和预期就可能对不上。


(2)启用 ePWM A,并设置动作逻辑

视频里重点配置的是 ePWM A 输出。

这里最关键的不是“勾选使能”,而是下面这组动作逻辑:

  • 当计数器为 0 时,输出置高

  • 当计数器到达 CMPA 时,输出置低

  • 其他事件不做额外处理

这组逻辑本质上就是在定义:

PWM 的高电平从哪里开始,到哪里结束。

只要这组逻辑配对了,占空比就能和 CMPA 正确建立关系。
如果这里配错,即使你后面给了动态比较值,输出效果也会不对。


(3)把 CMPA 改成“由输入端口提供”

这是这次视频最关键的一步之一。

在最简单的 PWM 模型里,CMPA 一般是你直接在参数框里写死的一个数。
但这样只能得到固定占空比。

为了让占空比动态变化,视频里做了一个更关键的设置:

把 CMPA 的值改成由输入端口提供。

这样一来,ePWM 的比较值就不再写死,而是可以接收外部模块输出。
然后再把 Counter Free-Running 的输出接过来,占空比就会跟着计数器数值一起变化。

这一步你可以理解成:

  • 固定参数模式:PWM 是“写死的”

  • 输入驱动模式:PWM 是“可调的”

这也是从“会用模块”到“会搭控制逻辑”的分界线。

5. 配置仿真步长:别让占空比变化得太快


视频里还有一个很容易被忽略,但实际很重要的地方,就是 求解器 / 仿真步长设置

这一块的思路很简单:

  • 如果步长太小,计数器更新太快

  • 如果计数器更新太快,占空比变化也会太快

  • LED 看起来就不是平滑变化,而是变化过于急促

所以视频里专门调整了模型的基础步长,用来控制整个变化节奏。

这一点一定要注意,因为很多人模型逻辑没错,但效果“不像呼吸灯”,问题往往不在 PWM 参数,而在:

占空比变化的时间尺度没有控制好。


6. 选择正确的硬件板卡

到模型配置这一步,还要确认硬件目标板设置正确。

视频里选择的是:

TI Piccolo F280049C LaunchPad

这一项一定不能配错。
因为你后面:

  • 代码生成目标

  • 外设资源

  • 引脚映射

  • 下载运行

都和这一步直接相关。

如果板型选错,最常见的问题就是:

  • 模型能生成

  • 代码也能编

  • 但引脚行为和你想的不一样

  • 最后板子没反应

所以这一步别觉得只是“填个名字”,它其实决定了整个后续硬件资源映射。


7. 用 SysConfig 查引脚:别只会配模型,不会找硬件口

这一段是视频里非常实用的部分。

很多人做到这里容易卡住:

模型已经好了,PWM 也配好了,那到底从开发板哪个脚出来?

这时候就需要用 SysConfig 看引脚映射。

视频里做的事情大致是:

  • 先选择对应开发板或芯片

  • 添加 GPIO 相关资源

  • 添加 EPWM 相关资源

  • 查看 ePWM1A 对应的实际引脚

  • 同时查看开发板上 LED4 对应的是哪个 GPIO

这里视频里明确提到了:

LED4 对应 GPIO23

这一步特别重要,因为它告诉你:

  • 板上 LED4 并不是天然就接在你当前配置的 ePWM 输出上

  • 你不能想当然地以为“配置了 PWM,LED 就会自动亮”


8. 为什么还要接杜邦线?因为 PWM 输出和 LED4 不一定天然直连

视频后半段还有一个特别容易被忽略,但实际非常关键的动作:

用杜邦线把 GPIO23 和 ePWM1A 对应引脚连接起来。

这说明什么?

说明板载 LED4 所在的 GPIO23,和你当前 PWM 输出口并不是天然就连在一起的。
所以即使你的模型、代码、下载全都没问题,如果这两者之间没有硬件连通,LED4 也不会按 PWM 效果变化。

这是很多初学者特别容易忽略的点:

  • 他们只盯着 Simulink

  • 只盯着代码生成

  • 却忘了板级连接本身也必须成立

所以这篇文章里我特别建议你记住一句话:

模型逻辑正确,不代表板上就一定有现象;引脚和物理连接也必须打通。


9. 下载运行后,就能看到亮度变化效果

当模型参数配好、板卡选对、SysConfig 查清引脚、杜邦线接好之后,就可以下载到开发板运行。

视频最后能看到板子上的对应 LED 已经有明显响应。
这说明整条链路是打通的:

  • Simulink 模型正确

  • ePWM 配置正确

  • CMPA 动态输入正确

  • 引脚找对了

  • 板级连接成立

  • 下载运行成功

到这里,这个 PWM 小实验就不只是“生成代码成功”,而是已经真正落到了硬件效果上。


六、常见问题汇总

1)为什么模型能跑,但 LED 没反应?

优先检查下面几项:

  • 板卡型号是否选对

  • 下载是否真的成功

  • ePWM 是否真的输出到目标引脚

  • GPIO23 和 ePWM1A 是否物理连通

  • 杜邦线是否接对位置


2)为什么 PWM 有输出,但看不到明显亮度变化?

通常从这几个方向排查:

  • 比较值变化范围是不是太小

  • 更新速度是不是太快

  • PWM 周期和比较值范围是否匹配

  • LED 实际连接口是不是对的


3)为什么效果不像“呼吸灯”,而像“闪一下”?

大概率是下面这些原因:

  • 占空比变化太快

  • 仿真步长太小

  • 计数器采样时间设置不合适

  • 占空比变化逻辑过于突兀


4)为什么 ePWM 模块已经配好了,还是不知道接哪个口?

这时候不要猜,直接去 SysConfig 看:

  • ePWM1A 对应哪个物理引脚

  • LED4 对应哪个 GPIO

  • 板子上两者是否天然相连

  • 如果没有,就自己用杜邦线连起来


七、总结

如果说上一篇文章解决的是 “MATLAB / Simulink 到 TI C2000 的环境搭建问题”
那这一篇解决的就是另一个更实际的问题:

PWM 到底怎么在 Simulink 里配出来,并真正跑到开发板上。

这次视频里最有价值的,不只是做了一个 PWM,而是把下面这条思路走通了:

  • 先验证基础 PWM 输出

  • 再用计数器驱动比较值

  • 让占空比动态变化

  • 再通过 SysConfig 找到引脚

  • 最后把 ePWM1A 和 GPIO23/LED4 打通

这套流程一旦通了,后面很多更复杂的控制实验其实都可以在这个基础上继续扩展。

你可以把这篇文章理解成:

从“环境搭建完成”正式迈向“外设应用实战”的第一步。

如果你想看完整实操过程,包括:

  • ePWM 具体参数怎么点

  • Counter Free-Running 怎么配

  • 求解器步长怎么调

  • SysConfig 里怎么查 ePWM1A 和 GPIO23

  • 杜邦线具体怎么接

  • 最后板子上是怎么跑起来的

欢迎去 Bilibili 看我的视频完整版,照着做会更直观。

点击这里MATLAB配置PWM实现呼吸灯
如无法跳转,请复制链接至bilibili: https://b23.tv/0hZ2eMC

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐