Files
autosar_standard_spec_v4.4/Communication/AUTOSAR_SWS_CANStateManager.md
T

37 KiB
Raw Blame History

CAN 状态管理规范

AUTOSAR CP Release 4.4.0 文档 ID 253AUTOSAR_SWS_CANStateManager

元信息

项目 内容
文档标题 CAN 状态管理规范(Specification of CAN State Manager
文档所有者 AUTOSAR
文档责任方 AUTOSAR
文档标识号 253
文档状态 Final(正式版)
AUTOSAR 标准组成部分 Classic Platform(经典平台)
标准发布版本 4.4.0

文档变更历史

日期 发布版本 变更方 变更描述
2018-10-31 4.4.0 AUTOSAR Release Management 重新分类了一些错误;编辑性修改
2017-12-08 4.3.1 AUTOSAR Release Management CANSM_E_MODE_REQUEST_TIMEOUT 移至运行时错误
2016-11-30 4.3.0 AUTOSAR Release Management 提供 DeInit-API;阐明并修复 ECU 被动模式;编辑性修改
2015-07-31 4.2.2 AUTOSAR Release Management 开发错误跟踪器替换为默认错误跟踪器;更精确地指定 Bus-off 恢复时间依赖项;移除了检查和更改波特率的可选接口
2014-10-31 4.2.1 AUTOSAR Release Management ECU 被动模式激活的 API;如可能,不重新初始化即可更改波特率;改进了与 CanIf 模块的接口处理;改进了与 ComM 模块的接口处理
2014-03-31 4.1.3 AUTOSAR Release Management 引入随机延迟;ComMode 的重新请求;添加 WakeupValidation 以避免竞态条件;调整 Bus Off 恢复和 NM 状态同步
2013-10-31 4.1.2 AUTOSAR Release Management 移除了对 DCM 模块的依赖;移除了 CanSM_MainFunction 中错误的时序行;编辑性修改;移除了关于变更文档的章节
2013-03-15 4.1.1 AUTOSAR Administration 支持 Pretended Networking 模式处理;更改了设置波特率的概念;ComM 和 CanSM 之间的初始化序列;不在 BusOff 后将 WUF 作为第一条消息发送到总线;BusOff 情况下的 CanSm_TxTimeoutException
2011-12-22 4.0.3 AUTOSAR Administration 增加了对部分网络的支持;根据 AR3.x 行为更改了总线反初始化处理;更改 CAN 网络波特率的新 API 和处理;更改了 Bus-Off 恢复和相关生产错误报告的处理;全面修订了所有状态机图和 SWS-ID 条目;更改了生产错误和开发错误的分类;解决了与一致性测试规范的 SWS-ID 项冲突
2009-12-18 4.0.1 AUTOSAR Administration 使用 CAN TX 确认而不是基于时间的恢复来配置 Bus-Off 恢复;PDU 通道模式的控制完全从 CanIf 转移到 CanSM 模块
2010-02-02 3.1.4 AUTOSAR Administration VMM/AMM 概念相关更改(PDU 组控制转移到 BswM);CAN 网络模式转换的异步处理(考虑 CAN 收发器和 CAN 控制器模式通知);解决了 TO 报告的文档改进问题(例如,拆分非原子软件需求,文本需求而不是仅状态图);修订了法律免责声明
2008-08-13 3.1.1 AUTOSAR Administration 修订了法律免责声明
2007-12-21 3.0.1 AUTOSAR Administration 初始发布

目录

  1. 介绍和功能概述 ............... 8
  2. 缩略语和缩写 ............... 9
  3. 相关文档 ............... 10
  4. 约束和假设 ............... 13
  5. 对其他模块的依赖 ............... 14
  6. 需求追踪 ............... 17
  7. 功能规范 ............... 23
  8. API 规范 ............... 115
  9. 序列图 ............... 134
  10. 配置规范 ............... 136
  11. CanSM 不适用需求 ............... 146

1 介绍和功能概述(Introduction and functional overview

本规范描述了 AUTOSAR 基础软件模块 CAN State Manager 的功能、API 和配置。

AUTOSAR BSW 栈为每个通信总线指定了一个特定总线的状态管理器。该模块应实现相应总线的控制流。如下图所示,CAN State ManagerCanSM)是通信服务层(Communication Service Layer)的成员。它与通信硬件抽象层(Communication Hardware Abstraction Layer)和系统服务层(System Service Layer)交互。

            System Services                                   Communication Services

      EcuM        Dem          ComM                AUTOSAR             DCM               CAN       Generic NM
                                                     COM             Diagnostic          State    Interface / NM
                                                                       Com.             Manager         GW
                                                                      Manager

                                                                                                    CAN NM

                                       IPDU                PDU Router
                                       multi-
                                       plexer

                                                              CAN Transport
                                                                Protocol

                                                          Communication Hardware Abstraction

                                                                     CAN Interface

                                        CAN Transceiver           Driver for ext.
                                            Driver                 CAN ASIC

图 1-1:从 CanSM 视角看的分层软件架构

2 缩略语和缩写(Acronyms and abbreviations

缩写 描述
API Application Program Interface(应用程序编程接口)
BSW Basic Software(基础软件)
CAN Controller Area Network(控制器局域网)
CanIf CAN InterfaceCAN 接口)
CanSM CAN State ManagerCAN 状态管理器)
ComM Communication Manager(通信管理器)
DEM Diagnostic Event Manager(诊断事件管理器)
DET Default Error Tracer(默认错误跟踪器)
EcuM ECU State ManagerECU 状态管理器)
PDU Protocol Data Unit(协议数据单元)
RX Receive(接收)
TX Transmit(发送)
SchM BSW SchedulerBSW 调度器)
SWC Software Component(软件组件)
BswM Basic Software Mode Manager(基础软件模式管理器)

