英飞凌TC23x--MCAL配置之 ICU

1 ICU基础知识

1.1 介绍:

AUTOSAR(Automotive Open System Architecture)中的ICU(Input Capture Unit)模块是一个关键组件,主要用于处理汽车电子控制单元(ECU)中的输入信号。

1.2 功能:

  • 信号捕获 : ICU模块用于捕获输入信号的时间特性,如脉冲宽度、频率和占空比。
  • PWM信号解调:它可以解调PWM(脉冲宽度调制)信号。
  • 计数脉冲 :ICU模块能够计数输入信号的脉冲数。
  • 中断生成:它可以生成简单的中断和唤醒中断。

1.3 依赖模块:

  • MCU模块
  • PORT模块
  • EcuM模块

1.4 重要API:

  • IcuSignalMeasurementApi
  • IcuGetDutyCycleValuesApi
  • IcuGetInputStateApi

1.5 应用场景:

  车速传感器:用于捕获车速信号。  
  转向角传感器:用于捕获转向角度信号。  

2 ICU硬件通道

在进行ICU配置前,通常需要先根据MCU各Port的属性确定该通道是否支持ICU采集 ,查看MCU Datasheet,以Infineon Tc234为例,查看Port14.5引脚,确定该通道支持TIM,如图
在这里插入图片描述

3 框图

在这里插入图片描述

4 ICU模块的配置

4.1 Icu\ IcuConfigSet\ IcuConfigSet_0\ General

IcuMaxChannel

配置配置位置IcuMaxChannel
影响Icu_17_GtmCcu6_Cfg.h#define ICU_MAX_CHANNELS
  • 配置的最大ICU通道数

4.2 Icu\ IcuConfigSet\ IcuConfigSet_0\ IcuChanne

IcuChannelId

配置配置位置说明
影响Icu_17_GtmCcu6_Cfg.h每个Channel分配唯一且连续的ID

IcuDefaultStartEdge

配置项配置位置说明
ICU_BOTH_EDGESIcu_17_GtmCcu6_Cfg.h上升沿和下降沿
ICU_FALLING_EDGEIcu_17_GtmCcu6_Cfg.h下降沿
ICU_RISING_EDGEIcu_17_GtmCcu6_Cfg.h上升沿
  • ICU模块会在输入信号边沿跳变时触发捕获。
  • 单边沿捕获在简单的频率测量、脉冲计数、噪声较多或信号对称的情况下具有优势。
  • 双边沿捕获则适用于需要完整波形分析的应用,如测量频率和占空比。

IcuMeasurementMode

配置项配置位置支持Api
ICU_MODE_EDGE_COUNTERIcu_17_GtmCcu6_Cfg.hIcu_EnableEdgeCount()
Icu_DisableEdgeCount()
Icu_GetEdgeNumbers()
Icu_ResetEdgeCount()
ICU_MODE_SIGNAL_EDGE_DETECTIcu_17_GtmCcu6_Cfg.hIcu_EnableNotification()
Icu_DisableNotification()
Icu_GetInputState()
ICU_MODE_SIGNAL_MEASUREMENTIcu_17_GtmCcu6_Cfg.hIcu_GetTimeElapsed()
Icu_GetDutyCycleValues()
Icu_GetInputState()
ICU_MODE_TIMESTAMPIcu_17_GtmCcu6_Cfg.hIcu_StartTimestamp()
Icu_StopTimestamp ()
Icu_GetTimestampIndex()
  • ICU_MODE_SIGNAL_EDGE_DETECT:用于检测信号边沿,适合事件触发。
  • ICU_MODE_SIGNAL_MEASUREMENT:用于测量PWM信号的周期和占空比。
  • ICU_MODE_TIMESTAMP:用于记录边沿事件的时间戳,适合时间间隔分析。
  • ICU_MODE_EDGE_COUNTER:用于脉冲计数,适合高频脉冲应用。

IcuWakeupCapability

配置配置位置说明
影响Icu_17_GtmCcu6_Cfg.h通道是否具备唤醒能力

4.3 Icu\ IcuConfigSet\ IcuConfigSet_0\ IcuSignalMeasurement(IcuSignalEdgeDetection、IcuTimestampMeasurement)

子配置项父配置项 (IcuMeasurementMode)
IcuSignalEdgeDetectionICU_MODE_SIGNAL_EDGE_DETECT

IcuSignalMeasurement|ICU_MODE_SIGNAL_MEASUREMENT
IcuTimestampMeasurement|ICU_MODE_TIMESTAMP

  • 这些配置跟IcuMeasurementMode直接相关

(1)配置在模式为“IcuSignalMeasurement”的情况下可以测量的属性

  • IcuSignalMeasurementProperty
ICU_ACTIVE_TIME:通道被配置为读取计算占空比(激活时间和周期时间)所需的值                 

ICU_HIGH_TIME:通道被配置为读取经过的信号高时间           

