本规约规约 AUTOSAR 基础软件模块 ICU 驱动(Input Capture Unit Driver, ICU)的功能、API 与配置。ICU 驱动位于微控制器抽象层(MCAL),控制输入捕获单元的多种信号测量:
| 缩略语 | 描述 |
|---|---|
| ICU | Input Capture Unit(输入捕获单元) |
| GPT | General Purpose Timer(通用定时器) |
| MCAL | Microcontroller Abstraction Layer(微控制器抽象层) |
| Edge Detection | 边沿检测 |
| Timestamp | 时间戳 |
| Edge Count | 边沿计数 |
| Signal Measurement | 信号测量 |
| Duty Cycle | 占空比(高电平时间 / 周期) |
| Active Edge | 激活边沿(上升/下降/任意) |
AUTOSAR_EXP_LayeredSoftwareArchitecture — 分层软件架构AUTOSAR_SRS_BSWGeneral — 基础软件通用需求AUTOSAR_SWS_BSWGeneral — 基础软件通用规范AUTOSAR_SRS_ICUDriver — ICU 驱动需求AUTOSAR_SRS_GPTDriver — GPT 驱动需求(用作时间戳源)ICU 驱动依赖于底层 ICU 硬件与 GPT 驱动(时间戳源)。
ICU 驱动依赖 EcuM(资源管理)、GPT 驱动(自由运行定时器)、DET(开发错误追踪)、OS(中断管理)、EcuM(唤醒源报告)。
ICU 驱动满足 SRS_Icu_NNNNN 中的 25+ 条需求。SWS_Icu_NNNNN 规范项 ID 约 200+ 条(编号范围 00001-91001)。
ICU 驱动允许以下预配置:
ICU 驱动根据配置的测量模式执行不同操作:
| 错误码 | 含义 |
|---|---|
ICU_E_UNINIT | ICU 未初始化 |
ICU_E_ALREADY_INITIALIZED | ICU 已初始化 |
ICU_E_PARAM_CHANNEL | 无效的通道 |
ICU_E_PARAM_ACTIVATION | 无效的激活条件 |
ICU_E_PARAM_BUFFER_PTR | 无效的缓冲区指针 |
ICU_E_PARAM_BUFFER_SIZE | 无效的缓冲区大小 |
ICU_E_PARAM_NOTIFY_INTERVAL | 无效的通知间隔 |
ICU_E_PARAM_MODE | 无效的模式 |
ICU_E_BUSY | 通道忙 |
无。
无。
无。
无。
Std_ReturnType、Std_VersionInfoType、Std_ConfigType| 类型 | 描述 |
|---|---|
Icu_ConfigType | ICU 抽象配置类型 |
Icu_ChannelType | 通道 ID(uint8/16) |
Icu_ActivationType | 激活条件枚举(ICU_RISING_EDGE / FALLING_EDGE / BOTH_EDGES) |
Icu_ModeType | ICU 模式枚举(ICU_MODE_NORMAL / SLEEP) |
Icu_InputStateType | 输入状态枚举(ICU_ACTIVE / ICU_IDLE) |
Icu_ValueType | 定时器值(uint32) |
Icu_TimestampBufferType | 时间戳缓冲区 |
Icu_EdgeNumberType | 边沿数(uint16/32) |
| API | 功能 |
|---|---|
Icu_Init | 初始化 ICU |
Icu_DeInit | 反初始化 ICU |
Icu_SetMode | 设置模式(Normal/Sleep) |
Icu_DisableWakeup | 禁用唤醒 |
Icu_EnableWakeup | 启用唤醒 |
Icu_CheckWakeup | 检查唤醒 |
Icu_SetActivationCondition | 设置激活条件(边沿) |
Icu_DisableNotification | 禁用通知 |
Icu_EnableNotification | 启用通知 |
Icu_GetInputState | 获取输入状态 |
Icu_StartTimestamp | 启动时间戳 |
Icu_StopTimestamp | 停止时间戳 |
Icu_GetTimestampIndex | 获取时间戳索引 |
Icu_ResetEdgeCount | 重置边沿计数 |
Icu_EnableEdgeCount | 启用边沿计数 |
Icu_EnableEdgeDetection | 启用边沿检测 |
Icu_DisableEdgeDetection | 禁用边沿检测 |
Icu_DisableEdgeCount | 禁用边沿计数 |
Icu_GetEdgeNumbers | 获取边沿数 |
Icu_StartSignalMeasurement | 启动信号测量 |
Icu_StopSignalMeasurement | 停止信号测量 |
Icu_GetTimeElapsed | 获取已用时间 |
Icu_GetDutyCycleValues | 获取占空比值 |
Icu_GetVersionInfo | 获取版本信息 |
Icu_DisableNotificationAsync(draft) | 异步禁用通知 |
Icu_EnableNotificationAsync(draft) | 异步启用通知 |
Icu_SignalNotification_<Channel> | 信号通知回调(应用实现) |
Icu_TimestampNotification_<Channel> | 时间戳通知回调(应用实现) |
共 28 个 API 函数(含 2 个通知回调模板 + 2 个 draft 版本)。
Icu_SignalNotification_<Channel>();Icu_StartTimestamp() → 边沿事件 → 时间戳记录 → 缓冲区满 → Icu_TimestampNotification_<Channel>();Icu_EnableEdgeCount() → 每边沿递增 → Icu_GetEdgeNumbers() 读取;Icu_StartSignalMeasurement() → 测量完成 → Icu_GetTimeElapsed/GetDutyCycleValues();| 容器 | 描述 |
|---|---|
| Icu | 根容器(开发错误检测、版本 API、唤醒支持、多核分区等开关) |
| IcuGeneral | 通用配置(通道数、最大时间戳缓冲区、唤醒支持) |
| IcuChannel | 通道(激活边沿、测量模式、通知回调、唤醒源、时间戳缓冲区) |
| IcuConfigSet | 配置集 |
| IcuPublishedInformation | 发布信息 |
共 5 个 ECUC 容器(含 PublishedInformation),含 30+ 配置参数。
发布信息包括 ICU 模块版本、配置变体、通道数、最大时间戳缓冲区等。
校对轮次:L1 自动校对(2026-06-13)
ICU_E_UNINIT/ALREADY_INITIALIZED/PARAM_CHANNEL/PARAM_ACTIVATION/PARAM_BUFFER_PTR/PARAM_BUFFER_SIZE/PARAM_NOTIFY_INTERVAL/PARAM_MODE/BUSY)完整翻译。