当前位置: 首页 > news >正文

C2000学习笔记7——SPWM生成及触发ADC

继上节更新EPWM已经很久了,这次来更新SPWM的生成以及EPWM触发ADC的用法

一、SPWM

关于SPWM的介绍网上都有很多,这里就不过多介绍,我在使用他时更多的是做电源相关,PWM已经满足不了使用需求了。我所理解的SPWM就是占空比按照正弦规律变化的波,当然还有很多不同类别的SPWM:双极性、单极性,这些就自己去了解了。接下来就说明如何使用EPWM模块来配置。

1.导入空模板

导入的过程就不过多赘述了,之前的文章写的很详细忘记了可以翻找看看,这里我也直接将工程的名字和主函数文件名称都更改了,也添加了专门用来放.c .h文件的文件夹切记不要忘记添加文件夹路径到工程中

2.引入fpu计算

C2000是支持fpu加速计算的,所以我们只需要引入相关的库文件即可

首先右键工程来到工程设置中

找到这两项并设置为图下所示

再然后点击C2000 Linker找到File Search Path点击在如下所示中添加文件

添加三个文件

这三个路径分别在

ccs1281\ccs\tools\compiler\ti-cgt-c2000_22.6.1.LTS\lib\rts2800_fpu32_eabi.lib

c2000\C2000Ware_5_05_00_00\libraries\math\FPUfastRTS\c28\lib\rts2800_fpu32_fast_supplement_eabi.lib

c2000\C2000Ware_5_05_00_00\libraries\math\IQmath\c28\lib\IQmath_fpu32_eabi.lib

其中ccs1281和c2000文件夹需要根据你安装的实际路径进行选择

并且这三个文件的顺序也需要与上面对应 且这三个文件在最上面首先编译

最后的顺序如下所示

点击文件选中再点击红色框中的按钮即可调整顺序

然后再来到下面这个页面

将红框中的strict换为relaxed

最后点击右下角的Apply and Close

这样就添加成功了

3.EPWM的配置

这里生成SPWM多用于电源 所以一般都会同时多输出一个反相的波形 其他的配置与上一篇的一样 主要区别在EPWM Dead-Band中 同时由于是生成SPWM 所以计数方式也需要更改为增减计数

接下来EPWM Counter Compare中可以不选择配置 因为后面需要编写函数来进行修改

然后是EPWM Action Qualifer中的配置需要修改 也与之前的增计数方式的不同

这里主要是对COMPA的进行选择 同理COMPB也是一样

这里需要仔细分辨COMPA的选择是COMPA COMPB的选择则对应的是COMPB 这里生成PWM画幅图很好理解

因为选择了当计数值大于等于COMPA的值是为高电平 所以对应为PWM的高 当计数值小于等于COMPA的值时设为低则对应为PWM的低 对于COMPB也是同理

然后是Dead Band中的配置

使其能够反相的选项就是Rising Edge Delay Polarity和Falling Edge Delay Polarity这两个选项 需要将Falling Edge Delay Polarity配置为DB polarity is inverted 这里就是将B的输出反相

下面几个就是使能死区和配置死区时间

接下来配置EPWM的中断

首先使能中断 中断时机设定为高电平中点也就是计数值最大时发生中断 这样的好处是在一个时间周期内部更改占空比 防止发生未知错误 然后是一个事件触发一次中断 也就是每个周期都触发一次中断

下面的是使能ADC的中断触发源 参数同上

最后是设定引脚

注意一定要勾选Enable Interrupt in PIE 否则不会产生中断

这里我们的EPWM就配置完了 接下来是初始化代码 首先添加一个专门的SPWM的.c.h文件 另外可以添加一个专门放置头文件的.h文件 可以避免忘记包含头文件 也大大简化了代码结构

然后来到SPWM.c文件中添加初始化函数

首先定义相关变量

来到函数内部 根据填入的载波和调制波的频率算出ARR的值从而设定分频的值使用

EPWM_setTimeBaseCounter(myEPWM0_BASE,ARR);进行设定

其他则是计算需要生成正弦相关的参数角速度w 每单位步进时间t0 以及调制度mol

