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

news2024/11/15 18:07:09

目录

  • 关键词
  • 平台说明
  • 一、缩写和定义
  • 二、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 说明

  后续更新

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无穷积分例子

以下几个题容易出错&#xff0c;特意记录一下。 判断积分式的敛散性 ∫ − ∞ ∞ 1 x 2 e 1 x d x \int _{-\infty } ^ {\infty} \frac{1}{x^2} e ^{\frac{1}{x}} dx ∫−∞∞​x21​ex1​dx 要注意瑕点0的处理。无穷积分&#xff0c;一般将积分域按瑕点拆分并分别积分。 判断…

谷粒商城【成神路】-【8】——商品上架

目录 1.数据模型封装 1.es数据模型 2.将es数据模型封装为JAVA bean 3.根据前端发送请求,编写controller 2.模型实现 2.1服务controller 2.2服务service 2.3服务远程调用接口 2.4检索服务controller 2.5检索服务保存到es 2.6库存查询服务 1.数据模型封装 1.es数据模…

Linux多线程服务端编程:使用muduo C++网络库 学习笔记 附录D 关于TCP并发连接的几个思考题与试验

前几天作者在新浪微博上出了两道有关TCP的思考题&#xff0c;引发了一场讨论&#xff08;http://weibo.com/1701018393/eCuxDrtaONn&#xff09;。 第一道初级题目是&#xff1a;有一台机器&#xff0c;它有一个IP&#xff0c;上面运行了一个TCP服务程序&#xff0c;程序只侦听…

STM32学习7 按键扫描

STM32学习7 按键扫描 一、实验电路介绍二、按键GPIO初始化三、扫描原理1. GPIO引脚配置2. 状态轮询3. 按键状态检测4. 循环扫描的优缺点优点&#xff1a;缺点&#xff1a; 四、一次扫描与持续扫描五、代码实现1. 头文件定义2. 函数实现3. 主体函数 一、实验电路介绍 本实验使用…

代码随想录算法训练营第七天

● 自己看到题目的第一想法 第454题.四数相加II 方法&#xff1a; 方法一&#xff1a; 暴力法 思路&#xff1a; 注意&#xff1a; 代码&#xff1a; class Solution { public:int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<i…

ABB眼中AI推动机器人创新的三大方向

文 | BFT机器人 ABB的历史是一部充满革新与进步的史诗&#xff0c;它的机器人篇章始于1974年&#xff0c;那一年它向世界推出了被誉为“全球首个商用全电动机器人”的IRB 6。时隔半个世纪&#xff0c;ABB的机器人产品线已变得无比强大和多元&#xff0c;囊括了先进的工业机械臂…

OpenAI 与开源多语言嵌入模型

原文地址&#xff1a;OpenAI vs Open-Source Multilingual Embedding Models 选择最适合您的数据的模型 2024 年 2 月 25 日 OpenAI最近发布了他们的新一代embedding模型&#xff0c;称为embeddingv3&#xff0c;他们描述是他们性能最好的embedding模型&#xff0c;具有更高…

MySQL8安装切换密码验证方式

一、MySQL8中新增了一种密码验证方式&#xff1a;caching_sha2_password&#xff0c;如果安装时选择了如下方式&#xff1a; 则数据库使用新的caching_sha2_password密码验证方式。 二、如果安装时选择了caching_sha2_password验证方式&#xff0c;而安装后想发回传统的mysql_…

云原生之容器编排实践-ruoyi-cloud项目部署到K8S:Redis7.2.3

背景 前面搭建好了 Kubernetes 集群与私有镜像仓库&#xff0c;终于要进入服务编排的实践环节了。本系列拿 ruoyi-cloud 项目进行练手&#xff0c;按照 MySQL &#xff0c; Nacos &#xff0c; Redis &#xff0c; Nginx &#xff0c; Gateway &#xff0c; Auth &#xff0c;…

Power BI vs Superset BI 调研报告

