小猫爪:AWR294x学习笔记03-AWR294x之PMIC LP87745

1 前言

  这一章来简单介绍一下TI的PMIC LP87745。

2 功能简介

2.1 FSM

  LP87745内部有个电源状态机,每个电源状态对应LP87745的一种工作模式。LP87745共有以下几种模式,或者几种状态:

状态名称描述
NO SUPPLY没电状态,就是LP87745没有供电
INIT初始化状态,这个状态中,LP87745从其自身的NVM中读取寄存器配置信息并且初始化自身
BOOT BIST自测试阶段,即进行build-in self-test,可通过置位NVM中的LBIST_BYPASS_EN位来跳过这个状态
STANDBY相当于低功耗模式,在这个状态下,基本上所有的功能都没有了,开关电源也不会输出电源,可被唤醒。
ACTIVE正常工作模式,在这个模式下,所有的功能正常使用
SAFE RECOVERY安全恢复模式,当LP87745检测到错误时或者检测到有序关机请求时。检测到错误时,LP87745会尝试恢复,如果恢复次数超过阈值RECOV_CNT_THR,那么LP8774状态就会永远停留在SAFE状态,除非进行上下电操作。

  LP87745状态机切换顺序以及切换条件如下图所示:
在这里插入图片描述
  从图中可以看到状态的切换主要受LP8774的一些系统条件控制,那么如果同一时间,出现了多个系统条件时,LP8774该怎么切换状态呢? 很简单,LP8774给这些条件排了优先级,如果同一时间出现了多个系统条件,则根据最高优先级条件来做反应,序号越小,优先级越高,系统条件的优先级顺序如下:

  1. VCCA > VCCA_UVLO (NO SUPPLY).
  2. Emergency shutdown.
  3. Immediate shutdown.
  4. Orderly shutdown.
  5. Cold boot request.
  6. OFF request.
  7. Warm reset.

  所以要想让LP87745工作状态发生切换,那么就需要主动或者被动去触发LP87745出现这些系统条件,让其工作状态发生切换。

2.2 系统条件

2.2.1 ON/OFF Requests

  观察上一节的状态切换图,发现ON/OFF Requests可以让LP87745在ACTIVE和STANDBY两种状态中发生切换。那么什么事件会让LP87745触发该系统条件呢,如下:

事件名称描述
ON Request拉低ENABLE引脚持续8us后即可触发,该事件无法屏蔽
OFF Request拉高ENABLE引脚持续8us后即可触发,该事件无法屏蔽
通过SPI接口发送命令,该事件无法屏蔽

2.2.2 Warm Reset

  观察上一节的状态切换图,发现Warm Reset并不能直接让LP87745的工作状态发生切换,但是每发生一次Warm Reset,RESET_CNT会累加1,一旦超过阈值RESET_CNT_THR,那么就会让LP87745触发orderly shutdown事件,让其切换至SAFE状态并清除RESET_CNT。

  Warm Reset只能在ACTIVE状态下发生,Warm Reset会toggle nRSTOUT 引脚而让MCU复位。另外system conditional 还可以让某些寄存器复位至默认值。具体有哪些寄存器这里就不一一列举,感兴趣的小伙伴可参考数据手手册。

  最关键的来了,LP87745有哪些事件会触发Warm Reset事件呢?如下:

事件名称是否可屏蔽描述
MCU RequestNoMCU sends request over SPI interface
VCCA _UVYesVCCA input supply Under-Voltage event
BUCKn_UVYesBUCKn Under-Voltage event
BOOST_UVYesBOOST Under-Voltage event
VIO_LDO_UVYesVIO_LDO Under-Voltage event
VMONn_UVYesVMON Under-Voltage event
VCCA _OVYesVCCA input supply Over-Voltage event
BUCKn_OVYesBUCKn Over-Voltage event
BOOST_OVYesBOOST Over-Voltage event
VIO_LDO_OVYesVIO_LDO Over-Voltage event
VMONn_OVYesVMON Over-Voltage event
BUCKn_SCYesBUCKn Short Circuit event
BOOST_SCYesBOOST Short Circuit event
VIO_LDO_SCYesVIO_LDO Short Circuit event
WD Fail CountYesWhen WD Fail Count exceeds programmed WD Fail Count reset threshold value (WD_FAIL_CNT = WD_RST_TH)
ESM Fail CountYesWhen ESM Fail Count exceeds programmed ESM Fail Count reset threshold value (ESM_ERR_CNT =ESM_ERR_CNT_RST_TH)
nINT ErrorYesnINT pin readback error

