CAN网络管理(TJA1145如何实现MCU的休眠唤醒)

节点唤醒方式

本地唤醒: 唤醒源来源于自身模块,比如常说的KL15,控制器由KL15线供电,即只能在钥匙置于“ACC”或者“ON”档时运行软件和维持CAN通信

  • 对于正在运行的CPU软件,无论它处在什么状态,只要Hardware OFF,PMIC供电立即切断,3.3V,5.0V立即消失,程序立即停止运行,ECU系统进入OFF模式,不存在Sleep模式。该状态下PMIC也不消耗电能,ECU系统的电能消失是0,比较KL30节点的Sleep模式最节省电能。
  • KL15节点没有下电流程,随时可能终止运行,没有时间进入AfterRun模式和做Eeprom最终存储。WakeUp信号的消失后ECU直接进入OFF模式,不存在Sleep模式,不耗费电能。
  • KL30节点有完整的下电流程,软件根据WakeUp信号的消失可以控制自己按步骤进入AfterRun模式,存储数据到flash,设置PMIC进入Sleep模式。ECU进入Sleep模式只有PMIC在耗电。AutoSar网络管理只针对KL30节点。(参考BSWMECUM的上下电流程)

远程唤醒: 唤醒源来源于自身ECU节点所在的网络报文

  • 网络唤醒是以网络管理报文为基础来协同整个网络“同睡同醒”,CanNM采用分布式的直接网络管理方式来发送自身节点所需的网络管理请求及自身网络管理状态,并接受来自网络上其他ECU节点的网络管理请求与状态。"同睡同醒"机制的目的是确保所有节点在睡眠和唤醒操作上保持同步。当一个节点准备进入睡眠模式时,它会通过网络发送一个特殊的同步消息,通知其他节点它即将进入睡眠状态。其他节点接收到该消息后,会做出相应的响应,以确保整个系统在同一时间进入睡眠状态。同样地,当一个节点准备唤醒时,它会发送一个唤醒消息来通知其他节点。其他节点接收到唤醒消息后,会做出相应的响应,以确保整个系统在同一时间唤醒。
  • 该状态机的状态类型可分为“三大三小”。

“三大”指的是Bus Sleep Mode、Network Mode、Prepare Bus-Sleep Mode;

“三小”则值得是Network Mode下的三个子状态:Repeat Message State、Normal Operation Mode、Ready Sleep Mode。

  • 一旦进入Network Mode,计时器T_NM_Timeout就会启动,只要成功接收到来自总线上的NM报文或者成功发送至总线NM报文,都会将该计时器T_NM_Timeout重置。一旦T_NM_TIMEROUT 超时,那么就会离开该状态转而进入Prepare Bus-Sleep状态。
  • 报文发送与接受状态

“Bus-Sleep”阶段,只接收NM报文唤醒,不发送任何报文;

“Pre-Bus-Sleep”阶段,同样仅允许接收NM报文,对于早已在发送Buffer中的APP报文应发送完毕后立刻停止APP报文;

“Network Mode”模式下,除了在Ready Sleep阶段不允许发送NM报文之外,其余阶段APP报文与NM报文正常收发;

CanNM报文周期性的向MCU发送,如果一旦一段时间没有收到,MCU就通过SPI向TJA115的寄存器写数据,要进入sleep模式,之后TJA1145在向PMIC拉低

如何让TJA1145进入sleep和wakeup状态

下图以TJA1043简单说明can报文如何使MCU进入到休眠唤醒状态:

  • S1:MCU满足休眠条件时,通过发送SPI相应指令让TJA1145进入Sleep状态;

例如下面的用法:

简单的指令代码实现就是下图:

  • S2:TJA1145进入到Sleep状态后,INH引脚就会拉低,控制5V或者3V关闭电源输出,间接导致MCU整个系统处理掉电状态,此时TJA1145始终处于供电状态(由于BAT始终有电),整个ECU成功进入到休眠状态;
  • S3:TJA1145虽然处于Sleep状态,属于极低功耗状态,同步也检测着网络是否存在有效唤醒源;
  • S4:当TJA1145发现有效唤醒源之后,就会自动从Sleep状态切换成Standby状态,在Standby状态下INH引脚拉高,此时5V与3V便会正常输出,从而MCU被正常供电,程序开启正常运行;

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

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

相关文章

深度学习模型keras第二十五讲:使用KerasNLP从零开始预训练Transformer模型

1、KerasNPL预训练Transformer模型概念 使用KerasNLP来预训练一个Transformer模型涉及多个步骤。由于Keras本身并不直接提供NLP的预训练模型或工具集,我们通常需要结合像TensorFlow Hub、Hugging Face的Transformers库或自定义的Keras层来实现。 以下是一个简化的…

Android Baidu地图SDK只展示蓝背景,没有绘制内容问题解决

背景 项目里接入了Baidu地图SDK,用于展示信息、选点。 在一个新的Activity中,引入了TextureMapView,用于地图展示。 选点过程有两个页面。 A页面中有一个不能滑动的地图,只是用来展示,没有其他任何操作。 点击A页…

Plesk中如何移除之前添加的域名

我这边想要移除我之前绑定到主机的域名,但是不知道如何在主机上面进行移除,由于我使用的Hostease的Windows虚拟主机产品默认带普通用户权限的Plesk面板,但是不知道如何在Plesk上操作移除域名,因为也是对于Hostease主机产品不是很了…

java单元测试:JUnit断言库

JUnit断言库提供了一组用于验证测试结果的工具。这些断言方法帮助开发人员在单元测试中明确表达预期结果,并在实际结果与预期结果不符时报告失败。 1. JUnit中的断言 断言用于验证测试的预期结果。JUnit 5(Jupiter)提供了一组静态方法&…