调研结论 SupersetPower BI价格开源①. Power BI Pro 每人 $10/月($120/年/人) ②. Power BI Premium 每人 $20/月($240/年/人) ③. Power BI Embedded:4C10G $11W/年 权限基于角色的访问控制,支持细粒度的访问: 表级别、库级别、图表级别,看板级别,用户级别 基于角色…

VS Code 的粘性滚动预览 - 类似于 Excel 的冻结首行

VS Code 的粘性滚动预览 - 类似于 Excel 的冻结首行功能&#xff0c;即滚动 UI 显示当前源代码范围。便于在代码行数比较多的时候更好的知道自己所在的位置。粘性滚动UI 显示用户在滚动期间所处的范围&#xff0c;将显示编辑器顶部所在的类/接口/命名空间/函数/方法/构造函数&a…

JavaScript之引用类型

系列文章目录 文章目录 系列文章目录前言一、Object类型二、Array类型三、Date类型四、Function类型五、内置对象 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文…

C++ opencv 学习

文章目录 1、创建窗口2、读取图片3、视频采集4、Mat的使用5、异或操作6、通道分离&#xff0c;通道合并7、色彩空间转换8、最大值、最小值9、绘制图像10、多边形绘制11、随机数12、鼠标实时绘制矩形13、归一化14、resize操作15、旋转翻转16、视频操作17、模糊操作18、高斯模糊操…

ONLYOFFICE文档8.0全新发布:私有部署、卓越安全的协同办公解决方案

ONLYOFFICE文档8.0全新发布&#xff1a;私有部署、卓越安全的协同办公解决方案 文章目录 ONLYOFFICE文档8.0全新发布&#xff1a;私有部署、卓越安全的协同办公解决方案摘要&#x1f4d1;引言 &#x1f31f;正文&#x1f4da;一、ONLYOFFICE文档概述 &#x1f4ca;二、ONLYOFFI…

字符串之manacher(马拉车)算法

这个算法用途就是查找字符串内的最长回文串 正常情况下&#xff0c;我们查找回文序列&#xff0c;会去用双指针比较&#xff0c;这样的话数据大的时候&#xff0c;时间复杂度就上去了&#xff0c;其实这个马拉车算法和kmp算法的一部分是有些相像的&#xff0c;建议先看我的上篇…

00X集——acdbpolyline与acdb2dpolyline区别

下图中选择的线为通过ThisDrawing.ModelSpace.AddPolyline(points)创建的&#xff0c;包含2个点 通过代码查询objectname,如下图acdb2dpolyline ObjectARX 中提供了三种多段线的相关类:AcDbPolyline 、AcDb2dPolyline 和 AcDb3dPolyline 。其中&#xff0c;利用AutoCAD 的内部…

【Java项目介绍和界面搭建】拼图小游戏——打乱图片顺序

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏 …

现代化数据架构升级:毫末智行自动驾驶如何应对年增20PB的数据规模挑战?-OceanBase案例

毫末智行是一家致力于自动驾驶的人工智能技术公司&#xff0c;其前身是长城汽车智能驾驶前瞻分部&#xff0c;以零事故、零拥堵、自由出行和高效物流为目标&#xff0c;助力合作伙伴重塑和全面升级整个社会的出行及物流方式。 在自动驾驶领域中&#xff0c;是什么原因让毫末智行…

力扣601 体育馆的人流量

在解决"连续三天及以上人流量超过100的记录"问题时&#xff0c;MySQL方案作为力扣解决问题的方案通过窗口函数和分组技巧高效地识别连续记录。而Python与Pandas方案作为扩展则展示了在数据处理和分析方面的灵活性&#xff0c;通过行号变换和分组计数来筛选符合条件的…

unity学习(46)——服务器三次注册限制以及数据库化角色信息1--数据流程

1.先找到服务器创建角色信息代码的位置&#xff0c;UserBizImpl.cs中&#xff1a; public PlayerModel create(string accId, string name, int job) {PlayerModel[] playerModelArray this.list(accId);//list是个自建函数&#xff0c;本质通过accId来查询if (playerModelAr…