[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 说明

  后续更新

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅析虚函数的vptr和虚函数表

浅析虚函数的vptr和虚函数表 文章目录 浅析虚函数的vptr和虚函数表前言1. 基础理论2. 实现与内部结构 前言 ​ 为了实现虚函数&#xff0c;C使用一种称为虚拟表的特殊形式的后期绑定。该虚拟表是用于解决在动态/后期绑定方式的函数调用函数的查找表。虚拟表有时会使用其他名称…

图像处理ASIC设计方法 笔记6 数据拼接和帧格式校正

第四章大模板卷积ASIC设计方案 P80 实时图SPRM 数据位宽64bit&#xff0c;4个SPRAM&#xff0c;同时得到4行数据 绘制卷积芯片数据路径图&#xff0c;卷积芯片内部模块图 根据这个图&#xff0c;本书后续对各个模块都进行介绍。 P81 第一个模块 图像输入前端FIFO 学习图像处…

关于脉冲负载应用中电阻器,您需要了解的 11 件事?

不幸的是&#xff0c;电阻器在脉冲负载下可能会失效。当脉冲功率耗散到器件的电阻元件时&#xff0c;它会产生热量并增加电阻器的温度。过热会损坏电阻元件&#xff0c;导致电阻变化甚至设备开路。为了避免在设计中出现这种情况&#xff0c;以下是您在选择元件时应了解的有关电…

RocketMQ - 深入研究一下Broker是如何持久化存储消息的

1. CommitLog消息顺序写入机制 首先思考一下,当生产者的消息发送到一个Broker上的时候,他接收到了一条消息,接着他会对这个消息做什么事情? 首先第一步,他会把整个消息直接写入磁盘上的一个日志文件,叫做CommitLog,直接顺序写入这个文件,如下图: 这个CommitLog是很…

redis运维

1.备份redis配置文件 cp /etc/redis.conf /etc/redis.conf.bak 2.将redis中不要的注释和空行删除 sed -i /^#/d; /^$/d /etc/redis.conf 3.redis配置文件 bing 0.0.0.0 &#xff1a;绑定本机所有网卡 daemonize yes&#xff1a;设置后台运行 requirepass redispwd…

二维码门楼牌管理系统技术服务:构建智慧城市新标准

文章目录 前言一、二维码门楼牌管理系统的诞生背景二、标准地址编码的定义与作用三、二维码门楼牌管理系统的核心技术四、二维码门楼牌管理系统的应用优势五、二维码门楼牌管理系统在智慧城市建设中的作用六、结论与展望 前言 随着城市化的快速发展&#xff0c;传统的门楼牌管…

linux安装matlab获取许可证

1.点击许可证 2. 3. 4. 4.主机ID 打开linux输入 /sbin/ifconfigether后边的就是 6.计算机登录名 打开linux输入 whoami7. 8. 9.

第十六天-爬虫selenium库

目录 1.介绍 2.使用 selenium 1.安装 2.使用 1.测试打开网页&#xff0c;抓取雷速体育日职乙信息 2.通过xpath查找 3.输入文本框内容 send_keys 4.点击事件 click 5.获取网页源码&#xff1a; 6.获取cookies 7.seleniumt提供元素定位方式&#xff1a;8种 8.控制浏览…

Linux/Docker 修改系统时区

目录 1. Linux 系统1.1 通过 timedatectl 命令操作1.2 直接修改 /etc/localtime 文件 2. Docker 容器中的 Linux 操作环境&#xff1a; CentOS / AlmaOSMySQL Docker 镜像 1. Linux 系统 1.1 通过 timedatectl 命令操作 使用 timedatectl list-timezones 命令列出可用的时区…

4. 编写app组件

1. 代码 main.ts // 引入createApp用于创建应用 import {createApp} from "vue"// 引入App根组件 import App from ./App.vue createApp(App).mount(#app) App.vue <!-- vue文件可以写三种标签1. template标签&#xff0c;写html结构2. script 脚本标签&…

外包干了6个月,技术退步明显

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入广州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

HTML+CSS+JS:日夜交替

效果演示 实现了一个简单的日夜交替效果的动画。页面中包含了太阳、月亮和海洋的元素&#xff0c;通过切换按钮可以切换页面的主题&#xff0c;从白天切换到黑夜&#xff0c;或者从黑夜切换到白天。 Code <div class"btn-box"><div class"sunBtn"…