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

相关文章

深入理解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 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

如何通俗理解注意力机制?

1、注意力机制(Attention Mechanism)是机器学习和深度学习中一种模拟人类注意力的方法,用于提高模型在处理大量信息时的效率和效果。通俗地理解,它就像是在一堆信息中找到最重要的部分,把注意力集中在这些关键点上,从而更好地完成任务。以下是几个简单的比喻来帮助理解注意力机制: 2、寻找重点:想象一下,你在阅读一篇文章的时候,有些段落特别重要,你会特别注意这些段落,反复阅读,而对其他部分

深入理解数据库的 4NF:多值依赖与消除数据异常

在数据库设计中, "范式" 是一个常常被提到的重要概念。许多初学者在学习数据库设计时,经常听到第一范式(1NF)、第二范式(2NF)、第三范式(3NF)以及 BCNF(Boyce-Codd范式)。这些范式都旨在通过消除数据冗余和异常来优化数据库结构。然而,当我们谈到 4NF(第四范式)时,事情变得更加复杂。本文将带你深入了解 多值依赖 和 4NF,帮助你在数据库设计中消除更高级别的异常。 什么是

分布式系统的个人理解小结

分布式系统:分的微小服务,以小而独立的业务为单位,形成子系统。 然后分布式系统中需要有统一的调用,形成大的聚合服务。 同时,微服务群,需要有交流(通讯,注册中心,同步,异步),有管理(监控,调度)。 对外服务,需要有控制的对外开发,安全网关。

Java IO 操作——个人理解

之前一直Java的IO操作一知半解。今天看到一个便文章觉得很有道理( 原文章),记录一下。 首先,理解Java的IO操作到底操作的什么内容,过程又是怎么样子。          数据来源的操作: 来源有文件,网络数据。使用File类和Sockets等。这里操作的是数据本身,1,0结构。    File file = new File("path");   字