然后编写中断函数

根据正弦函数来理解各参数

Spwm_t表示的是x轴上的数字 spwm_uref是此时ARR对应的值 这个值就是正弦函数在ARR范围内的映射 可以根据公式进行推导 这样就实现了占空比呈正弦变化

最后在config.h文件中引用math库 定义pai

主函数中不要忘记添加

编译下载看看效果

可以看到确实是正弦变化且上下是反相的 说明我们的配置是成功的

二、ADC配置

然后是ADC的配置 继续来到syscfg的配置

ADC的配置按照下面来配置

配置完后来到ASYSCTL中将ADC的参考源选择为内部1.65V

添加ADC的.c.h文件

添加中断函数到adc.c文件中

使用ADC_readResult来读取adc的值 编译下载看看效果

通过Debug观察ADC采集到的值 此时是将A0连接到了板子上的GND引脚 所以输出为0

现在连接到3.3V上观察变量

可以看到采集到的值变为4095 达到满量程 符合预取 此时就实现了EPWM触发ADC采集

http://www.jsqmd.com/news/647744/

相关文章:

  • Linux CFS 的 nr_switches:上下文切换次数统计
  • 如何构建高效跨平台远程桌面系统:BilldDesk Pro技术架构深度解析
  • 乐高与众球星共同庆祝足球的魅力
  • 告别玄学调试:用J-Flash给STM32芯片“洗个澡”,解决RT-Thread Studio下载疑难杂症
  • 2025-2026年国内别墅装修公司推荐:五大口碑服务评测对比领先全屋智能集成布线困扰 - 品牌推荐
  • 2025-2026年访客机品牌推荐:五大口碑产品评测评价顶尖访客信息登记混乱案例 - 品牌推荐
  • 2026年智己品牌深度解析:从股东背景与品牌档次看高端新能源格局 - 品牌推荐
  • 【Hermes系列7】我把 Hermes 接入了 Jenkins:回归测试从 3 天到 30 分钟
  • 如何用组合继承模式实现父类方法复用与子类属性独立
  • java util stream中的reduce
  • 大模型发展史
  • 2025-2026年国内云南旅行社推荐:五大口碑服务评测对比顶尖公司团建定制需求匹配 - 品牌推荐
  • 2025-2026年别墅装修公司评测:五大口碑服务推荐评价领先历史建筑改造结构安全 - 品牌推荐
  • 机器学习工程师日常:挑战解决日记
  • c++怎么在读取文件时自动跳过所有UTF-8编码的非法字节【进阶】
  • MediaPipe Pose从安装到使用:33个关键点检测,新手完整教程
  • Cursor,底层到底是怎么理解你代码上下文的? (2)
  • 2025-2026年国内别墅装修公司推荐:五大口碑服务评测对比领先全案交付品质参差注意事项 - 品牌推荐
  • 2025-2026年云南旅行社推荐:五大口碑服务评测对比顶尖定制游信息不对称难题 - 品牌推荐
  • 一种基于递归对抗动力学与认知几何约束的智能生成方法及系统(世毫九实验室发明专利)
  • Live Avatar数字人模型5分钟快速上手:阿里开源神器一键部署教程
  • 2025-2026年访客机品牌推荐:五大口碑产品评测对比顶尖访客体验差等待久案例 - 品牌推荐
  • 【多模态大模型混沌工程实战白皮书】:覆盖视觉-语言-语音三模态的12类故障注入模式与SLO守护方案
  • 为什么你的爬虫总被封?从反爬模型解析IP的关键作用
  • 多个方面分析和修复vcruntime140_1.dll无法继续执行代码的解决方法
  • Codex 和 Claude Code 的区别与各自优势:AI 编程助手该怎么选?
  • 3大核心技术解析:Midscene.js如何实现跨平台AI自动化
  • 基于Python的考试信息报名系统毕业设计
  • 智慧健康养老服务与管理老年综合实训室师资培训方案
  • 生成式AI服务冷启动耗时超17s?(CUDA Graph + vLLM预热机制深度拆解)