AUTOSAR图解==>AUTOSAR_SWS_TTCANDriver

AUTOSAR TTCAN Driver 规范

AUTOSAR 时间触发CAN驱动详细技术说明

1. TTCAN Driver 架构与组件

TTCAN Driver是AUTOSAR基础软件的一个重要组件,为上层应用提供与硬件无关的时间触发CAN通信接口。下图展示了TTCAN Driver在AUTOSAR架构中的位置及主要组件:

在这里插入图片描述

1.1 架构组成说明

  1. 服务层

    • TTCAN接口(TtcanIf):提供标准化的API,供上层应用使用TTCAN功能
  2. 基础层

    • TTCAN Driver(Ttcan):核心组件,包含以下主要功能模块:
      • 控制器API:提供状态查询和控制功能
      • 时间触发功能:管理时间标记和同步
      • 错误处理:处理各类TTCAN通信错误
  3. 微控制器抽象层

    • 硬件访问接口:直接与CAN控制器硬件交互

TTCAN Driver为上层应用提供硬件无关的API接口,支持时间触发通信、控制器状态管理、L-PDU传输接收、同步和时间触发操作以及错误处理等功能。它是实现确定性通信的关键组件,保证消息在预定义时间窗口内传输。


2. TTCAN控制器状态机

TTCAN控制器在运行过程中会经历不同的状态。以下状态机图展示了TTCAN控制器的各种状态及其转换:

在这里插入图片描述

2.1 控制器状态说明

  1. 未初始化(UNINIT)

    • TTCAN控制器在初始化前的默认状态
    • 此状态下不能执行任何通信功能
  2. 停止(STOPPED)

    • 控制器已初始化但尚未启动
    • 可以进行配置,但不能收发消息
  3. 启动(STARTED)

    • 控制器活动状态,可以进行通信
    • 包含两个子状态:
      • 事件同步(EVENT_SYNC):等待同步消息进行时钟同步
      • 时间触发(TIME_TRIGGERED):已同步,按时间表进行通信
  4. 睡眠(SLEEP)

    • 低功耗模式,减少功耗
    • 保持最小功能,可通过唤醒消息恢复
  5. 错误(ERROR)

    • 发生严重错误时的状态
    • 需要通过错误恢复机制返回到STOPPED状态

2.2 状态转换说明

  1. 初始化转换:系统上电后,通过Can_Init()调用将控制器从UNINIT转到STOPPED状态
  2. 启动/停止转换:STOPPED和STARTED状态之间可以通过控制命令相互转换
  3. 同步转换:在STARTED状态内,控制器可在事件同步和时间触发子状态间切换
  4. 睡眠管理:STOPPED状态可进入SLEEP状态以节能,收到唤醒消息后返回STOPPED
  5. 错误处理:发生错误时转入ERROR状态,错误恢复后回到STOPPED状态

TTCAN控制器状态机设计确保了通信的可靠性和对异常情况的正确处理,同时支持低功耗模式以适应不同工作环境需求。


3. TTCAN Driver API类图

TTCAN Driver提供了丰富的API接口,支持时间触发通信的各种功能。下图展示了主要的API接口及数据类型:

在这里插入图片描述

3.1 数据类型说明

  1. 时间相关类型

    • Can_TTTimeType:表示TTCAN时间的数据结构,包含纳秒、周期和宏时钟刻度
    • Can_TTTimeSourceType:定义时间源类型,如外部全局时间、参考标记、主节点校正等
  2. 同步与控制类型

    • Can_TTMasterSlaveModeType:定义节点的主/从模式
    • Can_TTSyncModeEnumType:同步模式枚举,包括全局时间、外部时钟同步等
    • Can_TTMasterStateType:描述主节点的当前状态信息
  3. 错误处理类型

    • Can_TTErrorLevelEnumType:错误级别枚举,从S0(无错误)到S3(总线关闭)
    • Can_TTErrorLevelType:错误状态信息,包含错误级别和通信中断标志

3.2 API函数分组

  1. 基础API函数

    • Can_TTGetControllerTime:获取控制器当前时间
    • Can_TTGetMasterState:获取主/从状态信息
    • Can_TTGetNTUActual:获取实际网络时间单位
    • Can_TTGetErrorLevel:获取当前错误级别
  2. 命令API函数

    • Can_TTSetNextIsGap:设置下一个时间窗为间隙
    • Can_TTSetEndOfGap:标记间隙结束
    • Can_TTSetTimeCommand:发送时间同步命令
    • Can_TTGlobalTimePreset:预设全局时间
    • Can_TTSetExtClockSyncCommand:设置外部时钟同步命令
    • Can_TTSetNTUAdjust:调整网络时间单位
  3. 可选API函数

    • 时间标记管理:设置、取消、确认和中断控制
    • 同步质量评估:检查同步状态
    • 接收功能:带时间戳的消息接收
  4. 调度函数

    • Can_TTMainFunction_IRQ:处理中断相关的周期性任务

