专栏/平头哥CDK助力中科昊芯HX2000系列芯片之PWM电机调速

平头哥CDK助力中科昊芯HX2000系列芯片之PWM电机调速

2021年11月19日 01:25--浏览 · --点赞 · --评论
粉丝:748文章:47

全球智能环保优先,PWM因其控制逻辑简单,在电动车、电动汽车、轨道交通、新能源发电、工业机器人等电机与电源驱动领域得到重要应用,如下图所示:

在平头哥半导体有限公司的剑池集成开发环境(简称“CDK”)V2.10.1版本开始支持中科昊芯HX2000系列芯片开发与调试后,本文以HXS320F28027的PWM输出实例对PWM电机调速原理及程序开发展开介绍。

PWM脉宽调制控制技术,即通过对一系列脉冲的宽度进行调制,来等效地获得所需要的波形,其原理来源于面积等效原理:如下图所示的矩形、三角形与正弦半波、单位窄脉冲波形,其脉冲面积即冲量都等于1,若将它们分别加在具有惯性的同一环节上时,电路输入为e(t),输出为i(t),其输出响应基本相同,即在低频段特性非常接近,高频段略有差异。

HX2000系列PWM模块如下图:

主要由时基计数器TB,计数比较CC、动作AQ、事件ET、死区DB、斩波PC、错误联防TZ与时间比较DC模块组成,其中TB、CC、AQ、ET是电机调速控制中最重要的四个模块,其使用配置原理为:

1) 时基计数器模块:

通过TBCTL[CTRMODE]配置计数器工作于向上(递增)计数、向下(递减)计数、向上-下(先递增后递减)计数模式;通过TBCTL[CLKDIV]与TBCTL[HSPCLKDIV]合理分频系统时钟,使计数器可以工作在任意要求的频率下,计算方法如下图:

分频计算公式为:TBCLK=SYSCLKOUT/(HSPCLKDIV*CLKDIV)配置EPWMxSYNC管理ePWM模块间的同步;配置TBPHS调节两路PWM输出的相位差;产生CTR=PRD与CTR=ZERO事件。

2) 计数器比较与动作模块:

以时基计数器的值作为输入,与比较寄存器CMPA与CMPB不断进行比较,产生比较事件CTR=CMPA或CTR=CMPB,通过动作模块配置在比较事件产生时在不同路PWM上产生置高、拉低或翻转动作,从而调节PWM控制的脉冲宽度,同时可采用影子寄存器来更新比较值,以有效减少故障与毛刺现象。

3) 事件触发模块:

主要接收时基、计数比较与时间比较模块产生相关事件输入,利用时基模块计数器的方向信息、事件模块预定标判断逻辑判断,在相关事件产生时触发,或通过软件配置触发,产生每周期一次、两次、三次的相应中断事件或ADC启动事件。

本例程主要完成输出如下图周期在2.2ms,高电平在55us到2145us变化的PWM波,脉冲计数为0-10循环。

详细介绍参见公众号B站视频讲解,二维码如下图:

工欲善其事必先利其器,程序开发前准备阶段如下表:

· 开发环境:剑池集成开发环境V2.10.1

下载地址:https://occ.t-head.cn/community/download?id=575997419775328256

· 开发板:Core_DSC28027核心板

申请地址:http://haawking.cn/core28027

· 仿真器 :HX100V2


申请地址:http://haawking.cn/DSP-EMULATOR

下载界面如下:

准备好开发工具后就可以开始程序开发。详细的“CDK”安装及创建工程方法请看第一篇推送《芯教程|平头哥CDK助力中科昊芯HX2000系列芯片系统开发》

CDK上开发EPWM波生成,代码包括:

①EPWM的外设引脚、时基TB、比较CC、动作AQ与事件ET模块的初始化配置;

②占空比CMPA增大与减少的EPWM中断服务程序;

③主程序调用执行。

int main(void)
{
  /*系统初始化控制*/
  InitSysCtrl();
  /*EPWM外设的GPIO配置*/
  InitEPwm1Gpio();
  InitEPwm2Gpio();
  InitEPwm3Gpio();
  /*LED的GPIO配置,用于判断PWM波周期的增减变化区间*/
  InitLED();
  /*关中断,清中断*/
  InitPieCtrl();
  /*压栈入栈*/
  IER_DISABLE(0xffff);
  IFR_DISABLE(0xffff);
  /*初始化中断向量表*/
  InitPieVectTable();

  /*EPWM_INT中断向量表地址指向执行相应的EPWM中断服务程序*/
  EALLOW;
  PieVectTable.EPWM1_INT=&epmw1_isr;
  PieVectTable.EPWM2_INT=&epmw2_isr;
  PieVectTable.EPWM3_INT=&epmw3_isr;
  EDIS;

  /*禁止EPWM的时基使能,此时允许进行EPWM初始化配置*/
  EALLOW;
  SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=0;
  EDIS;

  /*EPWM模块初始化配置*/
  InitEPwm1Example();
  InitEPwm2Example();
  InitEPwm3Example();

  /*EPWM的时基使能,此时EPWM的配置功能将开始起作用*/
  EALLOW;
  SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=1;
  EDIS;
  /*PIEIER第3组中断向量使能*/
  IER_ENABLE(M_INT3);
  /*PIEIER第3组第1到3个中断向量使能*/
  PieCtrlRegs.PIEIER3.bit.INTx1=1;
  PieCtrlRegs.PIEIER3.bit.INTx2=1;
  PieCtrlRegs.PIEIER3.bit.INTx3=1;

  /*打开全局中断*/
  EINT;
  /*关闭全局中断*/
  ERTM;
  while(1){
  }
  return 0;
}

在CDK上开发PWM波生成,并对程序进行编译,其结果如下图:

编译成功后就可进入“Debug”模式调试了,其界面如下图:

PWM波通过GPIO0引脚输出,对应的核心板为“00”的插针,具体位置如下图:

PWM波输出的正确性及其占空比可调性效果如下:

GIF

关于中科昊芯

“智由芯生 创享未来”,中科昊芯是数字信号处理器专业供应商。作为中国科学院科技成果转化企业,瞄准国际前沿芯片设计技术,依托多年积累的雄厚技术实力及对产业链的理解,以开放积极的心态,基于开源指令集架构RISC-V,打造多个系列数字信号处理器产品,并构建完善的处理器产品生态系统。产品具有广阔的市场前景,可广泛应用于工业控制及电机驱动、数字电源、光伏、储能、新能源汽车、消费电子、白色家电等领域。

GIF



投诉或建议