AUTOSAR CanSM介绍及DaVinci配置

BSW:CanSM模块配置及应用 CanSM模块中需要配置的内容其实不多,,主要涉及busoff相关配置项,这里重点讲下busoff触发的过程以及如何去测试。我使用的协议栈CanSM模块的版本为4.0.3,CanSM的本质其实是一个复杂的状态机,分成了几个大的状态,大的状态中又嵌套了几个小的状态,建议大家学习的时候一边对着规范,一边看静态代码,便于更好地理解。 阅读详情

功能描述

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。

UDS 28服务诊断会话控制的Davinci实战配置 深入讲解uds28服务在Davinci环境下的实际配置方法,通过具体案例解析诊断会话控制的关键步骤与参数设置,帮助开发者快速掌握uds28服务的应用技巧。 阅读详情

相关推荐

AUTOSAR BswM配置实战:DaVinci Configurator下电时序与TJA1145低功耗收发器调参

在AUTOSAR基础软件分层架构中,ECU模式管理是协调电源状态、通信状态与数据存储的关键环节。BswM作为BSW层的总调度,通过模式请求端口收集各方状态,以逻辑表达式完成条件仲裁,再依托动作列表驱动EcuM、ComM、CanSM、NvM等模块协同流转。本文基于DaVinci Configurator工具链,从模式请求、规则配置、动作列表等核心概念切入,结合TJA1145这类带低功耗特性的CAN收发器,详解下电时序设计、休眠唤醒路径与实测调参经验,并梳理编译集成阶段规则不触发、下电卡死等高频问题的排查思路,

weixin_29192141的博客 230

DaVinCi 配置 DEM模块的技术手册

DaVinCi 配置 DEM模块的技术手册,内容涉及DEM功能模块介绍,API接口等,DEM主要负责诊断事件的配置,例如DTC

AUTOSAR BSW配置实战:从CAN链路到模式管理的完整学习路径

