KT25-0812_82A-UART/apps/common/charge_box/chargeIc_manage.c

141 lines
3.9 KiB
C
Raw Permalink Normal View History

2025-08-12 10:09:23 +00:00
#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