480 lines
18 KiB
C
480 lines
18 KiB
C
/*
|
||
******************************************************************************
|
||
*
|
||
* @file pmu.h
|
||
* @brief pmu module
|
||
* @ic sy8835
|
||
*
|
||
* @version 1.0
|
||
* @date 2024/11/01 09:59:40
|
||
* @author Alex Xu
|
||
*
|
||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||
* All Rights Reserved
|
||
*
|
||
* History:
|
||
* Revision Date Author Desc
|
||
* 1.0.0 2024/11/01 Alex Xu build this file
|
||
******************************************************************************
|
||
*/
|
||
#ifndef __PMU_H__
|
||
#define __PMU_H__
|
||
|
||
/*_____ I N C L U D E S ____________________________________________________*/
|
||
#include "define.h"
|
||
|
||
|
||
/******************************************************************************\
|
||
Macro definitions
|
||
\******************************************************************************/
|
||
/* Power Ctrl CMD Setting. <4Fh>*/
|
||
#define POWER_CTRL_CMD_RECHG_ENABLE 0x11 //0x11:VIN正常是,写入此命令,IC将重新开启充电循环;
|
||
|
||
#define POWER_CTRL_CMD_RST_CMD 0x17 //0x17:CMD_RST,此命令将复位I2CR<0x20>~<0x4F>、VDD;
|
||
|
||
#define POWER_CTRL_CMD_ENTER_SHIPMODE 0xAA //0xAA:EnterShipmode,当且仅当在standby mode状态下写入此命令,IC进入ShipMode状态,在Charge Mode状态时,写入此命令无效;
|
||
|
||
#define POWER_CTRL_CMD_RST_VDD 0x33 //0x33:RstVDD,在任意状态下关闭VSYS 200ms,然后在重启VDD。
|
||
|
||
/* Boost Comm Setting. <I2CR_27h_BST_COMM_En>*/
|
||
#define BST_COMM_EN_Boost_En_Pos (0U)
|
||
#define BST_COMM_EN_Boost_En_Msk (0x1UL << BST_COMM_EN_Boost_En_Pos)
|
||
#define BST_COMM_EN_Boost_En BST_COMM_EN_Boost_En_Msk
|
||
|
||
#define BST_COMM_EN_Vol_En_Pos (1U)
|
||
#define BST_COMM_EN_Vol_En_Msk (0x1UL << BST_COMM_EN_Vol_En_Pos)
|
||
#define BST_COMM_EN_Vol_En BST_COMM_EN_Vol_En_Msk
|
||
|
||
#define BST_COMM_EN_Vor_En_Pos (2U)
|
||
#define BST_COMM_EN_Vor_En_Msk (0x1UL << BST_COMM_EN_Vor_En_Pos)
|
||
#define BST_COMM_EN_Vor_En BST_COMM_EN_Vor_En_Msk
|
||
|
||
#define BST_COMM_EN_Vol_Comm_En_Pos (3U)
|
||
#define BST_COMM_EN_Vol_Comm_En_Msk (0x1UL << BST_COMM_EN_Vol_Comm_En_Pos)
|
||
#define BST_COMM_EN_Vol_Comm_En BST_COMM_EN_Vol_Comm_En_Msk
|
||
|
||
#define BST_COMM_EN_Vor_Comm_En_Pos (4U)
|
||
#define BST_COMM_EN_Vor_Comm_En_Msk (0x1UL << BST_COMM_EN_Vor_Comm_En_Pos)
|
||
#define BST_COMM_EN_Vor_Comm_En BST_COMM_EN_Vor_Comm_En_Msk
|
||
|
||
#define BST_COMM_EN_Vox_Dishold_Pos (6U)
|
||
#define BST_COMM_EN_Vox_Dishold_Msk (0x1UL << BST_COMM_EN_Vox_Dishold_Pos)
|
||
#define BST_COMM_EN_Vox_Dishold BST_COMM_EN_Vox_Dishold_Msk
|
||
|
||
#define BST_COMM_EN_Gate_Ctrl_Pos (7U)
|
||
#define BST_COMM_EN_Gate_Ctrl_Msk (0x1UL << BST_COMM_EN_Gate_Ctrl_Pos)
|
||
#define BST_COMM_EN_Gate_Ctrl BST_COMM_EN_Gate_Ctrl_Msk
|
||
|
||
/* Vox Config <37h>*/
|
||
#define VOX_CFG_Vox_Floating_Pos (0U)
|
||
#define VOX_CFG_Vox_Floating_Msk (0x1UL << VOX_CFG_Vox_Floating_Pos)
|
||
#define VOX_CFG_Vox_Floating VOX_CFG_Vox_Floating_Msk //Vox屏蔽自动识别功能时,VOX的输出状态配置,0:VOX通过1K电阻下拉到GND;1:VOX浮空。
|
||
|
||
#define VOX_CFG_Vox_DisAdt_Pos (1U)
|
||
#define VOX_CFG_Vox_DisAdt_Msk (0x1UL << VOX_CFG_Vox_DisAdt_Pos)
|
||
#define VOX_CFG_Vox_DisAdt VOX_CFG_Vox_DisAdt_Msk
|
||
|
||
#define VOX_CFG_Comx_Rup_Pos (2U)
|
||
|
||
#define VOX_CFG_Comx_Rup_2K_Msk 0x01
|
||
#define VOX_CFG_Comx_Rup_5K_Msk 0x02
|
||
#define VOX_CFG_Comx_Rup_10K_Msk 0x03
|
||
|
||
#define VOX_CFG_Comx_Rup_2K (VOX_CFG_Comx_Rup_2K_Msk << VOX_CFG_Comx_Rup_Pos)
|
||
#define VOX_CFG_Comx_Rup_5K (VOX_CFG_Comx_Rup_5K_Msk << VOX_CFG_Comx_Rup_Pos)
|
||
#define VOX_CFG_Comx_Rup_10K (VOX_CFG_Comx_Rup_10K_Msk << VOX_CFG_Comx_Rup_Pos)
|
||
|
||
#define VOX_CFG_Vox_Rup_Pos (4U)
|
||
|
||
#define VOX_CFG_Vox_Rup_2K_Msk 0x01
|
||
#define VOX_CFG_Vox_Rup_5K_Msk 0x02
|
||
#define VOX_CFG_Vox_Rup_10K_Msk 0x03
|
||
|
||
#define VOX_CFG_Vox_Rup_2K (VOX_CFG_Vox_Rup_2K_Msk << VOX_CFG_Vox_Rup_Pos)
|
||
#define VOX_CFG_Vox_Rup_5K (VOX_CFG_Vox_Rup_5K_Msk << VOX_CFG_Vox_Rup_Pos)
|
||
#define VOX_CFG_Vox_Rup_10K (VOX_CFG_Vox_Rup_10K_Msk << VOX_CFG_Vox_Rup_Pos)
|
||
|
||
#define VOX_CFG_Vox_Vup_Pos (6U)
|
||
|
||
#define VOX_CFG_Vox_Vup_2_0V_Msk 0x00
|
||
#define VOX_CFG_Vox_Vup_VDD_Msk 0x01
|
||
#define VOX_CFG_Vox_Vup_VOXS_Msk 0x02
|
||
#define VOX_CFG_Vox_Vup_1_8V_Msk 0x03
|
||
|
||
#define VOX_CFG_Vox_Vup_2_0V (VOX_CFG_Vox_Vup_2_0V_Msk << VOX_CFG_Vox_Vup_Pos)
|
||
#define VOX_CFG_Vox_Vup_VDD (VOX_CFG_Vox_Vup_VDD_Msk << VOX_CFG_Vox_Vup_Pos)
|
||
#define VOX_CFG_Vox_Vup_VOXS (VOX_CFG_Vox_Vup_VOXS_Msk << VOX_CFG_Vox_Vup_Pos)
|
||
#define VOX_CFG_Vox_Vup_1_8V (VOX_CFG_Vox_Vup_1_8V_Msk << VOX_CFG_Vox_Vup_Pos)
|
||
|
||
/* VDPM VDD Charger En Setting.<20h> */
|
||
#define BUCK_CHG_EN_Pos (0U)
|
||
#define BUCK_CHG_EN_Pos_Msk (0x1UL << BUCK_CHG_EN_Pos)
|
||
#define BUCK_CHG_EN BUCK_CHG_EN_Pos_Msk
|
||
|
||
#define VIN_DIR_CHG_DISABLE_Pos (1U)
|
||
#define VIN_DIR_CHG_DISABLE_Pos_Msk (0x1UL << VIN_DIR_CHG_DISABLE_Pos)
|
||
#define VIN_DIR_CHG_DISABLE VIN_DIR_CHG_DISABLE_Pos_Msk
|
||
|
||
#define VDD_BYPASS_Pos (2U)
|
||
#define VDD_BYPASS_Pos_Msk (0x1UL << VDD_BYPASS_Pos)
|
||
#define VDD_BYPASS VDD_BYPASS_Pos_Msk
|
||
|
||
/* FAULT_STA0<10h> */
|
||
#define Fault_Sta0_VinUV_Pos (0U)
|
||
#define Fault_Sta0_VinUV_Pos_Msk (0x1UL << Fault_Sta0_VinUV_Pos)
|
||
#define Fault_Sta0_VinUV Fault_Sta0_VinUV_Pos_Msk
|
||
|
||
#define Fault_Sta0_VinOVP_Pos (1U)
|
||
#define Fault_Sta0_VinOVP_Pos_Msk (0x1UL << Fault_Sta0_VinOVP_Pos)
|
||
#define Fault_Sta0_VinOVP Fault_Sta0_VinOVP_Pos_Msk
|
||
|
||
#define Fault_Sta0_BoostUV_Pos (2U)
|
||
#define Fault_Sta0_BoostUV_Pos_Msk (0x1UL << Fault_Sta0_BoostUV_Pos)
|
||
#define Fault_Sta0_BoostUV Fault_Sta0_BoostUV_Pos_Msk
|
||
|
||
#define Fault_Sta0_VolOS_Pos (3U)
|
||
#define Fault_Sta0_VolOS_Pos_Msk (0x1UL << Fault_Sta0_VolOS_Pos)
|
||
#define Fault_Sta0_VolOS Fault_Sta0_VolOS_Pos_Msk
|
||
|
||
#define Fault_Sta0_VorOS_Pos (4U)
|
||
#define Fault_Sta0_VorOS_Pos_Msk (0x1UL << Fault_Sta0_VorOS_Pos)
|
||
#define Fault_Sta0_VorOS Fault_Sta0_VorOS_Pos_Msk
|
||
|
||
#define Fault_Sta0_WDTimeOut_Pos (5U)
|
||
#define Fault_Sta0_WDTimeOut_Pos_Msk (0x1UL << Fault_Sta0_WDTimeOut_Pos)
|
||
#define Fault_Sta0_WDTimeOut Fault_Sta0_WDTimeOut_Pos_Msk
|
||
|
||
#define Fault_Sta0_VINPlugInRstVDD_Pos (6U)
|
||
#define Fault_Sta0_VINPlugInRstVDD_Pos_Msk (0x1UL << Fault_Sta0_VINPlugInRstVDD_Pos)
|
||
#define Fault_Sta0_VINPlugInRstVDD Fault_Sta0_VINPlugInRstVDD_Pos_Msk
|
||
|
||
#define Fault_Sta0_KeyRstVDD_Pos (7U)
|
||
#define Fault_Sta0_KeyRstVDD_Pos_Msk (0x1UL << Fault_Sta0_KeyRstVDD_Pos)
|
||
#define Fault_Sta0_KeyRstVDD Fault_Sta0_KeyRstVDD_Pos_Msk
|
||
|
||
/* FAULT_STA2<12h> */
|
||
#define Fault_Sta2_VinUV_Pos (0U)
|
||
#define Fault_Sta2_VinUV_Pos_Msk (0x1UL << Fault_Sta2_VinUV_Pos)
|
||
#define Fault_Sta2_VinUV Fault_Sta2_VinUV_Pos_Msk
|
||
|
||
#define Fault_Sta2_VinOVP_Pos (1U)
|
||
#define Fault_Sta2_VinOVP_Pos_Msk (0x1UL << Fault_Sta2_VinOVP_Pos)
|
||
#define Fault_Sta2_VinOVP Fault_Sta2_VinOVP_Pos_Msk
|
||
|
||
#define Fault_Sta2_BoostUV_Pos (2U)
|
||
#define Fault_Sta2_BoostUV_Pos_Msk (0x1UL << Fault_Sta2_BoostUV_Pos)
|
||
#define Fault_Sta2_BoostUV Fault_Sta2_BoostUV_Pos_Msk
|
||
|
||
#define Fault_Sta2_VolOCP_Pos (3U)
|
||
#define Fault_Sta2_VolOCP_Pos_Msk (0x1UL << Fault_Sta2_VolOCP_Pos)
|
||
#define Fault_Sta2_VolOCP Fault_Sta2_VolOCP_Pos_Msk
|
||
|
||
#define Fault_Sta2_VorOCP_Pos (4U)
|
||
#define Fault_Sta2_VorOCP_Pos_Msk (0x1UL << Fault_Sta2_VorOCP_Pos)
|
||
#define Fault_Sta2_VorOCP Fault_Sta2_VorOCP_Pos_Msk
|
||
|
||
#define Fault_Sta2_PMID_OCP_SHP_Pos (5U)
|
||
#define Fault_Sta2_PMID_OCP_SHP_Pos_Msk (0x1UL << Fault_Sta2_PMID_OCP_SHP_Pos)
|
||
#define Fault_Sta2_PMID_OCP_SHP Fault_Sta2_PMID_OCP_SHP_Pos_Msk
|
||
|
||
#define Fault_Sta2_CHIP_OTP_Pos (6U)
|
||
#define Fault_Sta2_CHIP_OTP_Pos_Msk (0x1UL << Fault_Sta2_CHIP_OTP_Pos)
|
||
#define Fault_Sta2_CHIP_OTP Fault_Sta2_CHIP_OTP_Pos_Msk
|
||
|
||
#define Fault_Sta2_VDPM_Pos (7U)
|
||
#define Fault_Sta2_VDPM_Pos_Msk (0x1UL << Fault_Sta2_VDPM_Pos)
|
||
#define Fault_Sta2_VDPM Fault_Sta2_VDPM_Pos_Msk
|
||
|
||
/* ChipSTA<13h> */
|
||
#define ChipSTA_Standby 0x00
|
||
#define ChipSTA_ShipMode 0x01
|
||
#define ChipSTA_PMU_Error 0x02
|
||
#define ChipSTA_CHG_ITC 0x03
|
||
#define ChipSTA_CHG_ICC 0x04
|
||
#define ChipSTA_CHG_CV 0x05
|
||
#define ChipSTA_CHG_DONE 0x06
|
||
#define ChipSTA_DISCHG 0x07
|
||
|
||
#define ChipSTA_INIT_OK_Pos (3U)
|
||
#define ChipSTA_INIT_OK_Pos_Msk (0x1UL << ChipSTA_INIT_OK_Pos)
|
||
#define INIT_OK ChipSTA_INIT_OK_Pos_Msk
|
||
|
||
#define ChipSTA_Key_Sta_Pos (4U)
|
||
#define ChipSTA_Key_Sta_Pos_Msk (0x1UL << ChipSTA_Key_Sta_Pos)
|
||
#define KEY_STA ChipSTA_Key_Sta_Pos_Msk
|
||
|
||
#define ChipSTA_Hall_Sta_Pos (5U)
|
||
#define ChipSTA_Hall_Sta_Pos_Msk (0x1UL << ChipSTA_Hall_Sta_Pos)
|
||
#define HALL_STA ChipSTA_Hall_Sta_Pos_Msk
|
||
|
||
/*VOX_STA<14h>*/
|
||
#define VOX_Sta_Vol_Loadin_Pos (0U)
|
||
#define VOX_Sta_Vol_Loadin_Pos_Msk (0x1UL << VOX_Sta_Vol_Loadin_Pos)
|
||
#define VOL_LoadIn VOX_Sta_Vol_Loadin_Pos_Msk
|
||
|
||
#define VOX_Sta_Vor_Loadin_Pos (1U)
|
||
#define VOX_Sta_Vor_Loadin_Pos_Msk (0x1UL << VOX_Sta_Vor_Loadin_Pos)
|
||
#define VOR_LoadIn VOX_Sta_Vor_Loadin_Pos_Msk
|
||
|
||
#define VOX_Sta_Vol_Loadon_Pos (2U)
|
||
#define VOX_Sta_Vol_Loadon_Pos_Msk (0x1UL << VOX_Sta_Vol_Loadon_Pos)
|
||
#define VOL_LoadOn VOX_Sta_Vol_Loadon_Pos_Msk
|
||
|
||
#define VOX_Sta_Vor_Loadon_Pos (3U)
|
||
#define VOX_Sta_Vor_Loadon_Pos_Msk (0x1UL << VOX_Sta_Vor_Loadon_Pos)
|
||
#define VOR_LoadOn VOX_Sta_Vor_Loadon_Pos_Msk
|
||
|
||
#define VOX_Sta_Vol_Ioff_Pos (4U)
|
||
#define VOX_Sta_Vol_Ioff_Pos_Msk (0x1UL << VOX_Sta_Vol_Ioff_Pos)
|
||
#define VOL_Ioff VOX_Sta_Vol_Ioff_Pos_Msk
|
||
|
||
#define VOX_Sta_Vor_Ioff_Pos (5U)
|
||
#define VOX_Sta_Vor_Ioff_Pos_Msk (0x1UL << VOX_Sta_Vor_Ioff_Pos)
|
||
#define VOR_Ioff VOX_Sta_Vor_Ioff_Pos_Msk
|
||
|
||
/* Charger Parements Config.<21h> */
|
||
/* 1、V Float Setting */
|
||
#define CHG_VFLOAT_4_000V 0x00
|
||
#define CHG_VFLOAT_4_050V 0x01
|
||
#define CHG_VFLOAT_4_100V 0x02
|
||
#define CHG_VFLOAT_4_150V 0x03
|
||
#define CHG_VFLOAT_4_200V 0x04
|
||
#define CHG_VFLOAT_4_250V 0x05
|
||
#define CHG_VFLOAT_4_275V 0x06
|
||
#define CHG_VFLOAT_4_300V 0x07
|
||
#define CHG_VFLOAT_4_325V 0x08
|
||
#define CHG_VFLOAT_4_350V 0x09
|
||
#define CHG_VFLOAT_4_375V 0x0A
|
||
#define CHG_VFLOAT_4_400V 0x0B
|
||
#define CHG_VFLOAT_4_425V 0x0C
|
||
#define CHG_VFLOAT_4_450V 0x0D
|
||
#define CHG_VFLOAT_4_475V 0x0E
|
||
#define CHG_VFLOAT_4_500V 0x0F
|
||
|
||
/*2、Constant Current ICC Setting.<22h>*/
|
||
#define CHG_ICC_4_0MA 0x00
|
||
#define CHG_ICC_1_00MA 0x01
|
||
#define CHG_ICC_1_50MA 0x02
|
||
#define CHG_ICC_2_00MA 0x03
|
||
#define CHG_ICC_2_50MA 0x04
|
||
#define CHG_ICC_3_00MA 0x05
|
||
#define CHG_ICC_3_50MA 0x06
|
||
#define CHG_ICC_4_00MA 0x07
|
||
#define CHG_ICC_5_00MA 0x08
|
||
#define CHG_ICC_6_00MA 0x09
|
||
#define CHG_ICC_7_00MA 0x0A
|
||
#define CHG_ICC_8_00MA 0x0B
|
||
#define CHG_ICC_9_00MA 0x0C
|
||
#define CHG_ICC_10_00MA 0x0D
|
||
#define CHG_ICC_12_00MA 0x0E
|
||
#define CHG_ICC_15_00MA 0x0F
|
||
|
||
/*3、电池涓流充电电流设置,<23h><bit6:4>*/
|
||
#define CHG_ITC_20MA 0x00
|
||
#define CHG_ITC_30MA 0x01
|
||
#define CHG_ITC_40MA 0x02
|
||
#define CHG_ITC_50MA 0x03
|
||
#define CHG_ITC_60MA 0x04
|
||
#define CHG_ITC_70MA 0x05
|
||
#define CHG_ITC_80MA 0x06
|
||
#define CHG_ITC_100MA 0x07
|
||
|
||
/*4、电池充电截止电流设置,<23h><bit2:0>*/
|
||
#define CHG_ITERM_20MA 0x00
|
||
#define CHG_ITERM_30MA 0x01
|
||
#define CHG_ITERM_40MA 0x02
|
||
#define CHG_ITERM_50MA 0x03
|
||
#define CHG_ITERM_60MA 0x04
|
||
#define CHG_ITERM_70MA 0x05
|
||
#define CHG_ITERM_80MA 0x06
|
||
#define CHG_ITERM_100MA 0x07
|
||
|
||
/* BOOST输出的PMID电压值。<25h><5:0> */
|
||
#define BOOST_VPMID_3_7V 0x00
|
||
#define BOOST_VPMID_3_8V 0x04
|
||
#define BOOST_VPMID_3_9V 0x08
|
||
#define BOOST_VPMID_4_0V 0x0C
|
||
#define BOOST_VPMID_4_1V 0x10
|
||
#define BOOST_VPMID_4_2V 0x14
|
||
#define BOOST_VPMID_4_3V 0x18
|
||
#define BOOST_VPMID_4_4V 0x1C
|
||
#define BOOST_VPMID_4_5V 0x20
|
||
#define BOOST_VPMID_4_6V 0x24
|
||
#define BOOST_VPMID_4_7V 0x28
|
||
#define BOOST_VPMID_4_8V 0x2C
|
||
#define BOOST_VPMID_4_9V 0x30
|
||
#define BOOST_VPMID_5_0V 0x34
|
||
#define BOOST_VPMID_5_1V 0x38
|
||
#define BOOST_VPMID_5_2V 0x3C
|
||
|
||
/* IRQ_EN0<40h> */
|
||
#define Chip_Stat_IRQ_Pos (0U)
|
||
#define Chip_Stat_IRQ_Pos_Msk (0x1UL << Chip_Stat_IRQ_Pos)
|
||
#define Chip_Stat_IRQ Chip_Stat_IRQ_Pos_Msk
|
||
|
||
#define Boost_UV_IRQ_Pos (1U)
|
||
#define Boost_UV_IRQ_Pos_Msk (0x1UL << Boost_UV_IRQ_Pos)
|
||
#define Boost_UV_IRQ Boost_UV_IRQ_Pos_Msk
|
||
|
||
#define Vox_Load_Stat_IRQ_Pos (2U)
|
||
#define Vox_Load_Stat_IRQ_Pos_Msk (0x1UL << Vox_Load_Stat_IRQ_Pos)
|
||
#define Vox_Load_Stat_IRQ Vox_Load_Stat_IRQ_Pos_Msk
|
||
|
||
#define Vox_OS_IRQ_Pos (4U)
|
||
#define Vox_OS_IRQ_Pos_Msk (0x1UL << Vox_OS_IRQ_Pos)
|
||
#define Vox_OS_IRQ Vox_OS_IRQ_Pos_Msk
|
||
|
||
#define VDPM_IRQ_Pos (5U)
|
||
#define VDPM_IRQ_Pos_Msk (0x1UL << VDPM_IRQ_Pos)
|
||
#define VDPM_IRQ VDPM_IRQ_Pos_Msk
|
||
|
||
#define ReChg_IRQ_Pos (6U)
|
||
#define ReChg_IRQ_Pos_Msk (0x1UL << ReChg_IRQ_Pos)
|
||
#define ReChg_IRQ ReChg_IRQ_Pos_Msk
|
||
|
||
#define VINOK_IRQ_Pos (7U)
|
||
#define VINOK_IRQ_Pos_Msk (0x1UL << VINOK_IRQ_Pos)
|
||
#define VINOK_IRQ VINOK_IRQ_Pos_Msk
|
||
|
||
/* IRQ_EN1<41h> */
|
||
#define I2CWDT_IRQ_Pos (0U)
|
||
#define I2CWDT_IRQ_Pos_Msk (0x1UL << I2CWDT_IRQ_Pos)
|
||
#define I2CWDT_IRQ I2CWDT_IRQ_Pos_Msk
|
||
|
||
#define WDTimeOut_IRQ_Pos (1U)
|
||
#define WDTimeOut_IRQ_Pos_Msk (0x1UL << WDTimeOut_IRQ_Pos)
|
||
#define WDTimeOut_IRQ WDTimeOut_IRQ_Pos_Msk
|
||
|
||
#define KEY_IRQ_Pos (2U)
|
||
#define KEY_IRQ_Pos_Msk (0x1UL << KEY_IRQ_Pos)
|
||
#define KEY_IRQ KEY_IRQ_Pos_Msk
|
||
|
||
#define HALL_IRQ_Pos (3U)
|
||
#define HALL_IRQ_Pos_Msk (0x1UL << HALL_IRQ_Pos)
|
||
#define HALL_IRQ HALL_IRQ_Pos_Msk
|
||
|
||
#define ChipOTP_IRQ_Pos (4U)
|
||
#define ChipOTP_IRQ_Pos_Msk (0x1UL << ChipOTP_IRQ_Pos)
|
||
#define ChipOTP_IRQ ChipOTP_IRQ_Pos_Msk
|
||
|
||
#define PMID_OCP_OS_IRQ_Pos (5U)
|
||
#define PMID_OCP_OS_IRQ_Pos_Msk (0x1UL << PMID_OCP_OS_IRQ_Pos)
|
||
#define PMID_OCP_OS_IRQ PMID_OCP_OS_IRQ_Pos_Msk
|
||
|
||
/******************************************************************************\
|
||
Variables definitions
|
||
\******************************************************************************/
|
||
/*PMU相关状态信息*/
|
||
typedef struct {
|
||
|
||
uint8_t pmu_Fault_STA0; //Key、VIN Plug、WDT Timeout、VOX Output Short、BoostUV、VIN OVP、VINUV State
|
||
|
||
uint8_t pmu_Fault_STA1; //I2C Timeout
|
||
|
||
uint8_t pmu_Fault_STA2; //VDPM、Chip OT、PMID OCP、VOX OCP、BoostUV、VIN OVP
|
||
|
||
uint8_t pmu_Chip_STA; //HALL、KEY、INIT_OK、ChipSate[2:0]:000:standby;001:shipmode;010:充电、放电的异常状态;011:充电状态,BUCK启动,ITC充电;100:充电状态;BUCK启动,ICC充电;101:充电状态,BUCK启动,CV充电;110:充电状态,且电池充满;111:VBAT放电状态,包括BOOST和"VBAT直通PMID"
|
||
|
||
uint8_t pmu_VOX_STA; //VOX ioff、loadon、loadin
|
||
|
||
// uint8_t pmu_IRQ_STA;
|
||
|
||
} g_PMU_Info;
|
||
|
||
|
||
/*PMU相关配置信息*/
|
||
typedef struct {
|
||
|
||
uint8_t pmu_Rst_Cfg; //<35h> bit4:HALL极性选择;bit3:Hall开盒(HALL=1)退出ShipMode功能;bit2:KEY长按复位VDD使能;bit1:WDT复位关联VDD复位使能;bit0:VIN插入复位VDD使能;
|
||
|
||
uint8_t pmu_PWR_Ctrl_Cmd; //<4Fh> 0x11:EnReChg,VIN正常是,写入此命令,IC将重新开启充电循环;0x17:CMD_RST,此命令将复位I2CR<0x20>~<0x4F>、VDD;0xAA:EnterShipmode,当且仅当在standby mode状态下写入此命令,IC进入ShipMode状态,在Charge Mode状态时,写入此命令无效;0x33:RstVDD,在任意状态下关闭VSYS 200ms,然后在重启VDD。
|
||
|
||
uint8_t pmu_VPMID_Cfg; //<25h> VPMID配置
|
||
|
||
uint8_t pmu_IRQ_En0; //<40h> pmu相关中断使能位0
|
||
|
||
uint8_t pmu_IRQ_En1; //<41h> pmu相关中断使能位1
|
||
|
||
uint8_t pmu_Xsen_Ctrl; //<31h> pmu相关ADC通道使能配置
|
||
|
||
uint8_t pmu_LED_Ctrl0; //<39h> Power LED控制位
|
||
|
||
uint8_t pmu_WDT1_Cfg; //<26h> bit3:短路和过流后保护模式选择;bit2:pmu看门狗功能使能,固定40s;bit1:
|
||
|
||
uint8_t pmu_WDT1_Rst; //<5Ah> pmu喂狗
|
||
|
||
// uint8_t pmu_Soft_Dat5;
|
||
|
||
} g_PMU_Sys_Cfg;
|
||
|
||
typedef struct {
|
||
|
||
uint8_t pmu_VDPM_VDD_CHG_En; //电源配置,bit6:VDPM使能;bit5:充电自适应电压点选择;bit<4:3>:自适应适配器电压;bit2:VDD输出模式配置;bit1:USB Adpter直充使能;bit0:BUCK充电控制信号。
|
||
|
||
uint8_t pmu_Chg_VFLOAT_Cfg; //浮充电压VBF设置;默认值4.35V。
|
||
|
||
uint8_t pmu_Chg_ICC_Cfg; //电池端恒流充电电流ICC设定值。
|
||
|
||
uint8_t pmu_Chg_ITC_Iterm_Cfg; //[6:4]电池端涓流ITC充电电流设定值;[2:0]电池端充电截止电流ITERM设定值。
|
||
|
||
} g_PMU_CHG_Cfg;
|
||
|
||
typedef struct {
|
||
|
||
uint8_t pmu_BST_COMM_En; //bit0:Boost使能;[7:1]:VOX通讯切换配置。
|
||
|
||
uint8_t pmu_VOX_Cfg; //Vox配置
|
||
|
||
} g_PMU_Vox_Cfg;
|
||
|
||
typedef enum
|
||
{
|
||
HAL_OK = 0x00U,
|
||
|
||
HAL_ERROR = 0x01U,
|
||
|
||
HAL_BUSY = 0x02U,
|
||
|
||
HAL_TIMEOUT = 0x03U
|
||
|
||
} HAL_StatusTypeDef;
|
||
|
||
|
||
typedef enum
|
||
{
|
||
DISCHG_ON = 0,
|
||
CHG_ON,
|
||
|
||
}g_chg_type;
|
||
|
||
extern g_PMU_Info pmu_Info; //pmu状态信息
|
||
|
||
extern g_PMU_Sys_Cfg pmu_Sys_Cfg;
|
||
|
||
extern g_PMU_CHG_Cfg pmu_Chg_Cfg;
|
||
|
||
extern g_PMU_Vox_Cfg pmu_Vox_Cfg;
|
||
|
||
/******************************************************************************\
|
||
Functions definitions
|
||
\******************************************************************************/
|
||
|
||
extern void pmu_Init(void);
|
||
|
||
extern HAL_StatusTypeDef Get_PMU_Info( g_PMU_Info *n_pmu_Info );
|
||
|
||
extern HAL_StatusTypeDef Set_PMU_Sys_Config( g_PMU_Sys_Cfg *n_PMU_Sys_Cfg );
|
||
|
||
extern HAL_StatusTypeDef Set_PMU_CHG_Config( g_PMU_CHG_Cfg *n_PMU_CHG_Cfg );
|
||
|
||
extern void Set_PMU_CHG(uint8_t Chg_En);
|
||
|
||
extern void Set_PMU_Boost(uint8_t Boost_En);
|
||
|
||
extern void Set_PMU_Boost_Vout(uint8_t Boost_Vout);
|
||
|
||
extern HAL_StatusTypeDef Set_PMU_VOX_Config( g_PMU_Vox_Cfg *n_PMU_Vox_Cfg );
|
||
|
||
#endif
|
||
|