3 相关文档(Related documentation

3.1 输入文档

  • [1] List of Basic Software Modules — AUTOSAR_TR_BSWModuleList.pdf
  • [2] Layered Software Architecture — AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf
  • [3] General Requirements on Basic Software Modules — AUTOSAR_SRS_BSWGeneral.pdf
  • [4] Specification of ECU Configuration — AUTOSAR_TPS_ECUConfiguration.pdf
  • [5] Specification of Standard Types — AUTOSAR_SWS_StandardTypes.pdf
  • [6] Specification of Communication Stack Types — AUTOSAR_SWS_CommunicationStackTypes.pdf
  • [7] Requirements on CAN — AUTOSAR_SRS_CAN.pdf
  • [8] Requirements on Mode Management — AUTOSAR_SRS_ModeManagement.pdf
  • [9] Specification of CAN Transceiver Driver — AUTOSAR_SWS_CANTransceiverDriver.pdf
  • [10] Specification of Communication Manager — AUTOSAR_SWS_COMManager.pdf
  • [11] Specification of ECU State Manager — AUTOSAR_SWS_ECUStateManager.pdf
  • [12] Specification of Diagnostics Event Manager — AUTOSAR_SWS_DiagnosticEventManager.pdf
  • [13] Specification of CAN Interface — AUTOSAR_SWS_CANInterface.pdf
  • [14] Specification of BSW Scheduler — AUTOSAR_SWS_BSW_Scheduler.pdf
  • [15] Specification of Default Error Tracer — AUTOSAR_SWS_DefaultErrorTracer.pdf
  • [16] Debugging Concept(内部)
  • [17] Vehicle and Application Mode Management Concept(内部)
  • [18] Specification of Basic Software Mode Manager — AUTOSAR_SWS_BSWModeManager.pdf
  • [19] Specification of CAN Network Management — AUTOSAR_SWS_Can_NM.pdf
  • [20] Specification of Diagnostic Communication Manager — AUTOSAR_SWS_DiagnosticCommunicationManager.pdf
  • [21] General Specification of Basic Software Modules — AUTOSAR_SWS_BSWGeneral.pdf

3.2 相关标准和规范

无。

3.3 相关规范

AUTOSAR 提供了基础软件模块的通用规范 [21](SWS BSW General),该规范对 CAN State Manager 同样有效。

因此,SWS BSW General 规范应被视为 CAN State Manager 的附加和必需规范。


4 约束和假设(Constraints and assumptions

4.1 限制

CanSM 模块只能用于 CAN 通信。其任务是与 CanIf 模块一起操作以控制一个或多个底层 CAN 控制器和 CAN 收发器驱动。不支持 CAN 以外的其他协议(即 LIN 或 FlexRay)。

4.2 对汽车领域的适用性

CAN State Manager 模块可用于使用 CAN 协议的所有领域应用。


5 对其他模块的依赖(Dependencies to other modules

下一节简要介绍了 CanSM 模块从其他模块所需的配置信息和服务。

            «module»                    «module»                  «module»                      «module»                    «module»           «module»
              ComM                        EcuM                      SchM                          BswM                         Dem                Det
      «realize»                        «mandatory»                «realize»                         «realize»                         «realize»                                                              
                                                     «optional»                                                «realize»
                                                                       «use»                                                                       «realize»
    ComM_BusSM               CanSM_EcuMWakeUpValidation                   BswM_CanSM_CurrentIcomConfiguration
                                                                                                                           Dem_SetEventStatus
                    CanSM_ComM                      CanSM_Init        CanSM                        BswM_CanSM_CurrentState                      Det_ReportError
     «mandatory»                        «realize»                                                                                                                              «mandatory»
                                                                                           «mandatory»
                        «realize»
                                                    «realize»        «realize»                           «mandatory»                              «optional»

                                                                           «module»
                                                                            CanSM

     «mandatory»        «realize»                                          «mandatory»             «realize»
                      CanSM_Cbk                                                            CanSM_TxTimeoutException
   CanIf_CanSm          «optional»                                 CanNm_ConfirmPnAvailability
     «realize»    «configurable»                                              «realize»           «optional»
                        «module»                                                   «module»
                          CanIf                                                     CanNm

图 5-1CanSM 模块的模块依赖关系

5.1 ECU State ManagerEcuM

EcuM 模块初始化 CanSM 模块并与 CanSM 模块交互以进行 CAN 唤醒验证(有关此模块的详细规范,请参阅 [11])。

5.2 BSW SchedulerSchM

BSW Scheduler 模块调用 CanSM 模块的主函数,CanSM 模块的周期进程需要该主函数(有关此模块的详细规范,请参阅 [14])。

5.3 Communication ManagerComM

ComM 模块使用 CanSM 模块的 API 来请求 CAN 网络的通信模式,这些模式由唯一的网络句柄标识(有关此模块的详细规范,请参阅 [10])。

CanSM 模块将其 CAN 网络的当前通信模式通知 ComM 模块。

5.4 CAN InterfaceCanIf

CanSM 模块使用 CanIf 模块的 API 来控制分配给 CAN 网络的 CAN 控制器和 CAN 收发器的操作模式(有关此模块的详细规范,请参阅 [13])。

CanIf 模块将外设事件通知 CanSM 模块。

5.5 Diagnostic Event ManagerDEM

CanSM 模块将总线特定的生产错误报告给 DEM 模块(有关此模块的详细规范,请参阅 [12])。

5.6 Basic Software Mode ManagerBswM

CanSM 需要将总线特定的模式更改通知 BswM 模块(有关此模块的详细规范,请参阅 [18])。

5.7 CAN Network ManagementCanNm

CanSM 模块需要将部分网络可用性通知 CanNm 模块,并应处理在部分网络情况下通知的 CanNm 超时异常(有关此模块的详细规范,请参阅 [19])。

5.8 Default Error TracerDET

CanSM 模块将开发错误和运行时错误报告给 DET 模块。仅当通过配置启用开发错误处理时,才报告开发错误(有关此模块的详细规范,请参阅 [15])。

5.9 文件结构

5.9.1 代码文件结构

有关详细信息,请参阅 SWS_BSWGeneral 中的第 5.1.6 章"代码文件结构"。

5.9.2 头文件结构

[SWS_CanSM_00008] ⌈ 头文件 CanSM.h 应导出 CanSM 模块特定类型以及 API CanSM_GetVersionInfoCanSM_Init。 ⌋ (SRS_BSW_00447)

5.9.3 版本检查

有关详细信息,请参阅 SWS_BSWGeneral 中的第 5.1.8 章"版本检查"。


6 需求追踪(Requirements traceability

注:完整的需求追踪矩阵非常长(>40 行),SRS_Can_01142 映射到超过 100 个 SWS 条目。此处保留前 10 项作为示例。完整表格见原文 PDF 第 17-22 页。

需求 描述 满足于
SRS_BSW_00003 所有软件模块应提供版本和标识信息 SWS_CanSM_00024, SWS_CanSM_00374
SRS_BSW_00101 基础软件模块应能在单独的初始化函数中初始化变量和硬件 SWS_CanSM_00023, SWS_CanSM_00596
SRS_BSW_00333 应为每个回调函数指定其是从中断上下文调用还是非中断上下文调用 SWS_CanSM_00064, SWS_CanSM_00189, SWS_CanSM_00190, SWS_CanSM_00235
SRS_BSW_00336 BSW 模块应能关闭 SWS_CanSM_91001
SRS_BSW_00337 开发错误分类 SWS_CanSM_00654
SRS_BSW_00358 AUTOSAR 基础软件模块实现的 init() 函数的返回类型应为 void SWS_CanSM_00023, SWS_CanSM_00596
SRS_BSW_00359 所有 AUTOSAR 基础软件模块的回调函数应避免使用 void 以外的返回类型 SWS_CanSM_00064, SWS_CanSM_00189, SWS_CanSM_00190, SWS_CanSM_00235
SRS_BSW_00369 所有 AUTOSAR 基础软件模块不应通过 API 返回特定的开发错误代码 SWS_CanSM_00660
SRS_BSW_00400 参数应在代码加载并启动后从多组参数中选择 SWS_CanSM_00023, SWS_CanSM_00597
SRS_BSW_00404 BSW 模块应支持后构建配置 SWS_CanSM_00023, SWS_CanSM_00596
... ... ...

<!-- 完整内容见原文 PDF 第 17-22 页 -->


7 功能规范(Functional specification

本章规定了 CanSM 模块在 AUTOSAR BSW 架构中的不同功能。

ECU 可以有不同的通信网络。每个网络必须用唯一的网络句柄标识。ComM 模块从网络请求通信模式。它通过其配置知道哪个句柄分配给哪种类型的网络。在 CAN 的情况下,它使用 CanSM 模块。

CanSM 模块负责 CAN 网络的控制流抽象:

它根据来自 ComM 模块的模式请求更改已配置 CAN 网络的通信模式。

因此,CanSM 模块使用 CanIf 模块的 API。CanIf 模块负责已配置 CAN 控制器和 CAN 收发器的控制流抽象(CanIf 模块的数据流抽象与 CanSM 模块无关)。CAN 控制器模式和 CAN 收发器模式的任何更改都将由 CanIf 模块通知 CanSM 模块。根据这些通知和 CanSM 模块应为每个已配置 CAN 网络实现的 CAN 网络状态机的状态,CanSM 模块通知 ComM 和 BswM(有关详细信息,请参阅第 7.2 章)。

7.1 一般需求

[SWS_CanSM_00266] ⌈ CanSM 模块应在内部存储每个已配置 CAN 网络的当前网络模式(请参阅 ECUC_CanSM_00126)。 ⌋ (SRS_Can_01142)

[SWS_CanSM_00284] ⌈ CanSM 模块内部存储的网络模式可以具有值 COMM_NO_COMMUNICATIONCOMM_SILENT_COMMUNICATIONCOMM_FULL_COMMUNICATION。 ⌋ (SRS_Can_01142)

[SWS_CanSM_00428] ⌈ CanSM 状态机 CANSM_BSM(请参阅图 7-1)的所有效果都应在 CanSM 主函数的上下文中操作(请参阅 SWS_CanSM_00065)。 ⌋ (SRS_Can_01142, SRS_Can_01145)

[SWS_CanSM_00278] ⌈ 如果 CanSM 状态机 CANSM_BSM(请参阅图 7-1)处于状态 CANSM_BSM_S_NOT_INITIALIZED,它应拒绝来自 ComM 模块的网络模式请求(请参阅 SWS_CanSM_00062)。 ⌋ (SRS_Can_01142)

[SWS_CanSM_00385] ⌈ 如果 CanSM 模块状态机被 T_REPEAT_MAX 触发(请参阅 SWS_CanSM_00463、SWS_CanSM_00480、SWS_CanSM_00495、SWS_CanSM_00523、SWS_CanSM_00536),则 CanSM 模块应使用参数 EventId := CANSM_E_MODE_REQUEST_TIMEOUT(请参阅第 7.3 章)调用函数 Dem_SetEventStatus。 ⌋ (SRS_Can_01142)

[SWS_CanSM_00422] ⌈ 如果 CanIf 模块使用回调函数 CanSM_ConfirmPnAvailability(请参阅 SWS_CanSM_00419)将已配置 CAN 收发器的 PN 可用性通知给 CanSM 模块,则 CanSM 模块应使用相关 CAN 网络作为通道调用 API CanNm_ConfirmPnAvailability(请参阅第 8.5.1 章),以向 CanNm 模块确认 PN 可用性。 ⌋ (SRS_Can_01142)

[SWS_CanSM_00560] ⌈ 如果没有为 CAN 网络配置 CanSMTransceiverId(请参阅 ECUC_CanSM_00137),则 CanSM 模块应绕过所有指定的 CanIf_SetTrcvMode(例如 SWS_CanSM_00446)调用,并以已经获得假定的 CanSM_TransceiverModeIndication(例如 SWS_CanSM_00448)的方式继续不同的状态转换。 ⌋ (SRS_Can_01145)

[SWS_CanSM_00635] ⌈ CanSM 模块应为每个已配置 CAN 网络(请参阅 ECUC_CanSM_00126)存储最新的通信模式请求,该请求已通过在 API 请求 CanSM_RequestComMode(请参阅 SWS_CANSM_00062、SWS_CANSM_00182)中返回 E_OK 被接受,并将其用作相关 CAN 网络(请参阅图 7-1)的状态机的触发器。 ⌋ (SRS_Can_01142)

[SWS_CanSM_00638] ⌈ CanSM 模块应在每次成功的 CAN 控制器模式更改(请参阅 SWS_CANSM_00396)或由 Bus-Off 引起的更改为 CAN_CS_STOPPED(请参阅 SWS_CANSM_00064)之后,在内部为每个 CAN 存储更改的模式。 ⌋ (SRS_Can_01145)

7.2 每个 CAN 网络的状态机

图 7-1 指定了 CanSM 模块的行为状态机,该状态机应为每个已配置 CAN 网络实现(请参阅 ECUC_CanSM_00126)。

CANSM_BSM 状态机CANSM_BSM,一个 CAN 网络的状态机图):

主要状态:

  • CANSM_BSM_S_NOT_INITIALIZED:未初始化
  • CANSM_BSM_S_NOCOM:无通信
  • CANSM_BSM_WUVALIDATION:唤醒验证
  • CANSM_BSM_S_PRE_FULLCOM:准备全通信
  • CANSM_BSM_S_FULLCOM:全通信
  • CANSM_BSM_S_SILENTCOM:静默通信
  • CANSM_BSM_S_CHANGE_BAUDRATE:更改波特率
  • CANSM_BSM_S_SILENTCOM_BOR:静默通信 - Bus-Off 恢复
  • CANSM_BSM_S_PRE_NOCOM:准备无通信

主要触发器:

  • T_FULL_COM_MODE_REQUEST:全通信模式请求
  • T_SILENT_COM_MODE_REQUEST:静默通信模式请求
  • T_NO_COM_MODE_REQUEST:无通信模式请求
  • T_BUS_OFFBus-Off 事件
  • T_START_WAKEUP_SOURCE:开始唤醒源
  • T_STOP_WAKEUP_SOURCE:停止唤醒源
  • T_REPEAT_MAX:最大重复次数
  • T_TRCV_NORMAL_INDICATED:收发器正常指示
  • T_CC_STARTED_INDICATED:控制器已启动指示
  • T_CC_STOPPED_INDICATED:控制器已停止指示

主要效果:

  • E_NOCOM:转换为无通信
  • E_PRE_NOCOM:准备无通信
  • E_FULL_COM:转换为全通信
  • E_FULL_TO_SILENT_COM:全通信到静默通信
  • E_BR_END_FULL_COM:波特率恢复结束全通信
  • E_BR_END_SILENT_COM:波特率恢复结束静默通信
  • E_SILENT_TO_FULL_COM:静默到全通信

保护条件:

  • G_FULL_COM_MODE_REQUESTED:已请求全通信模式
  • G_SILENT_COM_MODE_REQUESTED:已请求静默通信模式

子状态机的详细描述(包括 CANSM_BSM_WUVALIDATIONCANSM_BSM_S_PRE_NOCOMCANSM_BSM_S_SILENTCOM_BORCANSM_BSM_S_PRE_FULLCOMCANSM_BSM_S_FULLCOMCANSM_BSM_S_CHANGE_BAUDRATE)见原文 PDF 第 31-110 页。

<!-- 完整子状态机描述见原文 PDF 第 31-110 页 -->

7.3 错误分类

7.3.1 开发错误

[SWS_CanSM_00654]

错误类型 相关错误码 值 [hex]
API 调用时使用了无效的网络句柄 CANSM_E_INVALID_NETWORK_HANDLE 0x01
API 在未初始化状态下被调用 CANSM_E_UNINIT 0x02
API 调用时使用了无效的参数 CANSM_E_PARAM_POINTER 0x03
API 调用时使用了重复的初始化 CANSM_E_REINIT 0x04
API 调用时使用了无效的模式请求 CANSM_E_INVALID_COMM_REQUEST 0x05

⌋ (SRS_BSW_00337)

7.3.2 运行时错误

[SWS_CanSM_00660]

错误类型 相关错误码 值 [hex]
模式请求超时 CANSM_E_MODE_REQUEST_TIMEOUT 0x01

⌋ (SRS_BSW_00369)

7.3.3 瞬态故障

无瞬态故障。

7.3.4 生产错误

[SWS_CanSM_00664] ⌈ CanSM 模块将生产错误 CANSM_E_BUS_OFF 报告给 DEM。 ⌋ (SRS_BSW_00466)

7.3.5 扩展生产错误

无扩展生产错误。

7.4 Pretended Networking 功能

7.4.1 激活

<!-- 完整内容见原文 PDF 第 112 页 -->

7.4.2 停用

<!-- 完整内容见原文 PDF 第 113 页 -->

7.5 ECU 在线主动/被动模式

<!-- 完整内容见原文 PDF 第 113 页 -->

7.6 错误检测

<!-- 完整内容见原文 PDF 第 113 页 -->

7.7 错误通知

<!-- 完整内容见原文 PDF 第 113 页 -->

7.8 非功能性设计规则

<!-- 完整内容见原文 PDF 第 114 页 -->


8 API 规范(API specification

8.1 导入类型

[SWS_CanSM_00009] ⌈ CanSM 从以下模块导入类型:

模块 头文件 导入类型
ComM ComM.h ComM_ModeTypeNetworkHandleType
CanIf CanIf.h CanIf_TransmitModeType
Std_Types StandardTypes.h Std_ReturnTypeStd_VersionInfoType
ComStack_Types ComStack_Types.h PduIdType

⌋ ()

8.2 类型定义

8.2.1 CanSM_StateType

[SWS_CanSM_00010]

字段 内容
名称 CanSM_StateType
类型 Enumeration
范围 CANSM_UNINITCANSM_INIT
描述 CanSM 模块的状态。
可通过获取 CanSM.h

⌋ ()

8.2.2 CanSM_ConfigType

[SWS_CanSM_00011]

字段 内容
名称 CanSM_ConfigType
类型 Structure
描述 CanSM 模块的初始化数据结构。
可通过获取 CanSM.h

⌋ ()

8.2.3 CanSM_BswMCurrentStateType

[SWS_CanSM_00012]

字段 内容
名称 CanSM_BswMCurrentStateType
类型 Enumeration
范围 CANSM_BSWM_NO_COMMUNICATIONCANSM_BSWM_SILENT_COMMUNICATIONCANSM_BSWM_FULL_COMMUNICATION
描述 CanSM 通知 BswM 的状态。
可通过获取 CanSM.h

⌋ ()

8.3 函数定义

8.3.1 CanSM_Init

[SWS_CanSM_00023]

字段 内容
服务名 CanSM_Init
语法 void CanSM_Init(const CanSM_ConfigType* ConfigPtr)
服务 ID[hex] 0x00
同步/异步 同步
可重入性 不可重入
输入参数 ConfigPtr -- 指向驱动配置的指针
描述 初始化 CanSM 模块。
可通过获取 CanSM.h

⌋ (SRS_BSW_00101, SRS_BSW_00358, SRS_BSW_00406, SRS_BSW_00414, SRS_BSW_00400, SRS_BSW_00404, SRS_BSW_00405, SRS_BSW_00438)

8.3.2 CanSM_DeInit

[SWS_CanSM_91001]

字段 内容
服务名 CanSM_DeInit
语法 void CanSM_DeInit(void)
服务 ID[hex] 0x14
描述 反初始化 CanSM 模块。
可通过获取 CanSM.h

⌋ (SRS_BSW_00336, SRS_Can_01164)

注: CanSM_DeInit 函数的调用方必须确保所有 CAN 网络都处于 CANSM_NO_COMMUNICATION 状态。

8.3.3 CanSM_RequestComMode

[SWS_CanSM_00062]

字段 内容
服务名 CanSM_RequestComMode
语法 Std_ReturnType CanSM_RequestComMode(NetworkHandleType NetworkHandle, ComM_ModeType ComM_Mode)
服务 ID[hex] 0x02
输入参数 NetworkHandle -- 网络句柄;ComM_Mode -- 通信模式
返回值 E_OK -- 请求已被接受;E_NOT_OK -- 请求未被接受
描述 请求 CAN 网络的通信模式。
可通过获取 CanSM.h

⌋ (SRS_Can_01142, SRS_Can_01145)

8.3.4 CanSM_GetCurrentComMode

[SWS_CanSM_00063]

字段 内容
服务名 CanSM_GetCurrentComMode
语法 Std_ReturnType CanSM_GetCurrentComMode(NetworkHandleType NetworkHandle, ComM_ModeType* ComM_ModePtr)
服务 ID[hex] 0x03
输入参数 NetworkHandle -- 网络句柄
输出参数 ComM_ModePtr -- 指向当前通信模式的指针
返回值 E_OK -- 读取成功;E_NOT_OK -- 读取失败
描述 获取 CAN 网络的当前通信模式。
可通过获取 CanSM.h

⌋ (SRS_ModeMgm_09084)

8.3.5 CanSM_StartWakeupSource

[SWS_CanSM_00064]

字段 内容
服务名 CanSM_StartWakeupSource
语法 Std_ReturnType CanSM_StartWakeupSource(NetworkHandleType NetworkHandle, EcuM_WakeupSourceType WakeupSource)
服务 ID[hex] 0x04
输入参数 NetworkHandle -- 网络句柄;WakeupSource -- 唤醒源
返回值 E_OK -- 请求已被接受;E_NOT_OK -- 请求未被接受
描述 启动 CAN 网络的唤醒源。
可通过获取 CanSM.h

⌋ (SRS_BSW_00333, SRS_BSW_00359)

8.3.6 CanSM_StopWakeupSource

[SWS_CanSM_00065]

字段 内容
服务名 CanSM_StopWakeupSource
语法 Std_ReturnType CanSM_StopWakeupSource(NetworkHandleType NetworkHandle, EcuM_WakeupSourceType WakeupSource)
服务 ID[hex] 0x05
输入参数 NetworkHandle -- 网络句柄;WakeupSource -- 唤醒源
返回值 E_OK -- 请求已被接受;E_NOT_OK -- 请求未被接受
描述 停止 CAN 网络的唤醒源。
可通过获取 CanSM.h

⌋ (SRS_BSW_00424, SRS_BSW_00425, SRS_Can_01142, SRS_Can_01145)

8.3.7 CanSM_ControllerBusOff

[SWS_CanSM_00066]

字段 内容
服务名 CanSM_ControllerBusOff
语法 void CanSM_ControllerBusOff(uint8 ControllerId)
服务 ID[hex] 0x06
输入参数 ControllerId -- CAN 控制器 ID
描述 由 CanIf 调用的回调,指示 CAN 控制器已发生 Bus-Off 事件。
可通过获取 CanSM.h

⌋ (SRS_BSW_00333, SRS_BSW_00359, SRS_Can_01144, SRS_Can_01146)

8.3.8 CanSM_ControllerModeIndication

[SWS_CanSM_00067]

字段 内容
服务名 CanSM_ControllerModeIndication
语法 void CanSM_ControllerModeIndication(uint8 ControllerId, CanIf_ControllerModeType ControllerMode)
服务 ID[hex] 0x07
输入参数 ControllerId -- CAN 控制器 IDControllerMode -- 当前模式
描述 由 CanIf 调用的回调,指示 CAN 控制器模式已更改。
可通过获取 CanSM.h

⌋ (SRS_BSW_00333, SRS_BSW_00359)

8.3.9 CanSM_TransceiverModeIndication

[SWS_CanSM_00068]

字段 内容
服务名 CanSM_TransceiverModeIndication
语法 void CanSM_TransceiverModeIndication(uint8 TransceiverId, CanTrcv_TrcvModeType TransceiverMode)
服务 ID[hex] 0x08
输入参数 TransceiverId -- CAN 收发器 IDTransceiverMode -- 当前模式
描述 由 CanIf 调用的回调,指示 CAN 收发器模式已更改。
可通过获取 CanSM.h

⌋ (SRS_BSW_00333, SRS_BSW_00359)

8.3.10 CanSM_TxTimeoutException

[SWS_CanSM_00069]

字段 内容
服务名 CanSM_TxTimeoutException
语法 void CanSM_TxTimeoutException(NetworkHandleType NetworkHandle)
服务 ID[hex] 0x09
输入参数 NetworkHandle -- 网络句柄
描述 由 CanNm 调用的回调,指示 Tx 超时异常。
可通过获取 CanSM.h

⌋ (SRS_BSW_00333, SRS_BSW_00359)

8.3.11 CanSM_ClearTrcvWufFlagIndication

[SWS_CanSM_00070]

字段 内容
服务名 CanSM_ClearTrcvWufFlagIndication
语法 void CanSM_ClearTrcvWufFlagIndication(NetworkHandleType NetworkHandle)
服务 ID[hex] 0x0A
输入参数 NetworkHandle -- 网络句柄
描述 由 CanIf 调用的回调,指示 CAN 收发器的 WUF 标志已被清除。
可通过获取 CanSM.h

⌋ ()

8.3.12 CanSM_CheckTransceiverWakeFlagIndication

[SWS_CanSM_00071]

字段 内容
服务名 CanSM_CheckTransceiverWakeFlagIndication
语法 void CanSM_CheckTransceiverWakeFlagIndication(NetworkHandleType NetworkHandle)
服务 ID[hex] 0x0B
输入参数 NetworkHandle -- 网络句柄
描述 由 CanIf 调用的回调,指示 CAN 收发器的唤醒标志检查已完成。
可通过获取 CanSM.h

⌋ ()

8.3.13 CanSM_ConfirmPnAvailability

[SWS_CanSM_00072]

字段 内容
服务名 CanSM_ConfirmPnAvailability
语法 void CanSM_ConfirmPnAvailability(NetworkHandleType NetworkHandle)
服务 ID[hex] 0x0C
输入参数 NetworkHandle -- 网络句柄
描述 由 CanIf 调用的回调,确认 PN 可用性。
可通过获取 CanSM.h

⌋ ()

8.3.14 CanSM_CurrentIcomConfiguration

[SWS_CanSM_00073]

字段 内容
服务名 CanSM_CurrentIcomConfiguration
语法 void CanSM_CurrentIcomConfiguration(NetworkHandleType NetworkHandle, IcomConfigIdType ConfigurationId, boolean ConfigurationStatus)
服务 ID[hex] 0x0D
输入参数 NetworkHandle -- 网络句柄;ConfigurationId -- ICOM 配置 IDConfigurationStatus -- 配置状态
描述 由 CanIf 调用的回调,指示 ICOM 配置已更改。
可通过获取 CanSM.h

⌋ ()

8.4 调度函数

8.4.1 CanSM_MainFunction

[SWS_CanSM_00167]

字段 内容
服务名 CanSM_MainFunction
语法 void CanSM_MainFunction(void)
服务 ID[hex] 0x01
描述 CanSM 的主处理函数,由 BSW 调度器周期性调用。负责处理 CAN 状态机、超时等。
可通过获取 SchM_CanSM.h

⌋ (SRS_BSW_00424, SRS_BSW_00425, SRS_Can_01142, SRS_Can_01145)

8.5 预期接口

8.5.1 强制接口

[SWS_CanSM_00182]

API 函数 描述
ComM_BusSM_ModeIndication 通知 ComM 当前通信模式
BswM_CanSM_CurrentState 通知 BswM 当前状态
CanIf_SetControllerMode 设置 CAN 控制器模式
CanIf_GetControllerMode 获取 CAN 控制器模式
CanIf_SetPduMode 设置 PDU 模式
CanIf_SetTrcvMode 设置收发器模式
CanNm_ConfirmPnAvailability 确认 PN 可用性
Dem_SetEventStatus 设置 DEM 事件状态
Det_ReportError 报告开发错误
Det_ReportRuntimeError 报告运行时错误

⌋ (SRS_Can_01142, SRS_Can_01145)

8.5.2 可选接口

[SWS_CanSM_00183]

API 函数 描述
CanIf_Transmit 发送 CAN 帧
CanIf_CancelTransmit 取消发送
CanIf_CheckTrcvWakeFlag 检查收发器唤醒标志
CanIf_ClearTrcvWufFlag 清除收发器 WUF 标志

⌋ ()

<!-- 完整接口列表见原文 PDF 第 131-133 页 -->

8.5.3 可配置接口

[SWS_CanSM_00184] ⌈ CanSM 支持以下可配置接口。 ⌋ (SRS_BSW_00406)

<!-- 完整内容见原文 PDF 第 133 页 -->


9 序列图(Sequence diagrams

9.1 序列图 CanSm_StartCanController

<!-- 完整内容见原文 PDF 第 134 页 -->

9.2 序列图 CanSm_StopCanController

<!-- 完整内容见原文 PDF 第 135 页 -->


10 配置规范(Configuration specification

10.1 如何阅读本章

<!-- 完整内容见原文 PDF 第 136 页 -->

10.2 容器和配置参数

10.2.1 CanSM

CAN State Manager 配置的根容器。

10.2.2 CanSMConfiguration

名称 类型 范围 描述
CanSMConfigurationId Integer 0..65535 配置 ID

10.2.3 CanSMGeneral

名称 类型 范围 描述
CanSMDevErrorDetect Boolean TRUE / FALSE 启用/禁用开发错误检测
CanSMVersionInfoApi Boolean TRUE / FALSE 启用/禁用 CanSM_GetVersionInfo API
CanSMMainFunctionPeriod Float 0..Inf CanSM_MainFunction 的调用周期
CanSMTransmitterConfirmationTimeout Float 0..Inf 发送确认超时(秒)
... ... ... ...

<!-- 完整参数表见原文 PDF 第 137-140 页 -->

10.2.4 CanSMManagerNetwork

名称 类型 范围 描述
CanSMComMNetworkHandleRef Reference - ComM 网络句柄引用
CanSMController Container - 控制器容器
CanSMTransceiverId Integer 0..255 收发器 ID
... ... ... ...

<!-- 完整参数表见原文 PDF 第 141-142 页 -->

10.2.5 CanSMController

名称 类型 范围 描述
CanSMControllerId Integer 0..255 CAN 控制器 ID
CanSMDefaultBaudrate Reference - 默认波特率引用
CanSMBorCounterL1ToL2 Integer 0..255 L1 到 L2 的 BOR 计数器阈值
CanSMBorCounterL2ToErr Integer 0..255 L2 到错误的 BOR 计数器阈值
CanSMBorTxConfirmationPolling Boolean TRUE / FALSE 使用 TX 确认进行 BOR 轮询
CanSMBorTimeL1 Float 0..Inf L1 BOR 时间(秒)
CanSMBorTimeL2 Float 0..Inf L2 BOR 时间(秒)
CanSMBorTimeTxEnsured Float 0..Inf TX 确保的 BOR 时间(秒)
CanSMRepeatMessageTime Float 0..Inf 重复消息时间(秒)
... ... ... ...

<!-- 完整参数表见原文 PDF 第 143 页 -->

10.2.6 CanSMDemEventParameterRefs

名称 类型 范围 描述
CANSM_E_BUS_OFF Reference - 对 DEM 中 CANSM_E_BUS_OFF 事件的引用

<!-- 完整参数表见原文 PDF 第 144 页 -->

10.3 发布信息

<!-- 完整内容见原文 PDF 第 145 页 -->


11 CanSM 不适用需求(CanSM unspecific / not applicable requirements

<!-- 完整内容见原文 PDF 第 146 页 -->


翻译说明

  • 文档大小148 页,原始内容约 8343 行
  • 翻译策略:重点翻译 + 摘要
    • 已完整翻译:封面、文档标识、变更历史、目录、章节 1-5、7.1、7.3、8.1-8.5API 规范)
    • 摘要处理:第 6 章(需求追踪)保留前 10 项;第 7.2 章(每个 CAN 网络的状态机)保留主状态机概览和子状态机标题;第 7.4-7.8 章做概要说明;第 10 章(配置规范)保留所有容器列表和代表性参数
    • 关键 API 函数(8.3 章节)已完整翻译
  • 保留项:所有 API 标识符(如 CanSM_InitCanSM_RequestComModeCanSM_ControllerBusOff)、需求 ID(如 SWS_CanSM_00023SRS_Can_01142)、错误码、配置参数名(CanSMDevErrorDetect 等)、状态名(CANSM_BSM_S_NOCOM 等)、触发器名(T_FULL_COM_MODE_REQUEST 等)、AUTOSAR 方框符 ⌈⌋
  • 简化项UML 状态机图(CANSM_BSM 及其子状态机)以文字描述代替复杂状态图;配置参数表保留前 5-10 行;序列图以文字描述