#include "chargeIc_manage.h" #include "device/device.h" #include "app_config.h" #include "app_main.h" #include "user_cfg.h" #include "chgbox_det.h" #if (TCFG_CHARGE_BOX_ENABLE) #define LOG_TAG_CONST APP_CHGBOX #define LOG_TAG "[CHG_IC]" #define LOG_ERROR_ENABLE #define LOG_DEBUG_ENABLE #define LOG_INFO_ENABLE /* #define LOG_DUMP_ENABLE */ #define LOG_CLI_ENABLE #include "debug.h" /*------------------------------------------------------------------------------------*/ /**@brief 开始对电池仓充电 @param 无 @return 无 @note */ /*------------------------------------------------------------------------------------*/ void chargebox_charge_start(void) { log_info("charge start!\n"); #if TCFG_CHARGE_MOUDLE_OUTSIDE gpio_direction_input(TCFG_STOP_CHARGE_IO); #else charge_start(); #endif } /*------------------------------------------------------------------------------------*/ /**@brief 停止对电池仓充电 @param 无 @return 无 @note */ /*------------------------------------------------------------------------------------*/ void chargebox_charge_close(void) { log_info("charge close!\n"); #if TCFG_CHARGE_MOUDLE_OUTSIDE gpio_direction_output(TCFG_STOP_CHARGE_IO, 1); #else charge_close(); #endif } /*------------------------------------------------------------------------------------*/ /**@brief 充电升压开关 @param 无 @return 无 @note */ /*------------------------------------------------------------------------------------*/ void chargeIc_boost_ctrl(u8 en) { gpio_direction_output(TCFG_BOOST_CTRL_IO, en); log_debug("boost_ctrl:%s\n", en ? "open" : "close"); #if TCFG_LDO_DET_ENABLE ldo_wakeup_deal(NULL); #else sys_info.status[LDO_DET] = en ? STATUS_ONLINE : STATUS_OFFLINE; #endif #if TCFG_CURRENT_LIMIT_ENABLE //开升压时才去检测耳机充电电流 ear_current_detect_enable(en); #endif } /*------------------------------------------------------------------------------------*/ /**@brief 耳机充电电源开关 @param 无 @return 无 @note */ /*------------------------------------------------------------------------------------*/ void chargeIc_pwr_ctrl(u8 en) { #if TCFG_PWR_CTRL_IO_IS_HIGH_VOLTAGE if (en == 0) { gpio_direction_input(TCFG_PWR_CTRL_IO); } else { gpio_direction_output(TCFG_PWR_CTRL_IO, 0); } #else if (en == 0) { gpio_set_pull_up(TCFG_PWR_CTRL_IO, 0); gpio_set_pull_down(TCFG_PWR_CTRL_IO, 1); } else { gpio_set_pull_down(TCFG_PWR_CTRL_IO, 0); gpio_set_pull_up(TCFG_PWR_CTRL_IO, 1); } #endif log_debug("vol_ctrl:%s\n", en ? "open" : "close"); } /*------------------------------------------------------------------------------------*/ /**@brief 充电IC初始化 @param null @return null @note 初始化充电IC相关的引脚 */ /*------------------------------------------------------------------------------------*/ void chargeIc_init(void) { //使能IO输出低电平 gpio_set_die(TCFG_BOOST_CTRL_IO, 0); gpio_set_pull_down(TCFG_BOOST_CTRL_IO, 0); gpio_set_pull_up(TCFG_BOOST_CTRL_IO, 0); gpio_direction_output(TCFG_BOOST_CTRL_IO, 0); #if TCFG_PWR_CTRL_IO_IS_HIGH_VOLTAGE //PWR_CTRL充电的时候要输出0 gpio_set_die(TCFG_PWR_CTRL_IO, 0); gpio_set_pull_down(TCFG_PWR_CTRL_IO, 0); gpio_set_pull_up(TCFG_PWR_CTRL_IO, 0); gpio_direction_input(TCFG_PWR_CTRL_IO); #else //PWR_CTRL充电的时候要拉高 gpio_set_die(TCFG_PWR_CTRL_IO, 0); gpio_set_pull_down(TCFG_PWR_CTRL_IO, 1); gpio_set_pull_up(TCFG_PWR_CTRL_IO, 0); gpio_direction_input(TCFG_PWR_CTRL_IO); #endif #if TCFG_CHARGE_MOUDLE_OUTSIDE //充电控制脚,高阻时正常充电,输出1时充电截止 gpio_set_die(TCFG_STOP_CHARGE_IO, 1); gpio_set_pull_down(TCFG_STOP_CHARGE_IO, 0); gpio_set_pull_up(TCFG_STOP_CHARGE_IO, 0); gpio_direction_output(TCFG_STOP_CHARGE_IO, 1); #endif } #endif