当前位置: 首页 > 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://www.lqws.cn/news/561763.html

相关文章:

  • Python训练营-Day44-预训练模型
  • Java中的异常及异常处理
  • JDK17的GC调优
  • SpringCloud Stream 使用
  • Youtube双塔模型
  • 第27篇:SELinux安全增强机制深度解析与OpenEuler实践指南
  • eTools 开源发布
  • 如何在 Ubuntu 上通过终端或在 VirtualBox 中安装 GCC
  • 佳能Canon PIXMA G1020打印机信息
  • scGPT-spatial 复现
  • KS值:风控模型的“风险照妖镜”
  • Transformer结构--输入编码(BPE,PE)
  • Java面向对象(一)
  • JVM 之双亲委派机制与打破双亲委派
  • 【软考高项论文】论信息系统项目的进度管理
  • 【C++】简单学——类和对象(实现双向循环链表)
  • Python基础(吃洋葱小游戏)
  • Java Optional 详解:优雅处理空指针异常
  • 顺序表应用实践:从通讯录实现到性能优化深度解析
  • 有理函数积分——分式分解时设分解式的规则
  • Fine-Tuning Vision-Language-Action Models:Optimizing Speed and Success论文学习
  • SQL关键字三分钟入门:ROW_NUMBER() —— 窗口函数为每一行编号
  • FreeSWITCH配置文件解析(2) dialplan 拨号计划中xml 的action解析
  • 第一章 从零开始学习大型语言模型-搭建环境
  • 人大金仓数据库jdbc连接jar包kingbase8-8.6.0.jar驱动包最新版下载(不需要积分)
  • 5G核心网,NAS短消息的实现
  • 可编程逻辑器件的发展与比较
  • 构建 AI 系统的 4 大 Agentic AI 设计模式
  • Python 可迭代的对象、迭代器 和生成器(何时使用生成器表达式)
  • 2099. 找到和最大的长度为 K 的子序列