【AUTOSAR】【Can通信】CanSM

目录

一、概述

二、限制说明

三、功能说明

3.1 基础需求

3.2 CAN网络的状态机

3.3 错误分类

3.3.1 开发错误

3.3.2 运行错误

3.3.3 拓展生产错误

3.4 ECU在线主动/被动模式

四、API接口

4.1 API定义

4.2 调度接口


一、概述

        该文档描述了AUTOSAR基本软件模块CAN状态管理器的功能、API和配置。AUTOSAR BSW堆栈为每个通信总线指定一个特定于总线的状态管理器。该模块应实现相应总线的控制流程。CAN状态管理器(CanSM)是通信服务层的一个成员。它与通信硬件抽象层和系统服务层进行交互。

二、限制说明

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

三、功能说明

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

(1)它会根据来自ComM模块的模式请求,改变已配置的CAN网络的通信模式。

(2)CanSM模块使用了CanIf模块的API。CanIf模块负责已配置的CAN控制器和CAN收发器的控制流抽象(CanIf模块的数据流抽象与CanSM模块无关)。CAN控制器模式和CAN收发器模式的任何变化都将由CanIf模块通知给CanSM模块。

(3)根据CanSM模块应为每个配置的CAN网络实现的CAN网络状态机的此通知和状态,CanSM模块会通知ComM和BswM。

3.1 基础需求

CANSM_BSM状态机:

【规范】CanSM模块应在内部存储每个已配置的CAN网络的当前网络模式。

【规范】CanSM模块内部存储的网络模式的值可以为COMM_NO_COMMUNICATION、COMM_SILENT_COMMUNICATION、COMM_FULL_COMMUNICATION。

【规范】如果CanSM状态机CANSM_BSM处于CANSM_BSM_S_NOT_INITIALIZED状态,拒绝ComM模块的网络模式请求。

【规范】如果CanSM重复了其中一个CanIf API,那么调用CanIf_SetControllerMode、CanIf_SetTrcvMode、CanIf_ClearTrcvWufFlag或CanIf_CheckTrcvWakeFlag的频率比CanSMModeRequestRepetitionMax高,没有返回值E_OK或没有相应的模式指示回调CanSM_ControllerModeIndication、CanSM_TransceiverModeIndication、CanSM_ClearTrcvWufFlagIndication或CanSM_CheckTransceiverWakeFlagIndication,CanSM应用ErrorId参数CANSM_E_MODE_REQUEST_TIMEOUT调用函数Det_ReportRuntimeError。

【规范】如果CanIf模块用回调函数CanSM_ConfirmPnAvailability通知已配置的CAN收发器的PN可用性给CanSM模块,然后CanSM模块将调用API CanNm_ConfirmPnAvailability,以相关的CAN网络作为通道,以确认对CanNm模块的PN可用性。

【规范】如果没有Can收发器被配置为一个CAN网络,然后CanSM模块应绕过所有指定的CanIf_SetTrcvMode调用CAN网络,并继续进行不同的状态转换,就好像它已经得到了假定的CanSM_TransceiverModeIndication。

【规范】CanSM模块应存储为每个已配置的CAN网络最新的通信模式请求,它已通过在API请求CanSM_RequestComMode中返回E_OK而被接受。,并将其作为相关CAN网络的状态机的触发器。

【规范】CanSM模块应在每次成功更改CAN控制器模式后进行存储。或总线关闭条件下改变到CAN_CS_STOPPED,每个CAN控制器内部改变模式。

3.2 CAN网络的状态机

状态:

  • Trigger: PowerOn
  • Trigger: CanSM_Init
  • Trigger: CanSM_Init
  • Trigger: T_START_WAKEUP_SOURCE
  • Trigger: T_STOP_WAKEUP_SOURCE
  • Trigger: T_FULL_COM_MODE_REQUEST
  • Trigger: T_SILENT_COM_MODE_REQUEST
  • Trigger: T_NO_COM_MODE_REQUEST
  • Trigger: T_BUS_OFF
  • Guarding condition: G_FULL_COM_MODE_REQUESTED
  • Guarding condition: G_SILENT_COM_MODE_REQUESTED
  • Effect: E_PRE_NOCOM
  • Effect: E_NOCOM
  • Effect: E_FULL_COM
  • Effect: E_FULL_TO_SILENT_COM
  • Effect: E_BR_END_FULL_COM
  • Effect: E_BR_END_SILENT_COM
  • Effect: E_SILENT_TO_FULL_COM

