1. 工具说明
MCU:TC397
EB: 26.2.0 (AS440)
2. 目标
使用PORT 20.3,配置为输入捕获模式 。
3.EB配置
3.1McuClockSettingConfig配置:GMT的时钟:100 000 000hz
Mcu->McuClockSettingConfig_0
3.2 GtmGlobalConfiguration_0 配置
标号1为时钟源输入,3.3 为配置说明
标号2为输入时钟后的分频,3.4 为配置说明
3.3 簇 0 分频系数:2
Mcu->GtmGlobalConfiguration_0->GtmClusterConf_0
3.4 GTM 的总时钟分频系数:1/1(GCLK_NUM/GCLK_DEN)
3.5 CMU CLK时钟配置
下图标号1为时钟分频系数
下图标号2为给ICU输入捕获的时钟
上图标号1的参数配置,我这里选择的为clock1 ,当然你也可以选择0 ,很随意。
如图配置的话,ICU的时钟为50M/5000 = 10000hz.
Mcu->GtmGlobalConfiguration
3.6 使用TIM 2 通道4
Mcu->GtmGlobalConfiguration->GtmTimGlobalConf
3.7 配置McuHardwareResourceAllocationConf
Mcu->GtmGlobalConfiguration->McuHardwareResourceAllocationConf->McuGtmAllocationConf->McuGtmTimAllocationConf
3.8 GPIO 配置
PortPinDirection 设置为输入模式,
根据芯片手册可知,这个引脚有三种TIM通道选择, 我这里选择TIM2通道4(根据心情),上面3.6的配置也是根据这个来的。
3.9 ICU 配置
新建一个ICU通道,名字随便取,这里我用的是默认的。
3.9.1 Icu->IcuChannel_3
3.9.2 IcuSignalMeasurement配置
3.9.3 GtmTimerInputConfiguration配置
GtmTimerUsed :选择TIM2 通道4
TimChannelClockSelect :选择的时钟源,这里选择clock1
Icu->IcuChannel_3->GtmTimerInputConfiguration_0
3.10 ResourceM
将自己新加的PWM通道加入这里
4.代码初始化
//包含的头文件
#include "Icu_17_TimerIp.h"
#include "IfxSrc_reg.h"
#include "IfxGtm_bf.h"
//初始化ICU
void INC_Init(void)
{
Icu_17_TimerIp_Init(&Icu_17_TimerIp_Config);
Icu_17_TimerIp_StartSignalMeasurement(IcuConf_IcuChannel_IcuChannel_3); /* 启动测量 */
}
//获取周期和占空比
Icu_17_TimerIp_DutyCycleType DutyCycle_Values3;
float g_period = 0.0;
float g_dutyCycle = 0.0;
//20.3
if (Icu_17_TimerIp_GetInputState(IcuConf_IcuChannel_IcuChannel_3) == ICU_17_TIMERIP_ACTIVE)
{
Icu_17_TimerIp_GetDutyCycleValues(IcuConf_IcuChannel_IcuChannel_3, &DutyCycle_Values3);
g_dutyCycle = ((float)DutyCycle_Values3.ActiveTime / (float)DutyCycle_Values3.PeriodTime)*100;
g_period = (float)DutyCycle_Values3.PeriodTime / 10000;
g_period = 1/g_period;
}