在现代汽车电子开发中,AUTOSAR通过标准化分层架构,将硬件驱动与上层应用彻底解耦,而BSW(基础软件层)正是实现这一目标的核心枢纽。BSW配置的本质,是将ECU所有底层能力以结构化参数描述为ARXML数据,再经生成器转化为实例化代码。对于初学者而言,从CAN通信链路入手是最佳路径:配置MCAL、CanIf、PduR、Com等模块,打通一条报文从应用到总线的收发链条,即可快速建立整体图景。随后深入模式管理,理解EcuM、BswM、ComM如何协同完成上下电与网络管理,掌握配置工具(如DaVinci Con

weixin_30983965的博客 251

CANSM

每个通信总线都有各自与总线相关的状态管理模块。思考问题:CAN有哪些状态,如何管理。调用什么函数管理CAN网络状态?核心就三种状态,由ComM模块调用CanSM_RequestComMode函数修改CAN的网络状态。

weixin_52135350的博客 1435

保姆级教程:手把手配置AUTOSAR BswM与ComM、CanSM的联动(含实战避坑点)

本文提供AUTOSAR BswM与ComM、CanSM联动的保姆级配置教程,详细解析模块关系、配置步骤及实战避坑点。通过Vector Davinci Configurator工具链,实现通信状态管理、IPDU组控制及诊断通信优化,帮助工程师解决汽车电子架构中的模式管理难题。

weixin_33690367的博客 839

AUTOSAR CanSM模块实战:手把手教你配置Busoff恢复与唤醒验证(基于CanIf/ComM)

本文详细解析了AUTOSAR CanSM模块在Busoff恢复与唤醒验证中的配置实践,基于Vector DaVinci Configurator工具,提供从基础配置到调试验证的全流程指导。重点介绍了Busoff恢复策略的选择与参数设置,以及唤醒验证的工程实现与常见问题排查,帮助开发者提升CAN总线通信的稳定性和可靠性。

weixin_30653023的博客 269

【AUTOSAR 基础软件】CanSM模块详解(Can栈之状态管理模块)

文章包含了AUTOSAR基础软件(BSW)中CanSM模块相关的内容详解。本文从AUTOSAR规范解析,ISOLAR-AB配置以及模块相关代码分析三个维度来帮读者清晰的认识和了解CanSM这一基础软件模块。文中涉及的ISOLAR-AB配置以及模块相关代码都是依托于ETAS提供的工具链来配置与生成的,与AUTOSAR规范之间可能会有些许的出入,但总体的功能要点与处理流程都应该是一致的。

十六宿舍的博客 9507

保姆级教程:手把手教你用AUTOSAR CanSM模块配置BusOff快慢恢复(含代码示例)

本文详细解析了AUTOSAR CanSM模块中BusOff快慢恢复机制的配置方法,包括参数设置、状态机转换及网络管理协同。通过Vector Davinci Configurator工具演示配置流程,并提供代码示例和工程实践建议,帮助汽车电子工程师提升CAN总线通信的稳定性与可靠性。

congyaguan5319的博客 405

【CP AUTOSAR】CanSM(CANStateManager)分析和使用

本文介绍CP AUTOSAR 架构下的CanSM组件,基于S32K312芯片、Vector提供的CBD包,使用DaVinci Configurator工具进行配置的经验。CanSM组件位于Communication Services层,通常被ComM所调用。CanSM组件负责管理CAN总线的状态。上图为CP AUTOSAR CAN网络架构。

a571338923的博客 2177

保姆级教程:在AUTOSAR架构下,手把手配置CanSM模块的BusOff快慢恢复策略

本文详细介绍了在AUTOSAR架构下配置CanSM模块的BusOff快慢恢复策略的实践指南。通过解析核心参数、工具实操步骤和工程化验证方法,帮助开发者优化CAN总线通信的稳定性,特别适用于汽车电子开发中的BusOff恢复场景。

Golden的专栏 359

Davinci工具链实战:从DBC导入到CAN通讯链路配置全解析

本文详细解析了使用Davinci工具链进行CAN通讯配置的全过程,从DBC文件检查导入、硬件参数设置到CANIF、CANSM等模块的深度配置。文章提供了实战经验与常见问题排查技巧,帮助工程师高效构建稳定的CAN通讯链路,是汽车电子领域开发的实用指南。

github5actions的博客 889

如何使用Davinci工具配置一路CAN通讯

如何使用Davinci工具配置一路CAN通讯

weixin_44293445的博客 3034

新手避坑指南:用Davinci Configurator给TC397配置AUTOSAR CAN通讯,从DBC到中断收发的完整流程

本文详细介绍了使用Davinci Configurator为TC397芯片配置AUTOSAR CAN通讯的完整流程,从DBC文件导入到中断收发实现。针对新手工程师常见的配置陷阱和版本兼容性问题,提供了实用的环境准备建议、DBC文件处理技巧、中断驱动配置逻辑以及BSW组件集成顺序的黄金法则,帮助开发者高效完成CAN通讯功能开发。

weixin_29173777的博客 279

Autosar 基于Davinci CFG BSW开发之如何配置CAN通讯链路

本文为博主开发过程中总结而得,如有不正之处欢迎指正。

qq_45583706的博客 3116

Davinci配置CAN通讯避坑指南:从DBC检查到RTE生成的10个常见错误

本文详细解析了Davinci配置CAN通讯过程中从DBC检查到RTE生成的10个常见错误,包括DBC文件导入前的致命疏忽、CAN模块硬件对象配置陷阱、CANIF层PDU映射错误等。通过实际案例和解决方案,帮助工程师有效规避配置风险,提升汽车电子开发效率。

weixin_30839881的博客 392

手把手教你用Vector DaVinci配置AUTOSAR网络管理(附诊断报文唤醒、BusOff恢复实战避坑)

本文详细介绍了如何使用Vector DaVinci工具链配置AUTOSAR网络管理,包括环境准备、报文控制、诊断唤醒和BusOff恢复等实战技巧。通过具体代码示例和配置清单,帮助开发者快速掌握关键配置点,避免常见错误,提升开发效率。特别针对诊断报文唤醒和BusOff恢复提供了深度优化方案。

weixin_33682790的博客 447

Davinci CFG BSW开发之如何配置CAN通讯链路

在此之前先简单介绍一下davinci cfg界面,Davinci cfg提供了两种浏览模式:按功能浏览配置,按模块浏览配置。2.EB导出arxml文件,davinci cfg导入对应EB配置。5.Davinci cfg配置CanIf模块。6.Davinci cfg配置CanSM模块。7.Davinci cfg配置Pdur模块。3.Davinci cfg导入DBC文件。4.Davinci cfg配置CAN模块。8.Davinci cfg配置Com模块。10.Davinci cfg配置 os。

2301_82031349的博客 276

AUTOSAR通信篇 - CAN网络通信(四:CanSM)

CanSM状态机在一级层面上分为:NO_COMMUNICATION, PRE_NO_COMMUNICATION, WAKEUP_VALIDATION,PRE_FULL_COMMUNICATION,FULL_COMMUNICATION,SLIENT_COMMUNICATION,CHANGE_BAUDRATE,7个子状态;CanSM的作用就是根据发生的事件或者根据API调用触发状态机流转,需要时并通知ComM、BswM等模块网络状态;CanSM关于状态机的触发流转,全部记住是几乎不可能的,只要了解即可。

IOT2017的博客 7090
上一篇: C++常用标准库介绍
下一篇: AUTOSAR BswM规范解析(一)
BandiAUTO
博客等级 码龄12年 125粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值