当前位置: 首页 > news >正文

AUTOSAR知识点Com(七):CANSM初认知

目录

1、概述

2、CanSM主要做什么

2.1、CAN控制器状态管理

2.2、CAN收发器状态管理

2.3、Busoff检测


1、概述

        CANSM(Controller Area Network State Manager)是AUTOSAR(Automotive Open System Architecture)标准中的一个模块,用于管理车辆控制系统中的CAN总线通信。它提供了一种标准化的方式来配置、启动、停止和监视CAN总线通信,并确保不同ECU(Electronic Control Unit)之间的通信协调和一致性。CANSM还提供了故障检测和恢复机制,以确保CAN总线通信的可靠性和稳定性。

        CanSM:Can通信总线(包含CAN控制器和CAN收发器)的状态管理,支持CAN在FULLCAN NOCOM SILIENTCOM等状态之间切换,并负责CAN busoff恢复管理。

        CanSM处理CAN网络的启动和停止,CanSM将CanSM状态映射到ComM的状态并将CanSM状态更改为ComM所请求的状态。

        它与通信硬件抽象层和系统服务层交互。

CanSM主要负责维护两个状态机

1、网络通讯模式状态机:负责维护网络通信模式(setmode)

2、总线离线恢复状态机:负责把总线从离线事件中恢复(busoff)

局限性:只能用于CAN,假设LIN是有LINSM的

        COMM:通信管理系统服务模块,通过与各通信总线的状态管理模块,如 CANSM LINSM和网络管理模块(NM)交互,为用户提供统一、抽象、简洁的通信模式管理服务。负责简化用户对网络管理和总线通信状态的控制

个人感觉:CANSM就是调用CANIf的接口来实现状态管理。

系统框图描述

 从上述框图也能感受到CANSM主要做ComMode的处理

2、CanSM主要做什么

2.1、CAN控制器状态管理

        当CanSM接收到ComM的CAN状态切换请求或者检测到busoff后,需要切换CAN控制器的状态,调用CanIf的CanIf_SetControllerMode()请求CAN控制器在 CANIF_CS_STOPPED,CANIF_CS_STARTED,CANIF_CS_SLEEP之间切换,CanIf模块再调用Can驱动接口Can_SetControllerMode()执行具体CAN控制器的状态切换(CAN_T_START, CAN_T_STOP, CAN_T_SLEEP, CAN_T_WAKEUP)。

        由于延时等原因,网络的通信模式可能会和ComM请求的不一致,这就需要CanSM通过以下方式来提供接口向ComM反馈当前的通信模式:

        CanSM提供API。ComM可以通过这个API调用来得到CAN网络当前的通信模式。

        CanSM使用ComM提供的回调函数来通知通信模式的改变。

2.2、CAN收发器状态管理

        当CanSM接收到ComM的CAN状态切换请求,如果对应的CAN通道包含transceiver,CanSM需要切换对应CAN收发器的状态,调用CanIf的CanIf_SetTrcvMode()请求CAN收发器在CANTRCV_TRCVMODE_NORMAL, CANTRCV_TRCVMODE_SLEEP, CANTRCV_TRCVMODE_STANDBY之间切换,CanIf模块再调用Can收发器驱动接口CanTrcv_SetOpMode()执行具体CAN收发器的状态切换。

2.3、Busoff检测

        当CAN控制器检测到Busoff(Busoff中断或者调用Can_MainFunction_BusOff()进行polling),调用CanIf_ControllerBusOff()通知busoff事件到CanIf,CanIf再调用CanSM_ControllerBusOff()通知busoff事件到CanSM。CanSM在检测到有Can通道busoff事件发生后,将尝试进行busoff恢复。

相关文章:

AUTOSAR知识点Com(七):CANSM初认知

目录 1、概述 2、CanSM主要做什么 2.1、CAN控制器状态管理 2.2、CAN收发器状态管理 2.3、Busoff检测 1、概述 CANSM(Controller Area Network State Manager)是AUTOSAR(Automotive Open System Architecture)标准中的一个模块…...

