[仿真] 昊芯 利用中科用昊芯DSP实现PWM占空比控制

[复制链接]
 楼主| 月雾 发表于 2022-7-19 14:58 | 显示全部楼层 |阅读模式
一、前言
PWM(脉宽调制)是现代电力电子系统的基础控制技术。在电机控制或者电源驱动领域,大部分算法的最终出口是占空比的计算。在系统架构设计中,PWM的性能和分辨率是评估主控芯片性能的重要指标。
中科昊芯的HX2000系列DSP专为电机控制和开关电源行业设计,该系列芯片特色之一就是功能专业、模块化设计、容易上手的ePWM外设。

我们以HXS320F28027为例:
· 该款芯片ePWM模块由4个PWM子模块组成;
· 除PWM1外,各PWM子模块完全相同;
· PWM子模块由8个功能模块组成,用户可以根据需要使能,关闭或PASSBY相关模块,如死区,斩波,故障保护,ADC采样触发,以及模拟比较器联动等等;
· 借助主频的提升,PWM分辨率为国际友商的2倍。

下面我们做一个简单的PWM例程,演示该款DSP芯片的性能。

二、程序说明
GPIO0和GPIO1配置为PWM功能输出口。配置ePWM1模块,令PWM1周期=50us,PWM1A(GPIO0)占空比在100%-0%之间递减;PWM1B(GPIO1)输出恒定为50%。

三、效果演示


四、例程代码
  1. /*
  2. * PWM.c
  3. *
  4. *  Created on: 2021年10月25日
  5. *      Author: daieq
  6. */
  7. #include "dsc_config.h"
  8. #include <syscalls.h>
  9. #include "IQmathLib.h"
  10. Uint16 Value_pwm1_cmpa = 0;

  11. int main(void)
  12. {
  13. InitSysCtrl();
  14. InitEPwmGpio();

  15. EALLOW;
  16. SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;
  17. EPwm1Regs.TBPRD = 6000;
  18. EPwm1Regs.TBCTL.bit.FREE_SOFT = 3;
  19. EPwm1Regs.TBCTL.bit.CLKDIV = 0;
  20. EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;
  21. EPwm1Regs.TBCTL.bit.CTRMODE = 2;    // up&down mode
  22. EPwm1Regs.CMPA.half.CMPA = 0;
  23. EPwm1Regs.CMPB = 3000;
  24. EPwm1Regs.AQCTLA.bit.CAU = 2;   //set
  25. EPwm1Regs.AQCTLA.bit.CAD = 1;   //clear
  26. EPwm1Regs.AQCTLB.bit.CBU = 2;//set
  27. EPwm1Regs.AQCTLB.bit.CBD = 1;   //clear
  28. SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;
  29. EDIS;

  30. while(1){
  31. DELAY_US(10000);
  32. Value_pwm1_cmpa++;

  33. if(Value_pwm1_cmpa>5999){
  34. Value_pwm1_cmpa = 0;
  35. }
  36. EPwm1Regs.CMPA.half.CMPA = Value_pwm1_cmpa;
  37.     }

  38. }


作者:昊芯 https://www.bilibili.com/read/cv13773237?spm_id_from=333.999.0.0 出处:bilibili

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
月蓉小豆包 发表于 2022-7-20 08:57 | 显示全部楼层
昊芯YYDS!
klbyf 发表于 2022-10-12 08:34 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

7

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部