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_EDGES | Icu_17_GtmCcu6_Cfg.h | 上升沿和下降沿 |
ICU_FALLING_EDGE | Icu_17_GtmCcu6_Cfg.h | 下降沿 |
ICU_RISING_EDGE | Icu_17_GtmCcu6_Cfg.h | 上升沿 |
- ICU模块会在输入信号边沿跳变时触发捕获。
- 单边沿捕获在简单的频率测量、脉冲计数、噪声较多或信号对称的情况下具有优势。
- 双边沿捕获则适用于需要完整波形分析的应用,如测量频率和占空比。
IcuMeasurementMode
配置项 | 配置位置 | 支持Api |
---|---|---|
ICU_MODE_EDGE_COUNTER | Icu_17_GtmCcu6_Cfg.h | Icu_EnableEdgeCount() Icu_DisableEdgeCount() Icu_GetEdgeNumbers() Icu_ResetEdgeCount() |
ICU_MODE_SIGNAL_EDGE_DETECT | Icu_17_GtmCcu6_Cfg.h | Icu_EnableNotification() Icu_DisableNotification() Icu_GetInputState() |
ICU_MODE_SIGNAL_MEASUREMENT | Icu_17_GtmCcu6_Cfg.h | Icu_GetTimeElapsed() Icu_GetDutyCycleValues() Icu_GetInputState() |
ICU_MODE_TIMESTAMP | Icu_17_GtmCcu6_Cfg.h | Icu_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) |
---|---|
IcuSignalEdgeDetection | ICU_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:通道被配置为读取经过的信号周期时间