子状态机:

  • CANSM_BSM_WUVALIDATION
  • CANSM_BSM_S_PRE_NOCOM
  • CANSM_BSM_S_SILENTCOM_BOR
  • CANSM_BSM_S_PRE_FULLCOM
  • CANSM_BSM_S_FULLCOM
  • CANSM_BSM_S_CHANGE_BAUDRATE

3.3 错误分类

3.3.1 开发错误

3.3.2 运行错误

 

3.3.3 拓展生产错误

详情请参考手册。

3.4 ECU在线主动/被动模式

【规范】CanSM状态管理器应存储所请求的ECU被动模式的状态。

【规范】当使用CanSM_Passive=true调用CanSM_SetEcuPassive时,CanSM将通过改变已配置的CAN控制器的所有PDU模式,通过调用API CanIf_SetPduMode,目前是CANIF_ONLINE到CANIF_TX_OFFLINE_ACTIVE。

【规范】CanSM_SetEcuPassive用CanSM_Passive=false调用,则CanSM应改变已配置的CAN控制器的所有PDU模式,即CANIF_TX_OFFLINE_ACTIVE到CANIF_ONLINE通过调用API CanIf_SetPduMode。

【规范】如果CanSM需要关于实际Pdu模式的信息,则CanSM应调用API CanIf_GetPduMode,以获取CanIf的当前Pdu模式。

四、API接口

4.1 API定义

  1. CanSM_Init
  2. CanSM_DeInit
  3. CanSM_RequestComMode ——CAN网络的通信模式更改为所请求的通信模式。
  4. CanSM_GetCurrentComMode ——输出CAN网络的当前的通信方式。
  5. CanSM_StartWakeupSource
  6. CanSM_StopWakeupSource
  7. CanSM_GetVersionInfo
  8. CanSM_SetBaudrate
  9. CanSM_SetEcuPassive ——此功能可用于将ECU的所有CanSM通道设置为仅接收模式
  10. CanSM_ControllerBusOff ——此函数通知CanSM关于某个CAN控制器上的总线关闭事件,
  11. CanSM_ControllerModeIndication ——此回调应通知CanSM模块关于CAN控制器模式的更改。
  12. CanSM_TransceiverModeIndication ——此回调应通知CanSM模块关于CAN收发器模式的更改。
  13. CanSM_TxTimeoutException
  14. CanSM_ClearTrcvWufFlagIndication
  15. CanSM_CheckTransceiverWakeFlagIndication
  16. CanSM_ConfirmPnAvailability ——此回调函数表示收发器正在以PN通信模式运行。

4.2 调度接口

  1. CanSM_MainFunction ——CanSM模块应为每个配置的CAN网络实现该模块

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/8148.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2023年第十四届蓝桥杯Java_大学B组真题

Java_B组试题 A: 阶乘求和试题 B: 幸运数字试题 C: 数组分割试题 D: 矩形总面积试题 E: 蜗牛试题 F: 合并区域试题 G: 买二赠一试题 H: 合并石子试题 I: 最大开支试题 J: 魔法阵【考生须知】 考试开始后,选手首先下载题目,并使用考场现场公布的解压密码解…

编译技术-词法理论

一、文法的种类 1.1 分类定义 Chomsky 文法定义: G(V,Vt,P,Z)G (V, V_t, P, Z)G(V,Vt​,P,Z)VVV:符号集合VtV_tVt​:终结符号集合PPP :有穷规则集合ZZZ:是被符号,不能是终结符 关于不同文法的区别 类型…

【多线程与高并发(锁)】1、锁的概念、分类和状态

1、锁的概念 java当中的锁、是在多线程环境下为保证共享资源健康、线程安全的一种手段。 线程操作某个共享资源之前,先对资源加一层锁,保证操作期间没有其他线程访问资源,当操作完成后,再释放锁。 2、锁的分类 Java中的锁按照…

ChatGPT对我们的影响-ChatGPT能给我们带来什么

ChatGPT日常应用 ChatGPT是一种应用广泛的自然语言处理算法,其可以应用于多种日常场景。以下是一些ChatGPT的日常应用: 聊天机器人:ChatGPT可用于构建聊天机器人,通过与用户进行自然语言交互来提供个性化的服务和支持。 新闻稿和…

MyBatis零基础入门实践

MyBatis一、MyBatis简介1、MyBatis历史2、MyBatis特性3、MyBatis下载4、和其它持久化层技术对比二、搭建MyBatis1、开发环境2、创建maven工程3、创建MyBatis的核心配置文件4、创建mapper接口5、创建MyBatis的映射文件6、通过junit测试功能7、加入log4j日志功能三、核心配置文件…