这些API为应用程序提供了全面的控制能力,使其能够精确管理TTCAN通信中的时间同步和消息传输。


4. TTCAN配置结构

TTCAN模块的配置通过特定的容器和参数设置,下图展示了主要配置结构:

在这里插入图片描述

4.1 配置容器说明

  1. CanTTController容器

    • 包含TTCAN控制器的核心配置参数
    • 主要参数包括:
      • CanTTControllerId:控制器标识符(0-255)
      • CanTTControllerBasicCycleLength:基本周期长度(微秒)
      • CanTTControllerCommunicationCycle:通信周期数
      • CanTTControllerIsMaster:是否为主控制器
      • CanTTControllerMaxMessageTime:最大消息传输时间
      • CanTTControllerWatchdogDeadline:看门狗超时时间
      • CanTTControllerSupervisionOptions:监督选项
  2. CanTTHardwareObjectTrigger容器

    • 定义硬件对象与时间触发事件的关联
    • 主要参数包括:
      • CanTTHardwareObjectTriggerRef:引用的硬件对象
      • CanTTHardwareObjectTriggerReferenceMark:参考时间标记
      • CanTTHardwareObjectTriggerTimeMarkOffset:时间标记偏移
      • CanTTHardwareObjectTriggerTransmitEnable:是否启用传输
      • CanTTHardwareObjectTriggerTransmitRequest:传输请求标志

4.2 配置关系说明

  1. 组合关系

    • 一个CanTTController容器可以包含多个CanTTHardwareObjectTrigger容器
    • Can模块包含多个CanController,每个CanController又包含多个CanHardwareObject
  2. 引用关系

    • CanController与TTController之间存在一对一的关联关系
    • CanTTHardwareObjectTrigger通过引用关联到特定的CanHardwareObject

通过这种结构化的配置,TTCAN模块可以灵活适应不同的应用场景和硬件平台,同时保持统一的接口标准。


5. TTCAN通信交互流程

TTCAN Driver与其他模块的交互过程涉及初始化、同步、消息传输等多个环节,下图展示了典型的交互序列:

在这里插入图片描述

5.1 交互流程说明

  1. 初始化过程

    • 应用程序调用TtcanIf_Init()
    • TtcanIf模块调用Can_Init()初始化TTCAN Driver
    • TTCAN Driver完成硬件初始化并返回状态
  2. 时间触发同步

    • 应用程序请求同步状态
    • 通过Can_TTGetMasterState()获取主/从模式信息、同步模式状态等
    • 信息沿调用链向上返回给应用
  3. L-PDU传输过程

    • 应用程序通过TtcanIf_Transmit()发送请求
    • 根据当前模式不同,TTCAN驱动会:
      • 时间触发传输:检查传输窗口,在适当时间发送
      • 事件触发传输:立即传输消息
    • 传输确认沿调用链向上反馈
  4. 错误处理过程

    • 硬件产生错误中断
    • TTCAN Driver进行内部错误处理,包括错误级别评估和状态转换
    • 通过Can_TTGetErrorLevel()报告错误状态
  5. 周期性检查

    • 应用程序周期性调用检查函数
    • 触发Can_TTMainFunction_IRQ()执行周期性任务
    • 检查硬件状态并进行必要处理

5.2 交互要点

  1. 层次化架构

    • 层次化的调用结构确保了职责分离
    • 每层模块专注于各自的功能实现
  2. 错误处理机制

    • 错误处理贯穿整个交互过程
    • 分级错误报告和处理确保系统稳定性
  3. 时序控制

    • 时间触发通信的特性要求精确的时序控制
    • 多种同步机制保证节点间时钟一致性
  4. 状态反馈

    • 状态信息通过专门的API及时向上层反馈
    • 提供完整的系统可观测性

这种结构化的交互模式保证了TTCAN通信的可靠性和确定性,满足了汽车电子系统对实时性的严格要求。


6. 总结

AUTOSAR TTCAN Driver模块是实现确定性CAN通信的关键组件,通过提供标准化的API接口,它使上层应用可以利用时间触发通信的优势,同时屏蔽底层硬件差异。主要特点包括:

  1. 架构设计:遵循AUTOSAR分层架构,明确定义模块边界和接口
  2. 状态管理:完善的状态机确保通信过程可控和可靠
  3. 丰富API:全面的API支持各种时间触发通信场景
  4. 灵活配置:结构化的配置参数适应不同应用需求
  5. 标准交互:规范的交互流程保证模块间协作顺畅

TTCAN Driver为汽车电子系统提供了高确定性的通信能力,特别适合安全关键型应用,如底盘控制、动力传动系统等对通信时序有严格要求的场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KaiGer666

慧眼~施主!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值