芯教程丨平头哥助力昊芯HX2000系列芯片QEP电机测速

描述

随着能源的日益短缺,科技的日趋智能化,高精度的脉冲测量,已日趋成为人们生产生活必然趋势。中科昊芯顺应时代要求,推出适用于高精度工业自动化运动控制的新版HXS320F28034PNT数字信号处理器DSP,芯片QEP模块以16位T法与32位M法,适配于较低与较高速度等级测速,更加有效助力于工程师实现高精度脉冲测量,广泛应用于电动车、电动汽车、轨道交通、全电飞机、新能源发电、机器人等工业自动化高精度控制领域。

 

 

 

自平头哥半导体有限公司的剑池集成开发环境(简称“CDK”)支持HX2000系列芯片调试以来,本期以QEP测速实例对QEP电机测速展开介绍。

 

HX2000系列QEP测速的实现方式如下:采用GPIO MUX定义引脚:获取差分编码器正交脉冲QEPA与QEPB、索引QEPI信号;通过QDECCTL[XCR]选择,上升沿、下降沿或双边沿捕获计数方式,得到时钟信号xCLK;经解码QDU逻辑处理,得到方向的高低电平信号iDIR;通过QDECCTL[QSRC]选择引脚模式:正交、方向、增或减计数,读取方向QDIR、时钟QCLK信号;通过QEPCTL[PCRM]选择,位置计数控制PCCU模式:索引位置事件、最大位置锁存、单位超时锁存;使能QEPCTL[QPEN],捕获N线光电编码器输出双边沿脉冲,使位置计数器产生计数,从而计算电机转速,常用方法如下:

 

芯片

 

(1)T法:一个脉冲周期fclk内,捕获脉冲计数,载入16位定时器QCTMR。单位事件发生时,更新载入QCPRDLAT,电机转速n=60*fclk/(4N*QCPRDLAT)。QCTMR上溢时,位置方向QDIR将变化,使捕获单元QEPSTS[COEF]发生错误标志,故仅适用于低速测量。

(2)M法:规定检测事件Tc内,捕获脉冲计数。单位事件发生时,锁存到32位QPOSILAT和QPOSSLAT,故电机转速n=60*QPOSSLAT/(4N*Tc),适用于高速测量。

 

 

 

由此设计QEP测速实例:EPWM配置1KHz PWM波,模拟1000线编码器旋转,EQEP采用M法与T法测量60rpm与6000rpm下旋转的转速,单位周期为SysFreq*100,采用上升沿计数,捕获得到脉冲计数,实现转速测量,采用定时器中断实现三种不同功能切换,故硬件连接如下:GPIO0-GPIO20,GPIO1-GPIO21。

 

芯片

 

基于以上分析,在CDK上开发QEP脉冲捕获输出,代码包括:EPWM与EQEP的GPIO引脚配置,EPWM 1KHz两路互差90°的PWM波输出配置,EQEP单位时间锁存计数捕获功能配置,定时器Timer0配置,计数捕获、M法与T法测速程序及其功能切换的定时器中断服务程序,主程序调用执行。

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

1.int main(void)2.{3.  /*初始化系统控制*/4.  InitSysCtrl();5.  /*初始EPWM GPIO*/6.  InitEPwm1Gpio();7.  /*EQEP1引脚配置*/8.  InitEQep1Gpio();9.  /*初始化LED配置,用于指示实际转速是否到达给定转速*/10.  InitLED();11.  /*关中断*/12.  InitPieCtrl();13.  /*清中断*/14.  IER = 0x0000;15.  IFR = 0x0000;16.  /*初始化PIE中断向量表*/17.  InitPieVectTable();18.  /*定时器配置*/19.  Timer0_init();20.  EALLOW;21.  /*将timer0_ISR入口地址赋给TINT0,执行M法、T法测速切换中断服务程序*/22.  PieVectTable.TINT0 = &timer0_ISR;23.  EDIS;24.  /*电机转速初始化*/25.  MotorSpeed_init();26.  EALLOW;27.  /*禁用TBCLK同步,允许EPWM初始化配置*/28.  SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;29.  EDIS;30.  /*配置epwm1,用于模拟编码器旋转*/31.  EPWM1_Config();32.  EALLOW;33.  /*使能TBCLK同步,EPWM配置功能起作用*/34.  SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;35.  EDIS;36.  /*EQEP脉冲捕获配置*/37.  EQEP_pulseCap();38.  /*使能打开相应的CPU IER中断*/39.  IER |= M_INT1;40.  /*使能打开相应的PIE IER中断*/41.  PieCtrlRegs.PIEIER1.bit.INTx7 = 1;42.  /*使能打开全局中断*/43.  EINT;44.  while(1)45.  {}46.  return 0;47.}

 

CDK上开发QEP测速程序,其编译结果为:

 

芯片

 

编译通过后,就可以开始调试了,其中M法测速调试结果如下:

 

芯片

 

T法测速调试结果如下:

 

芯片

 

所捕获的光电编码器QEP正交脉冲波形为:

 

芯片

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分