引入
TMS320F28069的eCAP(增强型捕获模块)是一个强大的外设,用于精确测量和捕获输入信号的事件和时间戳。
在电机控制、传感器数据采集和信号处理等应用中,eCAP模块可以用于测量霍尔传感器、编码器或其他数字输入信号的周期、频率和相位等信息。通过捕获这些信号的事件和时间戳,用户可以精确地控制电机转速、位置和方向,或者实现精确的数据采集和分析。
一、eCAP模块基本介绍
1、特点与功能
以下是eCAP的主要特点和功能:
- 多通道捕获:TMS320F28069微控制器通常包含多个eCAP模块,每个模块可以独立配置和操作。这使得用户能够同时捕获和测量多个输入信号的事件。
- 事件检测:eCAP模块可以配置为检测输入信号的上升沿、下降沿或两者都检测。当检测到这些事件时,eCAP会生成一个中断请求,通知CPU进行处理。
- 时间戳捕获:当检测到事件时,eCAP模块会捕获当前的计时器值,并将其存储在时间戳寄存器中。这些时间戳可以用于计算事件之间的时间间隔,从而确定输入信号的频率、周期或其他相关参数。
- 灵活性:eCAP模块具有高度的灵活性,可以通过编程配置来适应不同的输入信号和测量需求。用户可以设置捕获模式、极性、预分频器等参数,以满足特定的应用要求。
- 中断支持:eCAP模块支持中断功能,当检测到事件或满足其他条件时,可以触发中断请求。这使得用户能够在CPU执行其他任务时,及时响应和处理eCAP模块捕获的事件。
2、包含资源
TMS320F28069有4路eCAP模块,包括以下资源:
- 可分配的输入引脚
- 32b时间基准(计数器)
- 4个32b时间窗捕获控制寄存器
- 独立的边缘极性选择
- 输入信号分频(2~64)
- 4个捕获事件均可引起中断
3、可设置模式
可设置的模式有捕捉模式或APWM模式:
-
捕捉模式:
- 边沿捕捉:eCAP可以配置为在输入信号的上升沿或下降沿时捕获时间戳。这种模式下,每当输入信号发生边沿变化时,eCAP都会记录当前的定时器或时钟周期值。
- 窗口捕捉:在此模式下,eCAP会在两个预设的时间窗口内检测输入信号的边沿。如果在这个窗口内检测到边沿,eCAP会捕获时间戳。这种模式常用于检测输入信号的抖动或稳定性。
- 周期测量:eCAP可以配置为测量输入信号的周期。它会连续捕获两个相邻的边沿,并计算它们之间的时间差,从而得到信号的周期。
-
APWM模式:
- APWM(Advanced PWM)模式允许eCAP模块作为PWM发生器的输入,用于生成复杂的PWM波形。在此模式下,eCAP会根据捕获到的输入信号边沿来生成PWM波形。
- 例如,当eCAP在输入信号的上升沿时开始生成PWM波形,并在下降沿时结束,这样可以根据输入信号的周期或占空比来调整PWM波形的参数。
- APWM模式在需要与外部事件同步的PWM控制应用中非常有用,如电机控制、传感器驱动等。
一般来说前者较为常用,在捕捉模式下可将eCAP分为事件分频、边沿极性选择与验证、中断控制几大部分(具体可查相关资料)。基本工作流程:
配置好eCAP模块的引脚后,外部事件由引脚输入,首先通过模块的分频部分,分频为2~64(也可选择跳过分频部分)该环节主要针对输入事件信号频率很高的情况。经分频后的信号被送至边沿及序列审核部分,边沿审核即设置为上升沿或下降沿有效,序列审核则是指分配当前对哪个寄存器(CAP1~CAP4)作用。最后就是中断执行控制部分。
二、Simulink中使用eCAP
在上期的ePWM中介绍了如何配置ePWM模块使其输出PWM波,本期通过eCAP模块来测量PWM波的占空比是否正确。
缺乏硬件,根据专业书籍该实验需将ECAP1引脚用杜邦线先后与EPWM1A引脚和EPWM1B连接起来!
1、基本模型设置
Solver设置定步长为0.5s,时钟90MHz,LSPCLK低速时钟外设4分频:
eCAP的ECAP1 pin assignment引脚选择GPIO5:
2、变量初始化
用Data Store Memory模块初始化10个全局变量,用来实现对一方波信号的频率,周期、占空比测量。t1(t2、t3)是第一(二、三)个捕捉事件发生时计数器的值;T1(T2)表示t2-t1(t3-t1),即测试方波的高电平(整个周期)时间对应的计数值;CLK是系统时钟值,Duty是实际方波的占空比,Frequence是方波频率,Period则是周期,Flag表示检测完成时的标志位。
3、ePWM模块配置(产生PWM)
生成两路频率为10kHz,一个是占空比为50%的PWM,另一个是占空比为60%的PWM:
4、设置eCAP模块
使用eCAP1模式,配置为连续控制。第一次事件的触发极性为上升沿,第二次为下降沿,第三次也为上升沿,计数时间的数据类型为无符号的32位整型。中断配置如下图,在第三次事件之后触发中断,停止计数并重置。在eCAP输出接上Simulink的demux模块,并将输出的值赋予t1、t2、t3(Data StoreWrite模块)
5、计算T1、T2并对Flag置位
根据t1、t2、t3计算T1、T2并对Flag置位,表示一次检测结束。(Flag标志位,作为while子系统的触发信号)
6、配置硬件中断模块
根据eCAP1的中断向量号,它属于CPU中断第四组的第一个PIE中断。
⑦标志位触发,在While(1)中触发计算模块,对输入方波的频率、周期、占空比(PWM参数)进行计算,如下图对它们的计算,其中CLK=1/90000000。
上图其实是放在Triggered Subsystem(while)里的 Subsystem的
三、仿真整体图
下图为eCAP的Simlink模型整体图:
封装后这个样子:
将模型编译后下载到主控板,然后再CCS中打开工程文件进行操作,具体可查阅相关CCS的操作方法,这里不做演示。
往期精彩
STM32专栏(付费9.9)http://t.csdnimg.cn/H0u9Q
OpenCV-Python专栏(付费9.9)http://t.csdnimg.cn/htF7k
AI底层逻辑专栏(付费9.9)http://t.csdnimg.cn/keH1Q
机器学习专栏(免费)http://t.csdnimg.cn/FaXzAFreeRTOS专栏(免费)http://t.csdnimg.cn/SjIqU电机控制专栏(免费)http://t.csdnimg.cn/FNWM7