获取和设置代理的动态IP的方式

引言 大家好,今天我来给大家分享一下如何通过编程技术来获取和设置代理的动态IP。在网络世界中,代理和动态IP是非常常见的概念,尤其对于需要大规模访问网站或者需要隐藏真实IP地址的应用程序来说,更是必不可少的工具。接下来&…

【精品】【算法实战】每日一题:如何用Python实现给定整数序列中寻找最小长度窗口以包含所有不同元素的算法?

问题: 如何用Python实现给定整数序列中寻找最小长度窗口以包含所有不同元素的算法? 核心思路 核心思路是利用双端队列(作为滑动窗口)来找到一个满足特定条件的最小长度子序列。算法遍历给定的序列,对于每个新数据点…

【Spring】Spring框架对RESTFul风格的支持

1、简介 Spring框架对RESTful风格的支持主要体现在Spring MVC和Spring Boot等模块中。RESTful(Representational State Transfer,表述层资源状态转移)是一种软件架构风格,它强调资源(通常是网络上的信息)的…

Java方法的基本用法

Java方法的基本用法 前言一、什么是方法方法存在的意义示例 二、方法定义语法基本语法代码示例注意事项 三、方法调用的执行过程基本规则代码示例计算两个整数相加计算 1! 2! 3! 4! 5! 四、实参和形参的关系代码示例交换两个整型变量原因分析解决办法 五、没有返回值的方法…

初识java——javaSE (6)接口的实现——比较器与深拷贝,浅拷贝

文章目录 前言一 比较器1.1 关于两个对象的比较1.2 Comparable接口:1.3 Arrays.sort方法的实现1.4 比较器的实现Comparator接口 二 深拷贝与浅拷贝2.1 浅拷贝:Cloneable接口:clone方法:实现拷贝:浅拷贝: 2.…

Python3 笔记:Python的所有关键字

查看Python的关键字首先需要用import导入keyword模块 import keyword # 查看Python的所有关键字,先用import导入keyword模块 print(keyword.kwlist) 运行结果: [False, None, True, and, as, assert, async, await, break, class, continue, def, …

MQ如何保证消息不丢失

MQ如何保证消息不丢失 问题分析具体分析及解决方案RabbitMQ生产者RabbitMQ配置消费者 KafkaKafka配置消费者 问题分析 从Kafka和RabbitMQ进行分析,MQ消息丢失的情况有生产者推送消息时数据丢失,MQ中间件宕机情况下数据丢失,消费者消费时消息…

GoLand map中的并发问题——为什么会造成并发问题?该怎么解决?

GoLand map中的并发问题——为什么会造成并发问题?该怎么解决? 问题提出原因解析具体原因竞态检测器 如何解决并发问题呢?方法一 : 使用sync.Mutex方法二: 使用sync.Map我们首先了解一下sync.Map的常用方法&#xff1a…

2024.5.24.python.exercise

# python文件操作 # f open("打字版.txt", "a", encoding"UTF-8") # writer input("请输入你想要写入到文件的内容") # f.write(writer) # f.flush() # f.close() # f open("打字版.txt", "r", encoding"…

代码随想录算法训练营第三十九天 | 738.单调递增的数字、968.监控二叉树 (可以跳过)

监控二叉树同样的等代码随想录刷完后,再回头来看,先跳过 738.单调递增的数字 代码随想录 解题思路 例如:98,一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),首先想让strNum[i - 1]--…

游戏引擎支持脚本编程的好处

哈喽呀,大家好,淼淼又来和大家见面啦,咱们今天来聊聊游戏引擎,游戏引擎作为现代游戏开发的核心,它集成了图形渲染、物理模拟、音频处理、动画系统、输入输出控制等多种复杂技术于一体,为开发者提供了一个高…

ASP+ACCESS基于WEB网上留言板

摘要 本文概述了ACCESS数据库及其相关的一些知识,着重论述ACCESS数据库和ASP的中间技术,构建一个简单的留言板。具体的实现是构造一个留言板系统,能很方便的和同学沟通和交流。留言板具有功能强大、使用方便的特点。用户以个人的身份进入&am…

瑞芯微RV1126——人脸识别源码分析

本节内容主要分为3部分,第一部分是流程结构图;第二部分为人脸识别代码流程;第三部分为具体的代码分析。 1.流程结构图 2.人脸识别代码流程 1、人脸数据的初始化: init_all_rockx_face_data();init_face_data();2、创建rtsp会话,这里包括发…

一个典型的分布式缓存系统是什么样的?no.32

分布式 Redis 服务 由于本课程聚焦于缓存,接下来,我将以微博内的 分布式 Redis 服务系统为例,介绍一个典型的分布式缓存系统的组成。 微博的 Redis 服务内部也称为 RedisService。RedisService 的整体架构如图所示。主要分为Proxy、存储、集…

产品推荐 | 基于Xilinx XCKU115的半高PCIe x8 硬件加速卡

一、板卡概述 本板卡系我公司自主研发,采用Xilinx公司的XCKU115-3-FLVF1924-E芯片作为主处理器,主要用于FPGA硬件加速。板卡设计满足工业级要求。如下图所示: 二、功能和技术指标 板卡功能 参数内容 主处理器 XCKU115-3-FLVF1924-E 板卡…

UE4/UE5像素流送云推流:多人访问不稳定、画面糊、端口占用多等

UE4/UE5想要实现网页访问,很多工程师会选择guan方的像素流送。但这个技术要求在模型开发初期就接入。对于一些已有UE模型是无法进行流化的。虽然也可以解决新UE模型的网页访问问题,但在实际的应用中,点量云流也收到很多反馈说,使用…