[AutoSar]BSW_Com08 CAN driver 模块介绍及参数配置说明 (一)

2024-03-04 01:20

本文主要是介绍[AutoSar]BSW_Com08 CAN driver 模块介绍及参数配置说明 (一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 关键词
  • 平台说明
  • 一、缩写和定义
  • 二、CAN driver 所在位置
  • 三、CAN 模块的主要功能
  • 四、功能规格
    • 4.1 Driver State Machine
    • 4.2 CAN控制器状态机
    • 4.3 CAN控制器状态机转换
      • 4.3.1 调用function Can_Init 导致的状态转换
      • 4.3.2 调用Can_ChangeBaudrate导致的状态转换
      • 4.3.3 调用Can_SetControllerMode导致的状态转换
      • 4.3.4 硬件触发导致的状态转换
  • 五、唤醒
  • 六、vector cfg 说明

  

关键词

嵌入式、C语言、autosar、OS、BSW

平台说明

项目Value
OSautosar OS
autosar厂商vector ,
芯片厂商TI 英飞凌
编程语言C,C++
编译器HighTec (GCC)
autosar版本4.3.1

在这里插入图片描述
>>>>>回到总目录<<<<<<

一、缩写和定义

abbreviations定义
Hardware Object Handle (HOH)HRH 和HTH 的统称
Hardware Receive Handle (HRH)由CAN驱动程序定义和提供。每个HRH通常只代表一个Hardware Object。HRH可用于优化软件过滤。
Hardware Transmit Handle (HTH)由CAN驱动程序定义和提供。每个HTH通常只表示一个或多个Hardware Object,这些对象被配置为硬件传输缓冲
Hardware ObjectCAN硬件对象定义为CAN硬件单元/ CAN控制器的CAN RAM内的PDU缓冲区。可以直接理解为一个Hardware Object 就是一个L-PDU
Data Length Code(DLC)L-PDU中SDU 的长度
Physical Channel物理通道表示从CAN控制器到CAN网络的接口。CAN硬件单元的不同物理通道可以访问不同的网络。可以理解为一个网关
CAN controller一个can TX OR RX 连接的节点
CAN Hardware unit一个或者多个CAN controller + 一个或者多个CAN RAM area

二、CAN driver 所在位置

  CAN driver 位于 Microcontroller Abstraction Layer。
在这里插入图片描述

三、CAN 模块的主要功能

  1.作为上层(CAN_IF)和下层(CAN 硬线)的交互媒介,访问硬件和为上层(CAN_IF)提供接口。
在这里插入图片描述

四、功能规格

4.1 Driver State Machine

  只有两个driver 状态,CAN_UNINIT 和 CAN_READY 用 Can_Init 和Can_deInit 切换两种状态。
在这里插入图片描述

4.2 CAN控制器状态机

  包含了四种状态:UNINIT,STOPPED,STARTED,SLEEP。
  UNINIT:未初始化或者刚复位,所有CAN ISR被禁用。
  STOPPED:CAN控制器被初始化,但不参与总线。此外,不能发送错误帧和确认。(例如:对于许多控制器,进入“initialization”模式会导致控制器停止运行。)
  STARTED:控制器处于正常运行状态,功能完整,即参与网络。对于许多控制器来说,离开“初始化”模式会导致控制器启动。
  SLEEP:对于支持CAN 休眠的硬件,如果can 总线切换为sleep,那边 can 控制器也必须切到sleep状态。对于不支持CAN休眠的硬件,CAN控制器也必须模拟SLEEP 状态知道 被出发过渡到STOPPED 状态。

4.3 CAN控制器状态机转换

  四种状态通过Can_SetControllerMode 函数来转换,通过CanIf_ControllerModeIndication函数回调通知转换是否成功。
在这里插入图片描述

4.3.1 调用function Can_Init 导致的状态转换

  1.成功执行Can_Init会让状态UNINIT --> STOPPED.
  2.当执行Can_Init 的时候,CAN Driver State 如果不在CAN_UNINIT 或者 can 控制器不在UNINIT 状态则会报CAN_E_TRANSITION 错误。

4.3.2 调用Can_ChangeBaudrate导致的状态转换

  1.成功执行Can_ChangeBaudrate会让状态STOPPED --> STOPPED.
  2.当执行Can_Init 的时候, can 控制器不在STOPPED状态则会报CAN_E_TRANSITION错误。

4.3.3 调用Can_SetControllerMode导致的状态转换

  1.软件可以通过Can_SetControllerMode函数触发can控制器状态转换。根据CAN硬件,寄存器设置的变化转换到新的CAN控制器状态可能只有在延迟之后才会接管。Can模块在状态转换成功后通知上层(CanIf_ControllerModeIndication)新状态。监视所请求的状态是否实现是上层模块的一部分,而不是Can模块的一部分。
  2.Can_Mainfunction_Mode函数将轮询CAN状态寄存器的一个标志,直到该标志发出改变生效的信号,并通过CanIf_ControllerModeIndication函数通知上层状态转换成功。
  3.Can_SetControllerMode函数应使用系统服务GetCounterValue进行超时监控,避免阻塞函数。

4.3.4 硬件触发导致的状态转换

  1.硬件唤醒会导致SLEEP–> STOPPED.
  2.BUSS OFF 会导致start–> STOPPED

五、唤醒

  Can模块处理可以由Can控制器本身检测到的唤醒,而不是通过Can收发器。有两种可能的场景:通过中断唤醒和通过轮询唤醒。对于通过中断唤醒,当硬件检测到唤醒时,会调用Can模块的ISR。如果调用唤醒事件ISR,则依次调用EcuM_CheckWakeup。传递给EcuM_CheckWakeup的参数应该是CanWakeupSourceRef配置参数引用的唤醒源ID。ECUM会设置唤醒源并通过 CAN接口调用CAN模块从而调用Can_checkWakeup。
[AutoSar]状态管理(二)单核 ECUM wakeup 流程——Can唤醒流程(TJA1043)

六、vector cfg 说明

  后续更新

>>>>>回到总目录<<<<<<

这篇关于[AutoSar]BSW_Com08 CAN driver 模块介绍及参数配置说明 (一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

springboot security之前后端分离配置方式

《springbootsecurity之前后端分离配置方式》:本文主要介绍springbootsecurity之前后端分离配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的... 目录前言自定义配置认证失败自定义处理登录相关接口匿名访问前置文章总结前言spring boot secu

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

Spring Boot结成MyBatis-Plus最全配置指南

《SpringBoot结成MyBatis-Plus最全配置指南》本文主要介绍了SpringBoot结成MyBatis-Plus最全配置指南,包括依赖引入、配置数据源、Mapper扫描、基本CRUD操... 目录前言详细操作一.创建项目并引入相关依赖二.配置数据源信息三.编写相关代码查zsRArly询数据库数

SpringBoot配置Ollama实现本地部署DeepSeek

《SpringBoot配置Ollama实现本地部署DeepSeek》本文主要介绍了在本地环境中使用Ollama配置DeepSeek模型,并在IntelliJIDEA中创建一个Sprin... 目录前言详细步骤一、本地配置DeepSeek二、SpringBoot项目调用本地DeepSeek前言随着人工智能技

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各