芯经验丨平头哥助力中科昊芯HX2000系列芯片之HRCAP高精度脉冲捕获

描述

随着能源需求的日益短缺,科技的日趋智能化,高精度精密控制已日趋成为人们生产生活的必然趋势,中科昊芯顺应时代要求,推出适用于高精度工业自动化运动控制的新版HXS320F28034PNT数字信号处理器DSP,芯片HRCAP模块以数百皮秒内的典型分频率测量外部脉冲的宽度,可更有效助力于工程师实现3D精密打印、超声波声纳测距与气体检测、扫地机器人与数控机床等精密测量功能。


 

芯片

 

自平头哥半导体有限公司的剑池集成开发环境(简称“CDK”)V2.12.1支持HXS320F28034PNT芯片调试以来,本期以HRCAP捕获变频PWM输出实例对HRCAP脉冲捕获原理展开介绍。


 

HXS320F28034PNT HRCAP高精度脉冲捕获原理如下,通过控制寄存器HCCTL[HCCAPCLKSEL]选择HRCAP时钟,HCCAPCLK以系统时钟SYSCLK或倍频时钟PLLCLK产生16位计数HCCOUNTER,通过校准寄存器HCCAL[HRPWMSEL]选择HRCAP边沿探测逻辑,运行于正常分辨率或高分辨率捕获模式,通过HRCAPxINTn中断触发响应PIE执行:当检测到上升沿与下降沿时,通过计数捕获产生HCCOUNTER值,并在计数器复位为0之前被捕获到16位寄存器HCCAPCNTRISE0与HCCAPCNTFALL0,即实际低电平和高电平脉冲宽度分别为HCCAPCNTFALL0+1和HCCAPCNTRISE0+1,等待下一脉冲周期上升沿时载入上升沿与下降沿捕获寄存器HCCAPCNTRISE1与HCCAPCNTFALL1。通过GPIOMUX配置外设引脚捕获功能,从而输出相应的PWM波。因此在同一时间间隔内,下降沿捕获相比上升沿捕获,可捕获到的脉冲边沿计数增加一倍,使得捕获分辨率提高一倍。

 

芯片

 

由此设计高分辨率脉冲捕获实例:HRCAP1与HRCAP2分别捕获两组向下计数与向上计数,频率在30kHz~120kHz间变化的PWM波上升沿与下降沿,通过GPIOMUX配置HRCAP输出引脚GPIO26与GPIO27上输出相应的PWM波,故硬件连接为GPIO0-GPIO26、GPIO2-GPIO27,如下图所示。

 

芯片

 

实例所采用软硬件开发环境如下表所示:


 

开发环境

开发板

仿真器

剑池集成开发环境V2.12.1

Core_DSC28034核心板

HX100V2

 

芯片

 

 

芯片 

 

 

 

 

下载地址:

https://occ.t-head.cn/community/download?id=575997419775328256

申请地址:

http://haawking.cn/core28034

申请地址:

http://haawking.cn/DSP-EMULATOR

 

基于以上分析,在CDK上开发HRCAP捕获变频PWM输出程序,代码包括:HRCAP与EPWM外设GPIO引脚、捕获功能配置程序,HRCAP捕获两组向下计数与向上计数,频率在30kHz~120kHz间变化的PWM波上升沿与下降沿的中断服务程序,主程序调用执行。

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
1.int main(void)
2.{ 
3.   /*系统时钟初始化*/
4.   InitSysCtrl();
5.
6.   /*LED初始化*/
7.   InitLED();
8.
9.   /*HRCAP与EPWM的GPIO引脚定义*/
10.   InitHRCapGpio();
11.   InitEPwm1Gpio();
12.   InitEPwm2Gpio();
13.    
14.    /*关中断*/
15.    IER=0x0000;
16.    IFR=0x0000;
17.
18.    /*打开中断向量表*/
19.    InitPieVectTable();
20.    
21.    EALLOW;
22.    /*中断向量表HRCAP1_INT与HRCAP2_INT指向执行相应的脉冲捕获中断服务程序*/
23.    PieVectTable.HRCAP1_INT=&HRCAP1_Isr;
24.    PieVectTable.HRCAP2_INT=&HRCAP2_Isr;
25.    EDIS;
26. 
27.    /*HRCAP1上升沿捕获与HRCAP2下降沿捕获功能配置*/
28.    HRCAP1_Config();
29.    HRCAP2_Config();
30.    
31.    EALLOW;
32.    /*禁止EPWM的时基使能,允许EPWM初始化配置写入*/
33.    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=0;
34.    EDIS;
35.    
36.    /*EPWM的初始化配置:PWM1采用向下计数,PWM2采用向上计数*/
37.    ePWM1_Config(1000);
38.    ePWM2_Config(1000);
39.    
40.    EALLOW;
41.    /*打开EPWM的时基使能,使EPWM的初始化配置起作用*/
42.    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=1;
43.    EDIS;
44.    
45.    /*指令周期延迟决策变量定义,用于完成捕获EPWM波*/
46.    first,rise=0;
47.    
48.    /*捕获时间测定判断变量定义*/
49.    HRCap1IntCount,HRCap1PassCount=0;
50.    HRCap2IntCount,HRCap2PassCount=0;
51.    
52.    /*使能打开CPU IER的第4组中断向量*/
53.    IER|=M_INT4;
54.    
55.    /*使能打开PIE IER的第4组中断向量的第七、八个向量*/
56.    PieCtrlRegs.PIEIER4.bit.INTx7=1;
57.    PieCtrlRegs.PIEIER4.bit.INTx8=1;
58.    
59.    /*使能打开全局中断*/
60.    EINT;
61.    while(1)
62.    { 
63.       /*判断HRCap2与HRCap1的捕获时间*/
64.      if(HRCap2PassCount>1.25*HRCap1PassCount)
65.      { 
66.          GpioDataRegs.GPBTOGGLE.bit.GPIO44=1;
67.          DELAY_US(1000000);
68.      }
69.      else
70.      { 
71.          GpioDataRegs.GPBSET.bit.GPIO44=1;
72.          DELAY_US(1000000);
73.      }
74.    }
75.    return 0;
76.}

 

CDK上开发HRCAP捕获变频PWM输出程序,其编译结果为:


 

芯片

 

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

 

芯片

 

调试后,HRCAP输出捕获的PWM周期变化波形如下:‍

 

芯片

 

为证明HRCAP的高精度脉冲捕获有效性,本设计实例采用ECAP与HRCAP捕获两路向下计数、同等周期范围变化的PWM波进行对比,同时通过设置LED1闪灯来对比ECAP与HRCAP的捕获时间,效果如下:


 

芯片

 

从图中可以看出,HRCAP相较于ECAP脉冲捕获用时减少一半,故能更加精细地读出同等变频PWM波的输出频率变化,因而测量更加精准。

 

 

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

全部0条评论

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

×
20
完善资料,
赚取积分