随着能源需求的日益短缺,科技的日趋智能化,高精度精密控制已日趋成为人们生产生活的必然趋势,中科昊芯顺应时代要求,推出适用于高精度工业自动化运动控制的新版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,如下图所示。
实例所采用软硬件开发环境如下表所示:
基于以上分析,在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波的输出频率变化,因而测量更加精准。
全部0条评论
快来发表一下你的评论吧 !