打印
[仿真]

昊芯 利用中科用昊芯DSP实现PWM占空比控制

[复制链接]
6017|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
月雾|  楼主 | 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%。

三、效果演示


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

int main(void)
{
InitSysCtrl();
InitEPwmGpio();

EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;
EPwm1Regs.TBPRD = 6000;
EPwm1Regs.TBCTL.bit.FREE_SOFT = 3;
EPwm1Regs.TBCTL.bit.CLKDIV = 0;
EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;
EPwm1Regs.TBCTL.bit.CTRMODE = 2;    // up&down mode
EPwm1Regs.CMPA.half.CMPA = 0;
EPwm1Regs.CMPB = 3000;
EPwm1Regs.AQCTLA.bit.CAU = 2;   //set
EPwm1Regs.AQCTLA.bit.CAD = 1;   //clear
EPwm1Regs.AQCTLB.bit.CBU = 2;//set
EPwm1Regs.AQCTLB.bit.CBD = 1;   //clear
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;
EDIS;

while(1){
DELAY_US(10000);
Value_pwm1_cmpa++;

if(Value_pwm1_cmpa>5999){
Value_pwm1_cmpa = 0;
}
EPwm1Regs.CMPA.half.CMPA = Value_pwm1_cmpa;
    }

}


作者:昊芯 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

粉丝