| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #include "include.h"
- #include "driver_charge.h"
- #include "bsp_charge.h"
- #include "bsp_saradc_vbat.h"
- #if BSP_CHARGE_EN
- const char charge_status_info[][29] = {
- "[charge] uninitialized\n",
- "[charge] vusb disconnected\n",
- "[charge] finish-but-connect\n",
- "[charge] trickle cur state\n",
- "[charge] const cur state\n",
- "[charge] const vol state\n",
- };
- // start charge -> [trigle stage] -> constant current & constant voltage -> finish charge
- void bsp_charge_init(void)
- {
- charge_init_typedef charge_init_struct;
- charge_init_struct.const_curr = CHARGE_CONS_CUR_100mA;
- charge_init_struct.cutoff_curr = CHARGE_CUTOFF_CUR_30mA;
- charge_init_struct.cutoff_volt = CHARGE_CUTOFF_VOL_4V35;
- charge_init_struct.dcin_reset = CHARGE_DCIN_RESET_DIS;
- charge_init_struct.trick_curr = CHARGE_TRI_CUR_20mA;
- charge_init_struct.trick_curr_en = ENABLE;
- charge_init_struct.mode = CHARGE_MODE_FULL_DISCONNECT;
- charge_init(&charge_init_struct);
- }
- // 测试函数
- AT(.text.app.proc.charge)
- void bsp_charge_process(void)
- {
- static u32 delay_cnt1;
- static u32 delay_cnt2;
- static u8 charge_status_last = CHARGE_STA_OFF;
- u8 charge_status = charge_status_last;
- charge_status = charge_get_status();
- if (charge_status != charge_status_last) {
- charge_status_last = charge_status;
- printf(charge_status_info[charge_status]);
- }
- if (charge_status_last > CHARGE_STA_OFF_BUT_DC_IN) {
- lowpwr_pwroff_delay_reset();
- lowpwr_sleep_delay_reset();
- }
- if (tick_check_expire(delay_cnt1, 10)) {
- delay_cnt1 = tick_get();
- charge_process();
- }
- if (tick_check_expire(delay_cnt2, 2000)) {
- delay_cnt2 = tick_get();
- if (charge_detect_dc() == CHARGE_DC_STATUS_ONLINE_BUT_ERR) {
- printf("[charge] CHARGE LINE VOLTAGE ERROR!!!\n");
- }
- }
- }
- #endif // BSP_CHARGE_EN
|