ICU_LOW_TIME:配置的通道用于读取运行信号低时间           

ICU_PERIOD_TIME:通道被配置为读取经过的信号周期时间           

5 我的EB配置

5.1 General  Icu\ General

5.2 Icu\ IcuConfigSet Icu\ IcuConfigSet

5.3 Icu\ IcuConfigSet\ IcuConfigSet_0\ IcuChanne Icu\ IcuConfigSet\ IcuConfigSet_0\ IcuChanne

5.4 Icu\ IcuConfigSet\ IcuConfigSet_0\ IcuSignalMeasurement  Icu\ IcuConfigSet\ IcuConfigSet_0\ IcuSignalMeasurement

<think>好的,我现在需要帮助用户查找关于英飞凌TC3XX微控制器MCAL配置方法或教程。用户提到了几个引用来源,可能需要从中提取有用信息。首先,我要确认用户的需求:他们需要配置指南或示例,特别是关于PORT模块、PWM、DSADC和ICU等部分。 根据提供的引用内容,引用[1]详细讲解了McalPORT模块的配置,这可能是一个重要的起点。引用[2]提到了Tc4xx MCAL的PWM配置,特别是GTM部分,虽然针对的是TC4xx,但TC3xx可能有类似的结构,可以作为参考。引用[3]涉及DSADC的配置,包括频率设置和General配置,这可能对用户的ADC部分有帮助。引用[4]提到了ICU配置,特别是TIM0_5和GtmTimInselConfiguration的设置,这可能与输入捕获相关。引用[5]是一个CSDN的下载链接,可能包含更具体的文档或示例代码,但需要用户自行下载查看。 接下来,我需要整理这些信息,分模块进行说明。首先,PORT模块的配置步骤,包括功能复用和电气特性设置,这部分引用[1]提供了详细说明。然后,GTM模块的PWM配置,引用[2]提到了硬件触发和差异部分,可能需要结合TC3xx的具体手册。DSADC的配置需要参考引用[3],涉及时钟分频和滤波器设置。ICU配置则需要查看引用[4]中的TIM和GtmTimInselConfiguration部分。 此外,用户可能需要官方文档,如Aurix Development Studio和MCAL用户手册,这些是标准参考资料。Infineon的官网和社区论坛也是获取示例代码和教程的好地方。CSDN的资源(引用[5])可能包含实际项目中的配置示例,但需要注意来源的可靠性。 用户可能还关心常见问题,比如时钟配置错误或引脚复用冲突,这些问题在配置过程中容易出现,需要强调检查时钟设置和复用选项。最后,生成的相关问题需要覆盖模块功能、配置工具、时钟设置、常见错误和与其他模块的交互,这些都是用户在配置MCAL时可能遇到的后续问题。</think>根据提供的引用内容和系统级要求,以下是关于英飞凌TC3XX微控制器MCAL配置的详细说明: ### 一、TC3XX MCAL基础配置方法 1. **PORT模块配置** - 引脚功能复用需通过`PCTL`寄存器设置,例如将P10.0配置为PWM输出: ```c PORT_10.PCTL.B.PC0 = 0x03; // 选择ALT3功能 ``` - 电气特性配置需设置: * `ESRx`寄存器设置压摆率(Slew Rate) * `PDISC`寄存器禁用下拉电阻 * 引用[1]中详细说明了PDR/PS寄存器配置时序要求 2. **GTM模块PWM配置** 根据引用[2]的硬件触发逻辑: ```c GTM_TOM0_CH0.CTRL.B.CLK_SRC = 1; // 选择CMU_CLK0时钟源 GTM_CMU_CLK0.CLK_CTRL.B.CLK_DIV = 8; // 分频系数Fmod=20MHz ``` 需特别注意`TOMx_TGCy_FUPD_CTRL`寄存器的硬件触发同步配置 3. **DSADC配置要点** 如引用[3]所示: - 主时钟分频:$f_{CLK} = \frac{160MHz}{8} = 20MHz$ - 滤波器系数设置: $$H(z) = \frac{b_0 + b_1z^{-1}}{1 + a_1z^{-1}}$$ 需在`DSADC_MODCFG`寄存器中配置系数表 ### 二、配置工具链参考 1. 官方推荐使用**Aurix Development Studio**中的MCAL配置向导 2. 关键文档: - 《AurixTC3xx_UM_Part1-UserManual-v02_00-EN.pdf》第12章 -MCAL_User_Manual_TC3xx_ADS_v4.0》第4.5节PWM配置时序图 ### 三、典型配置问题分析 1. **时钟配置错误** 当出现$PWM_{output} \neq f_{expected}$时,检查: $$f_{PWM} = \frac{f_{GTM}}{(period+1) \times prescaler}$$ 需验证CMU_CLK分频和TOM通道级联配置[^2] 2. **引脚复用冲突** 使用`PORTx_IOCR`寄存器检查多路复用器状态,确保同一bank内不重复使用ALT模式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值