递归:斐波那契数列、递归实现指数型枚举、递归实现排列型枚举

递归&#xff1a;O(2^n) 调用自己 例题及代码模板&#xff1a; 斐波那契数列 输入一个整数 n &#xff0c;求斐波那契数列的第 n 项。 假定从 0 开始&#xff0c;第 0 项为 0。 数据范围 0≤n≤39 样例 输入整数 n5 返回 5 #include <iostream> #include <cstring&g…...

oracle模糊查询时字段内容包含下划线的解决办法

最近项目中遇到一个关于模糊查询问题。表tabA中的字段name的值有下划线的情况&#xff0c;在模糊查询时发现查询的记录不对。 表的结构 表名&#xff1a;tabA id name sex 1 test_601 1 2 test_602 2 3 test16 1 4 t…...

C++:explicit关键字

C中的explicit关键字只能用于修饰只有一个参数的类构造函数&#xff0c;它的作用是表明该构造函数是显示的&#xff0c;而非隐式的&#xff0c;跟它相对应的另一个关键字是implicit&#xff0c;意思是隐藏的&#xff0c;类构造函数默认情况下即声明为implicit(隐式)。那么显示声…...

【C5】bmc wtd,post

文章目录1.bmc_wtd_cpld&#xff1a;syscpld.c中wd_en和wd_kick节点对应寄存器&#xff0c;crontab&#xff0c;FUNCNAME2.AST芯片WDT切换主备&#xff1a;BMC用WDT2作为主备切换的控制器2.1 AC后读取&#xff1a;bmc处于主primary flash&#xff08;设完后&#xff1a;实际主&…...

200.Spark(七):SparkSQL项目实战

一、启动环境 需要启动mysql,hadoop,hive,spark。并且能让spark连接上hive(上一章有讲) #启动mysql,并登录,密码123456 sudo systemctl start mysqld mysql -uroot -p#启动hive cd /opt/module/ myhadoop.sh start#查看启动情况 jpsall#启动hive cd /opt/module/hive/…...

区块链系统:挖矿原理

在比特币的P2P网络中&#xff0c;有一类节点&#xff0c;它们时刻不停地进行计算&#xff0c;试图把新的交易打包成新的区块并附加到区块链上&#xff0c;这类节点就是矿工。因为每打包一个新的区块&#xff0c;打包该区块的矿工就可以获得一笔比特币作为奖励。所以&#xff0c…...

【博弈】【清华冬令营2018模拟】取石子

写完敢说全网没有这么详细的题解了。 注意&#xff1a;题解长是为了方便理解&#xff0c;所以读起来速度应该很快。 题目描述 有 nnn 堆石子&#xff0c;第 iii 堆有 xix_ixi​ 个。 AliceAliceAlice 和 BobBobBob 轮流去石子&#xff08;先后手未定&#xff09;&#xff0c; …...

嵌入式:BSP的理解

BSP概念总结BSP定义BSP的特点BSP的主要工作BSP在嵌入式系统和Windowsx系统中的不同BSP和PC机主板上的BIOS区别BSP与 HAL关系嵌入式计算机系统主要由 硬件层&#xff0c;中间层&#xff0c;系统软件层和应用软件层四层组成。硬件层&#xff1a;包含CPU&#xff0c;存储器(SDRAM&…...

Linux主机Tcpdump使用-centos实例

1、安装前系统信息 ifconfig查看系统网络接口情况。这里可以看到3个interface&#xff0c;ens160是正常使用的网口&#xff0c;lo是主机的loopback地址127.0.0.1。另外&#xff0c;由于centos安装在虚拟主机上&#xff0c;virbr0是KVM默认创建的一个Bridge,其作用是为连接其上的…...

线性DP——AcWing 898. 数字三角形、AcWing 895. 最长上升子序列