2.2.3 Shutdown Request

  Shutdown Request分为Orderly和Immediate两种,观察状态切换图可以看出,Orderly Shutdown Request可以让LP87745从ACTIVE切换至SAFE状态,而Immediate Shutdown Request可以让其从任何状态切换至SAFE状态。

  对于Orderly Shutdown Request,进入到SAFE状态后,NRSTOUT会被激活,所有电源会无输出,GPIO会被拉低,所以为了让LP87745进入SAFE之前有个缓冲区,用户可以为其所有输出行为加上一个延迟,分别是BUCKn_SHUTDOWN_DELAY,BOOST_SHUTDOWN_DELAY,VIO_LDO_SHUTDWN_DELAY, GPO_SHUTDOWN_DELAY和NRSTOUT_SHUTDOWN_DELAY。

  下表表明了哪些事件可以触发Orderly Shutdown Request:

事件名称是否可屏蔽描述
MCU RequestNo
RECOV_CNT >RECOV_CNT_THRYes
(for debug/char purposes only)
SAFE state recovery counter reaches max programmed threshold value
RESET_CNT[3:0] ≥RESET_CNT_THR[3:0]Warm reset counter reaches max programmed threshold value
Tj ≥ TSD_ORDERLYYes
(for debug/char purposes only)
Junction temperature reaches threshold level for orderly shutdown
GPOn_READBACK_ERRORYesGPOn pin readback error
NRSTOUT_READBACK ErrorYesNRSTOUT pin readback Error
VIO_LDO/VMON1/VCCA OV/UVYesWhen *_OV/UV_SEL=10,11
BOOST and BUCK OV,UV,SCYesWhen *OV/UV_SEL=10 and PWRERR_OSD_SEL=1
BOOST,BUCK,VIO_LDO,VMON1 RVyesWhen RV (residual voltage) detected and *_RV_CON=1

  对于Immediate Shutdown Request,进入到SAFE状态后,NRSTOUT会被激活,所有电源会无输出,GPIO会被拉低,所有操作会立即被执行。
  下表表明了哪些事件可以触发Immediate Shutdown Request:

事件名称是否可屏蔽描述
Tj ≥ TSD_IMMEDIATENoJunction temperature reaches threshold level for immediate shutdown
VCCA_OVPYes
(for debug/char purposes only)
Input supply at VCCA pin >VOVP
Main clock errorYes
(for debug/char purposes only)
Internal clock out of range. Recovery by power cycling.
VINT UVNAInternal LDO under-voltage. Recovery when internal LDO voltage is valid. Device is reset.
VINT OVYes
(for debug/char purposes only)
Internal LDO over-voltage. Recovery when internal LDO voltage is valid. Device is reset.

2.2.4 MCU Commands

  MCU可以通过SPI接口直接触发一些系统事件让FSM发生状态切换,具体如下:

MCU REQUESTCommandCOMMENT
OFF request1001 1001From ACTIVE to STANDBY
Cold boot request0101 0101From ACTIVE to INIT
Warm Reset request1100 1100Increments RESET_CNT
Disable BIST Bypass1101 0010
SAFE Recovery Request0100 1011From ACTIVE to SAFE, increments RECOV_CNT
Reserved1000 0111
Reserved0001 1110

2.3 错误检测和处理

  LP87745有非常强大的错误检测和处理机制,在讲解系统条件时其实就列举了非常多的事件,这些事件大部分其实都是错误检测和处理,当LP87745检测到错误时就会触发系统条件,让LP87745发生进行状态切换。下图显示LP87745内部所定义的错误类型以及错误发生后相应的行为响应:
在这里插入图片描述
  在上图中,红色框内的为错误类型定义,蓝色框内的相应的行为响应。简单列举一下相关信息如下(具体还得参考数据手册):

错误类型触发条件行为反应
Power Rail Error检测到电源输出有UV,OV,SC错误行为反应可做选择,可以触发中断,输出nINT,触发Orderly Shutdown
Moderate Errors$Die温度超过阈值TSD_IMMEDIATE,
VCCA > VOVP
触发 Immediate Shutdown
Emergency Shutdown Errors内部LDO OV/UV事件触发 Immediate Shutdown
Watchdog (WDOG) Error
ESM error检测外部MCU信号错误信号
nINT and Warnings电流超限,nINT回读错误等触发WARM RESET和相应中断
Boot BIST Error自测试出现错误触发中断

2.4 启动时序

  LP87745上电后状态切换时序如下图所示:
在这里插入图片描述
  上电和下电时序如下图所示:
在这里插入图片描述

2.5 看门狗

  看门狗的原理很简单,里面有一个计数器叫WD_FAIL_CNT,还有两个阈值WD_FAIL_TH和WD_RST_TH,当喂狗成功或者喂狗失败后,WD_FAIL_CNT就会相应的增加或者减少,一旦这个该值满足了以下条件PMIC就会进行相应操作,具体如下:

情况响应
WD_FAIL_CNT≤ WD_FAIL_THNo change to nINT or NRSTOUT outputs. MCU can set the CAN_DIS bit if no other error flags are set.
WD_FAIL_TH < WD_FAIL_CNT≤ (WD_FAIL_TH+ WD_RST_TH)The device sets error-flag WD_FAIL and activates the nINT pin.CAN_DIS bit is cleared.
WD_FAIL_CNT> (WD_FAIL_TH+ WD_RST_TH)If configuration bit WD_RST_EN=1, device goes through a warmreset, sets the error-flag WD_RST, and activates the nINT pin low.

2.5.1 初始化

  在PMIC上电启动释放nRSTOUT后,看门狗会进入Long Window期,在这个时间内,MCU可以对看门狗进行初始化操作。对于看门狗需要初始化的有以下参数:

参数描述
WD_LONGWINLong Window持续的时间
WD_PWRHOLD看门狗的disable-function
WD_RETURN_LONGWIN用来让看门狗重新进入Long Window在当前看门狗序列完成
WD_WIN1Window-1时间间隔的持续时间
WD_WIN2Window-2时间间隔的持续时间
WD_RST_EN使能/失能看门狗的reset-function
WD_EN使能/失能看门狗
WD_FAIL_TH设置阈值WD_FAIL_TH
WD_RST_TH设置阈值WD_RST_TH
WD_QA_FDBKanswer-generation配置
WD_QA_LFSRquestion-generation配置
WD_QUESTION_SEED第一次question-generation的起始点
WD_QA_CFG

  对于WD_LONGWIN的配置比较特别,具体如下:

WD_LONGWINLong Window期持续的时间
080ms
1125ms
2 ~ 64250ms ~ 8s,每增加1,时间增加125ms
65 ~ 25512s ~ 12.867min,每增加1,时间增加4s

2.5.2 同步

  当所有寄存器配置完毕,需要看门狗退出Long Window进入正常工作模式,MCU必须要做两件事来完成其同步操作:

  1. 清除WD_PWRHOLD位来失能Disable-function
  2. 写WD_ANSWER寄存器4次

  如果MCU在Long Window期间并没有正常完成看门狗的同步操作,那么就会触发warm reset系统条件,并且触发WD_LONGWIN_TIMEOUT_INT中断。

2.5.3 Disable-function

  为了防止MCU中没有喂狗程序而导致PMIC反复触发warm reset,所以就整出了一个Disable-function,Disable-function被激活时,看门狗就会永远处于Long Window。当PMIC上电时,CS_SPI/WD_DIS引脚为低时,disable-function就会被使能, 清除WD_PWRHOLD位可以失能Disable-function。

2.5.4 序列周期

  所有看类型的门狗都有一个周期,MCU必须在这个周期内按照规定给看门狗进行喂狗,不然看门狗就会报告相关错误。那么LP87745中看门狗的规则是什么呢?

  LP87745的看门狗的喂狗模式被称为Question-Answer,这种模式下,在每个看门狗周期内,看门狗都会出一个Question,MCU需要读取这个Question计算出正确Answer,并将Answer按照顺序在规定时间窗口内发送给LP87745,只有Answer正确,才算是喂狗成功。

1 Question

  LP87745在每个周期序列开始前都会根据一定的规则更新Question,MCU可以直接通过读取寄存器WD_QUESTION[3:0]得到一个4bit的Question,也可以软件按照这个规则去计算这个Question,至于计算方法请参考数据手册。

2 Answer

  根据问题计算ANSWER,ANSWER一共有四个字节,分别是ANSWER-3,ANSWER-2,ANSWER-1,ANSWER-0,WD_ANSW_CNT的值则显示了当前需要往WD_ANSWER写哪个ANSWER,如果保持寄存器WD_QA_CFG的默认配置,则其真值表如下图所示:
在这里插入图片描述
  MCU不仅需要计算出ANSWER,还需要在规定时间窗口内按照规定顺序写入ANSWER,具体如下:
在这里插入图片描述
  如上图所示,具体为在窗口WINDOW-1内写入依次ANSWER-3,ANSWER-2,ANSWER-1,然后在窗口WINDOW-2内写入ANSWER-0,当ANSWER-0写入成功后,当前周期序列结束。

3. 定时器设计

  另外WINDOW-1和WINDOW-2的时间窗口计算公式如下:
在这里插入图片描述
在这里插入图片描述
  下面代码为计算时间窗口的示例代码:

    window1 = (uint8_t)((WINDOW_1_INTERVAL / 0.55) - 1);
    window2 = (uint8_t)((WINDOW_2_INTERVAL / 0.55) - 1);

  计算完两个窗口时间之后,就需要设计定时器来完成两个窗口的喂狗行为,仔细看喂狗流程图中的介绍,可以发现WINDOW1窗口的时间结束后WINDOW2窗口开始,而写入最后一个answer后WINDOW2结束,所以以WINDOW1窗口开始的时间节点为开始计时,在WINDOW1的窗口时间内(0 < t < WINDOW_1_INTERVAL )完成前三个ANSWER的写入,在WINDOW2的窗口时间内(WINDOW_1_INTERVAL < t < WINDOW_1_INTERVAL + WINDOW_2_INTERVAL )完成最后一个ANSWER的写入。

2.6 ESM

  ESM(error signal monitor)可以检测一个外部输入是否满足要求,可以将GPO2引脚作为ESM输入引脚。ESM有两种工作模式,分别是LEVEL模式和PWM模式,可通过ESM_MCU_MODE去选择工作模式。MCU可以通过置位ESM_MCU_START来启动ESM,清除该位即可停止ESM。

  其中LEVEL模式就比较好理解了,输入信号发生电平翻转,且维持有效电平时间超过 tdegl_ESM(13us ~ 17us),就会触发ESM错误并且开始ESM错误处理流程。

  对于PWM模式,就是输入信号的周期和占空比必须与PMIC中设置的值符合,这样才会正常,如果不匹配的话,则会产生错误。不同于LEVEL模式,PWM模式中,ESM有一个错误计数器,只有当ESM检测ESM_MCU_ERR_CNT,检测到周期和占空比不符合时(其实就是判断在不在一个提前配置好的区间内),该计数器加2,符合时则减1。一旦ESM_MCU_ERR_CNT超过阈值ESM_MCU_ERR_CNT_TH,就会触发ESM错误并且开始ESM错误处理流程,这里对错误处理流程就不多做介绍了,详情请参考数据手册。

  以上提到的ESM错误处理流程根据配置分成了两种情况,总之比较复杂,在这里就不多作介绍了,具体请参考数据手册。

2.7 IO

  LP87745有两个可操控的IO脚,两个引脚可通过GPO1_SEL和GPO2_SEL来配置其功能,如下图:
在这里插入图片描述

  1. VMON1: 作为模拟输入,可监控外部电压。
  2. GPO:GPIO模式,可操控其输出
  3. FAULT:错误输出,用来输出PMIC当前错误状态
  4. nERR:ESM错误输入,可通过该引脚向LP87745内部输入错误
  5. CAN_DIS:通常使用该引脚控制CAN的收发器

2.8 SPI操作时序

  LP87745的SPI接口非常简单,POL=0,PHA=1,SPI模式1,CS低有效,另外为了保证通信的安全,还加入了CRC-8检测机制,CRC-8默认不使能,可通过设置SPI_CRC_EN为1来使能。

  CRC没有使能下,写寄存器时时序如下:

在这里插入图片描述
  对于Master端这边,具体内容如下:

总线位置,MSB
0-7寄存器偏移地址
8-10
11写操作,为0
12-15Reserved
16-23需要写的值

  对于Slaver端这边回复的内容:

总线位置,MSB
00
1-7SPI_STATUS
81
9-15SPI_STATUS的非
16-23无意义

  CRC没有使能下,读寄存器时时序如下:
在这里插入图片描述

  对于Master端这边,具体内容如下:

总线位置,MSB
0-7寄存器偏移地址
8-10
11写操作,为1
12-15Reserved
16-23无意义

  对于Slaver端这边回复的内容:

总线位置,MSB
00
1-7SPI_STATUS
81
9-15SPI_STATUS的非
16-23读取的数据

  :对于CRC使能情况下,需要变换的只是需要在读写数据后面加上CRC的校验值,在这里就不详细介绍了,详情请参考数据手册。

  在上面时序表格中,出现了SPI_STATUS这个参数,这个参数其实简单的反应了当时LP87745的状态,每一位具体代表的含义如下所示:

• Bit 7always 0
• Bit 6COMM_ADR_ERR_SWINT
• Bit 5COMM_CRC_ERR_SWINT
• Bit 4COMM_FRM_ERR_SWINT
• Bit 3ESM_MCU_PIN_SWINT
• Bit 2TWARN_SWINT
• Bit 1WD_SWINT
• Bit 0NINT_READBACK_SWINT

2.9 展频功能

  由于LP87745内部开关电源的频率很高,最高能达到17.6MHz,而开关电源的电感是外置的,在进行EMC辐射测试的时候是有可能不通过的,所以PMIC非常贴心的提供了展频功能,而开启展频功能也是非常的简单,只需要置位SS_EN就好了。
在这里插入图片描述

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猫爪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值