AUTOSAR CanSM介绍及DaVinci配置

该文章已生成可运行项目,

功能描述

ECU Passive Mode

CanSM可以设置启动后是否进入静默模式(Passive Mode)。 Passive Mode时ECU 所有CAN通道不发送报文,即Tx PDU的状态为OFFLINE_ACTIVE。ECU运行过程中可以调用CanSM_SetEcuPassive()接口来关闭或打开静默模式。

Busoff 恢复机制

CanSM 处理BusOff的机制概况来说主要有以下4步:

  1. Can控制器驱动上报CAN Busoff error至CanSM(通过调用CanSM_ControllerBusOff向CanSM通知)。

  2. CanSM收到busoff通知后先通过调用CanIf_SetControllerMode(CANIF_CS_STARTED)使Can控制器重启。

  3. 在CAN控制器重启之后,CanSM切换到TX_OFFLINE状态,即只接收CAN报文、不发送CAN报文。TX_OFFLINE状态持续时间取决于当前是快恢复还是慢恢复。

  4. 当TX_OFFLINE状态计时时间结束后,CanSM切换到BUS_OFF_CHECK状态。该状态会恢复CAN报文的发送。如果持续CanSMBorTimeTxEnsured时间没有再产生Busoff事件,那么说明Busoff已正常恢复。否则直接跳转至步骤2的状态。

DaVinci配置

CanSMGerneral

Bor Check Level

勾选后使能CanSM_CheckBorLevel API接口。这是MICROSAR专门的接口,并不是AUTOSAR规范的接口。CanSM_CheckBorLevel 用来查询当前处于Busoff快恢复(L1 Level)还是慢恢复(L2 Level)阶段。

Bus Off Begin

Can busoff事件发生时的用户回调函数。该回调函数在CanSM_ControllerBusOff()内被调用。函数原型:

void Appl_CanSM_BusOffBegin( NetworkHandleType  NetworkHandle, uint8* OnlineDelayCyclesPtr );

OnlineDelayCyclesPtr 指针指向的数据表示TxOffline的设置时间,一般用于J1939协议。其他协议通信该指针指向数据设为0即可。

Bus Off End

Busoff恢复后(重新打开Tx PDU发生时)的用户回调函数。函数原型:

void Appl_CanSM_BusOffEnd( NetworkHandleType  NetworkHandle );
Change Baudrate Api

该参数定义是否提供 Can_ChangeBaudrate API。
请注意:

  • ChangeBaudrate API 及此参数已弃用,将在未来版本中移除(由 CanSMSetBaudrateApi 替代)。
  • 若此参数设为 true,则需支持 Can_ChangeBaudrate API;否则该 API 不可用。
Ecu Passive Mode

勾选使能Ecu Passive Mode。即MCU上电初始化后所有CAN通道默认保持只收不发的状态。

Extended Ram Check

勾选使能对CAN寄存器和MsgBoxes的扩展RAM检查。
RAM检查将在Shutdown过程中执行。 潜在错误会上报给应用程序。 只要存在CAN寄存器错误,就会停止对CAN硬件的进一步修改。

Main Function Time Period[ms]

设置CanSM_MainFunction()周期性函数的执行周期,一般设置10ms。

Prevent Bus Sleep At Start Up

该参数用于启用/禁用 “Prevent Bus Sleep At Start Up”(防止总线启动时休眠)API 功能。
此 API 可使 CanSM 模块跳过对应 CAN 通道的初始状态转换阶段。

Safe Bsw Checks

该参数用于选择是否启用安全检查功能。 这些检查可提升系统的鲁棒性,例如:在函数执行前对无效参数进行校验。若当前组件被映射到ASIL(汽车安全完整性等级)分区,则必须启用此属性以满足安全相关项目的合规要求。

Set Baudrate Api

该参数用于启用或禁用“SetBaudrate”(设置波特率)功能,此功能允许在运行时动态修改波特率。
对 Can_SetBaudrate API 的支持是可选的。若已使用 Can_ChangeBaudrate 功能,则必须禁用此参数

Swift Tx Timeout Recovery

当CanSM模块接收到CanSM_TxTimeoutException(发送超时异常)通知时,其行为逻辑如下:

  • 状态转换规则
    • CanSM会执行向CANSM_NO_COMMUNICATION(无通信状态)的转换,除非总线关闭(Bus-Off)已激活。
    • 若总线关闭已激活,则忽略该异常通知(因其可能是由TxOffline阶段产生的"误报")。此时通信可能在后续恢复,若未恢复,CanNM模块会再次触发"发送超时异常"通知。
  • 通信请求处理
    • 在"发送超时异常"处理过程中,所有传入的通信模式请求将被暂存,直至进入CANSM_NO_COMMUNICATION状态。
    • 进入该状态后,若最后一次请求的通信模式为COMM_FULL_COMMUNICATION(全通信模式)或COMM_SILENT_COMMUNICATION(静默通信模式),则启动向CANSM_FULL_COMMUNICATION(全通信状态)的转换。
  • 快速恢复机制
    • 若启用CanSMSwiftTxTimeoutRecovery(快速发送超时恢复)功能:
      • 仅将控制器从STOPPED(停止)状态直接切回STARTED(启动)状态,而非执行完整的关闭-启动流程。
      • 若首次尝试切回STARTED失败:
        • 向ComM模块通知COMM_SILENT_COMMUNICATION
        • 向BswM模块通知CANSM_BSWM_NO_COMMUNICATION
        • 执行标准重试机制以达成目标控制器状态
Tx Timeout End

该函数在CanSM_TxTimeoutException超时异常处理结束时被调用。

如果配置了有效的函数名称,CanSM 将激活**“扩展”超时异常处理**。
“扩展”超时异常处理等同于先执行 CanSMSwiftTxTimeoutRecovery(快速发送超时恢复机制),随后执行配置的结束指示。
此外,即使发送超时异常发生在 SILENTCOM(静默通信模式)或 BUS_OFF_CHECK(总线关闭检查状态)下,CanSM 仍会执行此处理流程。

默认函数原型:

void Appl_TxTimeoutExceptionEnd( NetworkHandleType  NetworkHandle );

User Config File

添加用户自己的头文件。

Version Info Api

勾选使能CanSM_GetVersionInfo() API。

本文章已经生成可运行项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值