AcWing 898. 数字三角形 1.题目 898. 数字三角形 2.思路 DP问题首先考虑状态转移方程&#xff0c;定义一个集合f ( i , j) &#xff0c;表示从第一个数字&#xff08;1,1&#xff09;走到第 i行&#xff0c;第 j列&#xff08;i , j&#xff09;的所有方案的集合&#xff0c…...

SpringMVC

SpringMVC配置 引入Maven依赖 &#xff08;springmvc&#xff09;web.xml配置DispatcherServlet配置 applicationContext 的 MVC 标记开发Controller控制器 几点注意事项&#xff1a; 在web.xml中 配置<load-on-startup> 0 </load-on-startup> 会自动创建Spring…...

C++模板基础(二)

函数模板&#xff08;二&#xff09; ● 模板实参的类型推导 – 如果函数模板在实例化时没有显式指定模板实参&#xff0c;那么系统会尝试进行推导 template<typename T> void fun(T input, T input2) {std::cout << input << \t << input2 << …...

什么是linux内核态、用户态?

目录标题为什么需要区分内核空间与用户空间内核态与用户态如何从用户空间进入内核空间整体结构为什么需要区分内核空间与用户空间 在 CPU 的所有指令中&#xff0c;有些指令是非常危险的&#xff0c;如果错用&#xff0c;将导致系统崩溃&#xff0c;比如清内存、设置时钟等。如…...

day8—选择题

文章目录1.Test.main() 函数执行后的输出是&#xff08;D&#xff09;2. JUnit主要用来完成什么&#xff08;D&#xff09;3.下列选项中关于Java中super关键字的说法正确的是&#xff08;A&#xff09;1.Test.main() 函数执行后的输出是&#xff08;D&#xff09; public clas…...

ngx错误日志error_log配置

ngx之error_log 日志配置格式&#xff1a; 常见的错误日志级别 错误日志可配置位置 关闭error_log配置 设置debug 日志级别的前提&#xff1a; ngx之error_log 日志配置格式&#xff1a; error_log 存放路径 日志级别 例&#xff1a; error_log /usr/local/log…...

1.11、自动化

自动化 一、java 手机自动化 首先new DesertCapabilities&#xff08;这是一个类&#xff09; setCapability – 设置信息 获取appium的驱动对象 new AppiumDriver – 本机IP地址:端口号/wd/hub,前面的设置值信息 driver.findElementById() – 通过id找位置 click() – 点击 &…...

函数的定义与使用及七段数码管绘制

函数的定义 函数是一段代码的表示 函数是一段具有特定功能的、可重用的语句组 函数是一种功能的抽象&#xff0c;一般函数表达特定功能 两个作用&#xff1a;降低编程难度 和 代码复用 求一个阶乘 fact就是 函数名 n就是参数 return就是输出部分即返回值 而函数的调用就是…...

怎么压缩pdf文件大小?pdf文件太大如何压缩?

喜爱看小说的小伙伴们都会在网上下载很多的pdf格式电子书以方便随时阅览&#xff0c;但是pdf的电子书一般都过于的冗长&#xff0c;下载后的储存也是一个问题&#xff0c;怎么pdf压缩大小呢&#xff1f;可以试试今天介绍的这款pdf在线压缩工具来进行pdf压缩&#xff08;https:/…...

阿里云Linux服务器登录名ecs-user和root选择问题

阿里云服务器Linux系统登录名可以选择root或ecs-user&#xff0c;root具有操作系统的最高权限&#xff0c;但是root会导致的安全风险比较大&#xff0c;ecs-user比较安全&#xff0c;但是如果系统后续依赖root权限就会比较麻烦&#xff0c;从安全的角度&#xff0c;建议选择ecs…...

多模态融合新思路:POE在图像与文本数据融合中的5个实战案例

多模态融合新思路&#xff1a;POE在图像与文本数据融合中的5个实战案例 当图像遇见文字&#xff0c;机器如何像人类一样理解两者之间的微妙联系&#xff1f;这正是多模态学习试图解决的核心问题。在医疗影像分析、自动驾驶、智能客服等场景中&#xff0c;单一模态的数据往往存在…...