代码随想录算法训练营第五十天 | 123. 买卖股票的最佳时机 III、188. 买卖股票的最佳时机 IV

123. 买卖股票的最佳时机 III 关键在于至多买卖两次,这意味着可以买卖一次,可以买卖两次,也可以不买卖。 动规五部曲: 1、确定dp数组以及下标的含义 一天一共就有五个状态, 没有股票第一次持有股票第一次不持有股…

SPI协议

SPI协议 物理层 信号线 SCK(Serial Clock):时钟线 MOSI(Master Output, Slave Input ):主设备输出,从设备输入 MISO(Master Input,, Slave Output):主设备输入,从设备输出 SSN(…

API 测试 | 了解 API 接口测试 | API 接口测试指南

什么是 API? API 是一个缩写,它代表了一个 pplication P AGC 软件覆盖整个房间。API 是用于构建软件应用程序的一组例程,协议和工具。API 指定一个软件程序应如何与其他软件程序进行交互。 例行程序:执行特定任务的程序。例程也…

Redux的基本使用详解(从入门到入土)

Redux的基本使用过程详解 学习文档 中文文档: http://www.redux.org.cn/ 英文文档: https://redux.js.org/ Github: https://github.com/reactjs/redux 一,redux是什么 1,介紹: redux是一个专门用于做状态管理的JS库(不是react插件库)。它…

程序员讨厌的“笔试题”,还有存在的必要性吗?

面试,是我们拿到offer的必经之地,在面试中我们会遇到各种“刁难”,而让程序员最为排斥的,非“笔试题”莫属。 △ 截图来源脉脉,如侵删 为什么程序员越来越排斥做面试题呢?我们先来看看网友们的说法&#x…

【Vue2从入门到精通】深入浅出,带你彻底搞懂Vue2组件通信的9种方式

文章目录Vue组件间通信分类1.props / $emit1.1 父组件向子组件传值1.2 子组件向父组件传值2.$parent / $children3.ref / $refs3.1 ref作用于组件3.2 ref作用于Html标签3.3 $nextTick()4.EventBus ($emit / $on)4.1 初始化4.2 发送事件4.3 接收事件4.4 移…

博客首页效果

学习来自风宇blog的博客首页效果 全部用的基本上都是原生的html,css,js特别是flex布局的使用,主轴方向可以是横轴,也可以是纵轴,弹性项还可可以使用百分比sticky粘性布局,作为侧边栏,它不会超出…

分享一个国内可用的免费ChatGPT网站

背景 ChatGPT作为一种基于人工智能技术的自然语言处理工具,近期的热度直接沸腾🌋。 作为一个程序员,我也忍不住做了一个基于ChatGPT的网站,免费!免登陆!!国内可直接对话ChatGPT,也…

c++类和对象

🙆🏼关注作者:玺子写代码 ✍️gitee:玺子写代码 目录👉🏻类的定义👉🏽类的两种定义方式👉🏼类的访问限定符及封装👉🏽访问限定符&…

ML@sklearn@ML流程Part3@AutomaticParameterSearches

文章目录Automatic parameter searchesdemomodel_selection::Hyper-parameter optimizersGridSearchCVegRandomizedSearchCVegNoteRandomForestRegressorMSEpipeline交叉验证🎈egL1L2正则Next stepsUser Guide vs TutorialAutomatic parameter searches Automatic p…

6 计时器(一)

计时器 6.1 TIM TIM简介 TIM(Timer)定时器 定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断 16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时 不仅具备基本的定时中…

如何在现实场景中随心放置AR虚拟对象?

随着AR的发展和电子设备的普及,人们在生活中使用AR技术的门槛降低,比如对于不方便测量的物体使用AR测量,方便又准确;遇到陌生的路段使用AR导航,清楚又便捷;网购时拿不准的物品使用AR购物,体验更…

Spring-aop面向切面

1、理解必要的专业术语 先看看上面图,这是我的个人理解。(画的丑,主打真实) 1)Advice,通知/增强:类方法中提出来的共性功能(大白话就是提出来的重复代码) 2)Pointcut,切入点/切点&#…

centos7修改ip

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

uniapp国际化配置

1、创建资源文件 创建一个locale文件夹,新增index.js,en.json,zh-hans.json 2.配置locale文件夹中的index.js文件 import Vue from vue import VueI18n from vue-i18n// v8.x import en from ./en.json import zhHans from ./zh-Hans.json import zhHant from .…