/* ****************************************************************************** * * @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. */ #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>*/ #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>*/ #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