AUTOSAR TTCAN Driver 规范
1. TTCAN Driver 架构与组件
TTCAN Driver是AUTOSAR基础软件的一个重要组件,为上层应用提供与硬件无关的时间触发CAN通信接口。下图展示了TTCAN Driver在AUTOSAR架构中的位置及主要组件:
1.1 架构组成说明
-
服务层
- TTCAN接口(TtcanIf):提供标准化的API,供上层应用使用TTCAN功能
-
基础层
- TTCAN Driver(Ttcan):核心组件,包含以下主要功能模块:
- 控制器API:提供状态查询和控制功能
- 时间触发功能:管理时间标记和同步
- 错误处理:处理各类TTCAN通信错误
- TTCAN Driver(Ttcan):核心组件,包含以下主要功能模块:
-
微控制器抽象层
- 硬件访问接口:直接与CAN控制器硬件交互
TTCAN Driver为上层应用提供硬件无关的API接口,支持时间触发通信、控制器状态管理、L-PDU传输接收、同步和时间触发操作以及错误处理等功能。它是实现确定性通信的关键组件,保证消息在预定义时间窗口内传输。
2. TTCAN控制器状态机
TTCAN控制器在运行过程中会经历不同的状态。以下状态机图展示了TTCAN控制器的各种状态及其转换:
2.1 控制器状态说明
-
未初始化(UNINIT)
- TTCAN控制器在初始化前的默认状态
- 此状态下不能执行任何通信功能
-
停止(STOPPED)
- 控制器已初始化但尚未启动
- 可以进行配置,但不能收发消息
-
启动(STARTED)
- 控制器活动状态,可以进行通信
- 包含两个子状态:
- 事件同步(EVENT_SYNC):等待同步消息进行时钟同步
- 时间触发(TIME_TRIGGERED):已同步,按时间表进行通信
-
睡眠(SLEEP)
- 低功耗模式,减少功耗
- 保持最小功能,可通过唤醒消息恢复
-
错误(ERROR)
- 发生严重错误时的状态
- 需要通过错误恢复机制返回到STOPPED状态
2.2 状态转换说明
- 初始化转换:系统上电后,通过
Can_Init()
调用将控制器从UNINIT转到STOPPED状态 - 启动/停止转换:STOPPED和STARTED状态之间可以通过控制命令相互转换
- 同步转换:在STARTED状态内,控制器可在事件同步和时间触发子状态间切换
- 睡眠管理:STOPPED状态可进入SLEEP状态以节能,收到唤醒消息后返回STOPPED
- 错误处理:发生错误时转入ERROR状态,错误恢复后回到STOPPED状态
TTCAN控制器状态机设计确保了通信的可靠性和对异常情况的正确处理,同时支持低功耗模式以适应不同工作环境需求。
3. TTCAN Driver API类图
TTCAN Driver提供了丰富的API接口,支持时间触发通信的各种功能。下图展示了主要的API接口及数据类型:
3.1 数据类型说明
-
时间相关类型
Can_TTTimeType
:表示TTCAN时间的数据结构,包含纳秒、周期和宏时钟刻度Can_TTTimeSourceType
:定义时间源类型,如外部全局时间、参考标记、主节点校正等
-
同步与控制类型
Can_TTMasterSlaveModeType
:定义节点的主/从模式Can_TTSyncModeEnumType
:同步模式枚举,包括全局时间、外部时钟同步等Can_TTMasterStateType
:描述主节点的当前状态信息
-
错误处理类型
Can_TTErrorLevelEnumType
:错误级别枚举,从S0(无错误)到S3(总线关闭)Can_TTErrorLevelType
:错误状态信息,包含错误级别和通信中断标志
3.2 API函数分组
-
基础API函数
Can_TTGetControllerTime
:获取控制器当前时间Can_TTGetMasterState
:获取主/从状态信息Can_TTGetNTUActual
:获取实际网络时间单位Can_TTGetErrorLevel
:获取当前错误级别
-
命令API函数
Can_TTSetNextIsGap
:设置下一个时间窗为间隙Can_TTSetEndOfGap
:标记间隙结束Can_TTSetTimeCommand
:发送时间同步命令Can_TTGlobalTimePreset
:预设全局时间Can_TTSetExtClockSyncCommand
:设置外部时钟同步命令Can_TTSetNTUAdjust
:调整网络时间单位
-
可选API函数
- 时间标记管理:设置、取消、确认和中断控制
- 同步质量评估:检查同步状态
- 接收功能:带时间戳的消息接收
-
调度函数
Can_TTMainFunction_IRQ
:处理中断相关的周期性任务
这些API为应用程序提供了全面的控制能力,使其能够精确管理TTCAN通信中的时间同步和消息传输。
4. TTCAN配置结构
TTCAN模块的配置通过特定的容器和参数设置,下图展示了主要配置结构:
4.1 配置容器说明
-
CanTTController容器
- 包含TTCAN控制器的核心配置参数
- 主要参数包括:
CanTTControllerId
:控制器标识符(0-255)CanTTControllerBasicCycleLength
:基本周期长度(微秒)CanTTControllerCommunicationCycle
:通信周期数CanTTControllerIsMaster
:是否为主控制器CanTTControllerMaxMessageTime
:最大消息传输时间CanTTControllerWatchdogDeadline
:看门狗超时时间CanTTControllerSupervisionOptions
:监督选项
-
CanTTHardwareObjectTrigger容器
- 定义硬件对象与时间触发事件的关联
- 主要参数包括:
CanTTHardwareObjectTriggerRef
:引用的硬件对象CanTTHardwareObjectTriggerReferenceMark
:参考时间标记CanTTHardwareObjectTriggerTimeMarkOffset
:时间标记偏移CanTTHardwareObjectTriggerTransmitEnable
:是否启用传输CanTTHardwareObjectTriggerTransmitRequest
:传输请求标志
4.2 配置关系说明
-
组合关系
- 一个CanTTController容器可以包含多个CanTTHardwareObjectTrigger容器
- Can模块包含多个CanController,每个CanController又包含多个CanHardwareObject
-
引用关系
- CanController与TTController之间存在一对一的关联关系
- CanTTHardwareObjectTrigger通过引用关联到特定的CanHardwareObject
通过这种结构化的配置,TTCAN模块可以灵活适应不同的应用场景和硬件平台,同时保持统一的接口标准。
5. TTCAN通信交互流程
TTCAN Driver与其他模块的交互过程涉及初始化、同步、消息传输等多个环节,下图展示了典型的交互序列:
5.1 交互流程说明
-
初始化过程
- 应用程序调用
TtcanIf_Init()
- TtcanIf模块调用
Can_Init()
初始化TTCAN Driver - TTCAN Driver完成硬件初始化并返回状态
- 应用程序调用
-
时间触发同步
- 应用程序请求同步状态
- 通过
Can_TTGetMasterState()
获取主/从模式信息、同步模式状态等 - 信息沿调用链向上返回给应用
-
L-PDU传输过程
- 应用程序通过
TtcanIf_Transmit()
发送请求 - 根据当前模式不同,TTCAN驱动会:
- 时间触发传输:检查传输窗口,在适当时间发送
- 事件触发传输:立即传输消息
- 传输确认沿调用链向上反馈
- 应用程序通过
-
错误处理过程
- 硬件产生错误中断
- TTCAN Driver进行内部错误处理,包括错误级别评估和状态转换
- 通过
Can_TTGetErrorLevel()
报告错误状态
-
周期性检查
- 应用程序周期性调用检查函数
- 触发
Can_TTMainFunction_IRQ()
执行周期性任务 - 检查硬件状态并进行必要处理
5.2 交互要点
-
层次化架构
- 层次化的调用结构确保了职责分离
- 每层模块专注于各自的功能实现
-
错误处理机制
- 错误处理贯穿整个交互过程
- 分级错误报告和处理确保系统稳定性
-
时序控制
- 时间触发通信的特性要求精确的时序控制
- 多种同步机制保证节点间时钟一致性
-
状态反馈
- 状态信息通过专门的API及时向上层反馈
- 提供完整的系统可观测性
这种结构化的交互模式保证了TTCAN通信的可靠性和确定性,满足了汽车电子系统对实时性的严格要求。
6. 总结
AUTOSAR TTCAN Driver模块是实现确定性CAN通信的关键组件,通过提供标准化的API接口,它使上层应用可以利用时间触发通信的优势,同时屏蔽底层硬件差异。主要特点包括:
- 架构设计:遵循AUTOSAR分层架构,明确定义模块边界和接口
- 状态管理:完善的状态机确保通信过程可控和可靠
- 丰富API:全面的API支持各种时间触发通信场景
- 灵活配置:结构化的配置参数适应不同应用需求
- 标准交互:规范的交互流程保证模块间协作顺畅
TTCAN Driver为汽车电子系统提供了高确定性的通信能力,特别适合安全关键型应用,如底盘控制、动力传动系统等对通信时序有严格要求的场景。