当前位置: 首页 > news >正文

复杂驱动开发-TLE9471的休眠流程与定时唤醒

文章目录

    • 前言
    • 休眠流程
    • 定时唤醒功能
    • 总结

前言

开发SBC时非常重要的一环就是开发休眠流程,其目的是为了保证接KL30的ECU在休眠模式下尽可能小的消耗低压蓄电池的电量,防止车辆放置长时间后出现亏电。而定时唤醒功能在部分ECU中会有需求休眠后定期对车辆状态进行检查。本文介绍TLE9471的休眠流程及定时唤醒的配置

休眠流程

9471进入低功耗模式流程如下:
在这里插入图片描述
首先清除唤醒源,然后进入Sleep模式

模式切换寄存器为M_S_CTRL
在这里插入图片描述
如果需要SWK(PN唤醒),还需要配置相关的寄存器

示例代码如下:

清除唤醒标志

Tle94xx_Send_Frame(Tle94xx_SendPackage(TLE94x1_WK_STAT_0_REG_ADDR,0x00u)); /* clear wake up state for WK_STAT_0 */  
Tle94xx_Send_Frame(Tle94xx_SendPackage(TLE94x1_WK_STAT_1_REG_ADDR,0x00u)); /* clear wake up state for WK_STAT_1 */

设置睡眠模式

TLE94x1_InitReg_Config.M_S_CTRL.B.VCC1_RT = SBC_VCC1_RT_VRT1;
TLE94x1_InitReg_Config.M_S_CTRL.B.VCC1_OV_RST = SBC_VCC1_OV_RST_RESTART_FAILSAFE;
TLE94x1_InitReg_Config.M_S_CTRL.B.VCC2_ON = SBC_VCC2_OFF;
TLE94x1_InitReg_Config.M_S_CTRL.B.MODE = SBC_MODE_SLEEP;Tle94xx_Send_Frame(Tle94xx_SendPackage(TLE94x1_M_S_CTRL_REG_ADDR,TLE94x1_InitReg_Config.M_S_CTRL.R)); /* enter sleep mode */

定时唤醒功能

9471定时唤醒(周期唤醒)配置流程如下:
在这里插入图片描述
通过WK_CTRL_0寄存器使能周期唤醒功能,通过TIMER_CTRL寄存器配置唤醒的周期

示例配置如下:

static void Tle94x1_CycWakeup_set(void)
{TLE94x1_InitReg_Config.WK_CTRL_0.B.TIMER_WK_EN = WK_CTRL_0_TIMER_WK_EN_WAKESOURCE;TLE94x1_InitReg_Config.TIMER_CTRL.B.TIMER_ON = SBC_TIMER_ON_20MS;TLE94x1_InitReg_Config.TIMER_CTRL.B.TIMER_PER = SBC_TIMER_PER_1000S;Tle94xx_Send_Frame(Tle94xx_SendPackage(TLE94x1_TIMER_CTRL_REG_ADDR,TLE94x1_InitReg_Config.TIMER_CTRL.R));   
Tle94xx_Send_Frame(Tle94xx_SendPackage(TLE94x1_WK_CTRL_0_REG_ADDR,TLE94x1_InitReg_Config.WK_CTRL_0.R));   
}

此处配置的唤醒周期为1000s,在进入休眠模式前调用该函数即可。

总结

对于不同的唤醒方式,需要知道对应的唤醒原因,以便APP做对应的逻辑,在9471中,可以在初始化时通过WK_STAT_0寄存器获取唤醒原因,一般就是硬线唤醒/网络唤醒/周期唤醒。


文章转载自:
http://banzai.pzdurr.cn
http://bierstube.pzdurr.cn
http://bookstore.pzdurr.cn
http://cathepsin.pzdurr.cn
http://cambistry.pzdurr.cn
http://applet.pzdurr.cn
http://cataract.pzdurr.cn
http://charpit.pzdurr.cn
http://attestor.pzdurr.cn
http://adjustment.pzdurr.cn
http://academical.pzdurr.cn
http://acores.pzdurr.cn
http://boaster.pzdurr.cn
http://chimneynook.pzdurr.cn
http://bowstring.pzdurr.cn
http://bht.pzdurr.cn
http://bierkeller.pzdurr.cn
http://barabara.pzdurr.cn
http://afflicting.pzdurr.cn
http://carditis.pzdurr.cn
http://bracken.pzdurr.cn
http://alienism.pzdurr.cn
http://airburst.pzdurr.cn
http://baume.pzdurr.cn
http://autoanalyzer.pzdurr.cn
http://calibre.pzdurr.cn
http://babacoote.pzdurr.cn
http://bandjarmasin.pzdurr.cn
http://artiste.pzdurr.cn
http://algebraist.pzdurr.cn
http://www.dtcms.com/a/261756.html

相关文章:

  • DMA之 Trigger input和 Trigger Output 概念
  • 具身智能系列教程——(一)具身智能研究与发展
  • 户外人像要怎么拍 ?
  • 【Docker基础】Docker容器管理:docker top及其参数详解
  • electron中显示echarts
  • 【NLP】自然语言项目设计03
  • 关于ubuntu 20.04系统安装分区和重复登录无法加载桌面的问题解决
  • 【数据标注】事件标注1
  • Vue工程化实现约定式路由自动注册
  • Go开发工程师-Golang基础知识篇
  • 数据结构:最小生成树—Prim(普里姆)与Kruskal(克鲁斯卡尔)算法
  • 什么是哈希链(Hash Chain)?
  • Redis 实现分布式锁
  • 分布式集群压测
  • 第8章-财务数据
  • VR训练美国服务器:高性能解决方案与优化指南
  • 培养你的眼力 - 摄影构图
  • Python 中 `for` 循环与 `while` 循环的性能差异:深度剖析
  • 思维提升篇-数学抽象与计算机实现
  • 从零开始构建RAG(检索增强生成)
  • C# 委托(为委托添加方法和从委托移除方法)
  • Excel限制编辑:保护表格的实用功能
  • 【C#】使用电脑的GPU与CPU的区别
  • 鸿蒙5:其他布局容器
  • 【Redis原理】Redis分布式缓存——主从复制、哨兵机制与Redis Cluster
  • deepin 25 交换 caps lctl
  • Lua现学现卖
  • SpringBoot项目使用arthas-tunnel-server
  • AtCoder AT_abc412_c [ABC412C] Giant Domino 题解
  • 【力扣 简单 C】121. 买卖股票的最佳时机