SY8835_For_Demo_Ourself/UsrInc/pmu/pmu.h

480 lines
18 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
******************************************************************************
*
* @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的输出状态配置0VOX通过1K电阻下拉到GND1VOX浮空。
#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:standby001: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:EnReChgVIN正常是写入此命令IC将重新开启充电循环0x17:CMD_RST此命令将复位I2CR<0x20>~<0x4F>、VDD0xAA: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看门狗功能使能固定40sbit1:
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