明略科技公布上市后首次年报:营收14亿 经调整净利4204万

雷递网 雷建平 3月26日明略科技&#xff08;股份代码&#xff1a;2718&#xff09;今日发布截至2025年12月31日财报&#xff0c;财报显示&#xff0c;明略科技2025年营收14.26亿&#xff0c;较上年同期的13.81亿增长3.2%。明略科技2025年来自数据智能服务收入为12.6亿元&#x…...

别再只抄代码了!手把手教你调试YOLOv5模型输出,彻底搞懂每个数字的含义

从黑盒到白盒&#xff1a;YOLOv5模型输出调试实战指南 在计算机视觉领域&#xff0c;YOLOv5无疑是最受欢迎的实时目标检测框架之一。但许多开发者在使用过程中&#xff0c;往往只停留在"复制粘贴后处理代码"的阶段&#xff0c;对模型输出的具体含义一知半解。当需要将…...

当Task.Run遇上CancellationToken:C#异步编程中的‘紧急停止‘按钮设计

当Task.Run遇上CancellationToken&#xff1a;C#异步编程中的紧急停止按钮设计 在现代软件开发中&#xff0c;异步编程已成为提升应用响应能力和资源利用率的关键技术。C#作为一门成熟的编程语言&#xff0c;提供了强大的异步编程模型&#xff0c;其中Task.Run和CancellationTo…...

Windows安全中心总提示驱动不兼容?手把手教你清理老旧驱动,为内存完整性扫清障碍

Windows驱动深度清理指南&#xff1a;彻底解决内存完整性兼容性问题 每次打开Windows安全中心&#xff0c;那个刺眼的"驱动不兼容"提示总让人心烦&#xff1f;这不仅仅是烦人的弹窗问题&#xff0c;更是系统安全与性能的潜在威胁。作为长期使用Windows的资深用户&…...

python-flask-djangol框架的减肥健身养生人士饮食营养管理系统

目录 技术选型与框架搭建核心功能模块设计数据模型设计示例&#xff08;Django ORM&#xff09;算法实现要点部署与扩展 项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 技术选型与框架搭建 Python Flask/Django框架均适合开发…...

从协议战争到SDN革命:华为数通技术演进中的那些关键抉择

从协议战争到SDN革命&#xff1a;华为数通技术演进中的关键抉择 在数据中心网络架构的演进历程中&#xff0c;技术路线的选择往往决定着企业未来十年的竞争力格局。当传统网络架构遭遇云计算时代的流量洪流&#xff0c;一场关于协议标准与技术范式的深刻变革悄然展开。这场变革…...

如何快速激活Cursor Pro:免费VIP完整教程与破解工具详解

如何快速激活Cursor Pro&#xff1a;免费VIP完整教程与破解工具详解 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your t…...

GWAS 实战指南:基因型数据格式转换工具全解析

1. 基因型数据格式入门&#xff1a;从VCF到BED的全面解析 做GWAS分析就像玩拼图游戏&#xff0c;而基因型数据格式就是那些形状各异的拼图块。我刚入门时最头疼的就是各种数据格式的转换&#xff0c;直到在实验室熬了三个通宵才摸清门道。现在我就把这些年踩过的坑和总结的经验…...

Z-Image-Turbo_Sugar脸部Lora入门指南:从零开始搭建Sugar专属AI人脸生成系统

Z-Image-Turbo_Sugar脸部Lora入门指南&#xff1a;从零开始搭建Sugar专属AI人脸生成系统 想快速生成专属Sugar风格的甜美脸部图片&#xff1f;本教程将手把手教你搭建一个基于Z-Image-Turbo_Sugar脸部Lora的AI人脸生成系统&#xff0c;无需复杂配置&#xff0c;轻松上手。 1. 环…...