SWS_CANDriver 规范理解

2023-10-30 13:10
文章标签 理解 规范 sws candriver

本文主要是介绍SWS_CANDriver 规范理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这里先对CAN通讯相关的AUTOSAR规范,具体指AUTOSAR_SWS_CANXXX.pdf的这类文档的结构做个说明,一般分为10个部分:

1.引言与功能概览,introduction and functional overview
2.
省略与简写,acronyms and abbreviations
3.
参考文档, related documentation
4.
限制和假设,constraints and assumptions
5.
与其他模块的关联性, dependencies to other modules
6.
需求追溯, requirement traceability
7.
功能规范, functional specification
8.
接口规范, API specification
9.
时序图, sequence diagrams
10.
配置规范, configuration specification

CAN驱动(driver)来说,这样一篇文档先介绍下CAN驱动是什么?与其他哪些模块有关联性?CAN驱动模块要满足哪些需求?有哪些功能,接口和配置规范,执行时序是怎样的?

CAN Driver 属于硬件抽象层,一共包含着5个功能,由底向上分别为: CAN L-PDU; HTH/HRH; Hardware Object; CAN Controller A,B,C...和CAN Hardware Unit。

CAN Hardware Unit:CAN Hardware可以由一个或多个相同类型的CAN Controller和一个或多个CAN RAM区域组成。

CAN Controller:一个CAN Controller只能去服务于一个物理通道。

Hardware Object:可以想成CAN Hardware Unit 在 CAN RAM区域内的一个PDU缓冲区。

HTH/HRH:全部由CAN driver提供;HRH,通常只表示一个硬件对象(用于软件过滤);HTH,通常表示一个或多个硬件对象。 

CAN L-PDU:CAN协议数据单元。 由ID、DLC、Data(SDU)组成。

结合以上理解,对规范中的下图就有有一个比较直观的理解了

--refer sws content: 7.2 Driver State Machine

CAN Driver状态机比较简单,只有两种状态: CAN_UNINIT、CAN_READY

--refer: Document ID 011: AUTOSAR_SWS_CANDriver -7.3 Driver State Machine

有四种状态(UNINIT;STOPPED;SLEEP;STARTED)。

UNINIT :CAN控制器未初始化。 所有属于CAN Module的寄存器处于Reset状态。 禁用Can Interrupt。 不加入Can总线。 

STOPPED:CAN控制器被初始化但没有加入总线。 

SLEEP:CAN BUS直接支持CAN Hardware,而SLEEP不同于STOPPED。

STARTED:也就是说它加入网络时,控制器处于正常模式,功能完整。

3.1.1 CAN Controller State Transitions

        CAN Controller 的状态转换 是由Can_SetControllerMode函数触发的, 并以所需求的转换模式为参数。 转换成功与否可由回调函数CanIf_ControllerModeIndication通知。CAN Controller 的状态转换是否到达所需求位置是由上层模块 CANIf 监控的,并不是由CAN Driver模块监控。

某些状态的转换是由BUS(hardware) 触发的,这些通知是由上层的 CAN If模块的函数触发(CanIf_ControllerBusOff, EcuM_CheckWakeup)

下图为CAN controller有效的状态转换图

State transition caused by function Can_Init

  • UNINIT à STOPPED (for all controllers in HW unit)
  • software triggered by the function call Can_Init
  • does configuration for all CAN controllers inside HW Unit

State transition caused by function Can_SetBaudrate

  • STOPPED -> STOPPED; SLEEP -> SLEEP; STARTED -> STARTED
  • software triggered by the function call Can_SetBaudrate
  • changes the CAN controller configuration

State transition caused by function Can_SetControllerMode

State transition caused by function Can_SetControllerMode (CAN_CS_STARTED)

  • STOPPED à STARTED
  • software triggered

State transition caused by function Can_SetControllerMode (CAN_CS_STOPPED)

  • STARTED à STOPPED
  •  SLEEP à STOPPED
  •  software triggered

State transition caused by function Can_SetControllerMode(CAN_CS_SLEEP)

  • STOPPED à SLEEP
  •  software triggered

State transition caused by Hardware Events

  •  SLEEP à STOPPED
  • triggered by incoming L-PDUs
  •  The ECU Statemanager module is notified with the function EcuM_CheckWakeup

State transition caused by function Can_DeInit

  • STOPPED -> UNINIT; SLEEP -> UNINIT (for all controllers in HW unit)
  • software triggered by the function call Can_DeInit
  • prepares all CAN controllers inside HW Unit to be re-configured

这篇关于SWS_CANDriver 规范理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/308130

相关文章

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

通过Python脚本批量复制并规范命名视频文件

《通过Python脚本批量复制并规范命名视频文件》本文介绍了如何通过Python脚本批量复制并规范命名视频文件,实现自动补齐数字编号、保留原始文件、智能识别有效文件等功能,听过代码示例介绍的非常详细,... 目录一、问题场景:杂乱的视频文件名二、完整解决方案三、关键技术解析1. 智能路径处理2. 精准文件名

深入理解Apache Airflow 调度器(最新推荐)

《深入理解ApacheAirflow调度器(最新推荐)》ApacheAirflow调度器是数据管道管理系统的关键组件,负责编排dag中任务的执行,通过理解调度器的角色和工作方式,正确配置调度器,并... 目录什么是Airflow 调度器?Airflow 调度器工作机制配置Airflow调度器调优及优化建议最

一文带你理解Python中import机制与importlib的妙用

《一文带你理解Python中import机制与importlib的妙用》在Python编程的世界里,import语句是开发者最常用的工具之一,它就像一把钥匙,打开了通往各种功能和库的大门,下面就跟随小... 目录一、python import机制概述1.1 import语句的基本用法1.2 模块缓存机制1.

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

深入理解Redis大key的危害及解决方案

《深入理解Redis大key的危害及解决方案》本文主要介绍了深入理解Redis大key的危害及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、背景二、什么是大key三、大key评价标准四、大key 产生的原因与场景五、大key影响与危

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言