bsp_charge.c 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #include "include.h"
  2. #include "driver_charge.h"
  3. #include "bsp_charge.h"
  4. #include "bsp_saradc_vbat.h"
  5. #if BSP_CHARGE_EN
  6. const char charge_status_info[][29] = {
  7. "[charge] uninitialized\n",
  8. "[charge] vusb disconnected\n",
  9. "[charge] finish-but-connect\n",
  10. "[charge] trickle cur state\n",
  11. "[charge] const cur state\n",
  12. "[charge] const vol state\n",
  13. };
  14. // start charge -> [trigle stage] -> constant current & constant voltage -> finish charge
  15. void bsp_charge_init(void)
  16. {
  17. charge_init_typedef charge_init_struct;
  18. charge_init_struct.const_curr = CHARGE_CONS_CUR_100mA;
  19. charge_init_struct.cutoff_curr = CHARGE_CUTOFF_CUR_30mA;
  20. charge_init_struct.cutoff_volt = CHARGE_CUTOFF_VOL_4V35;
  21. charge_init_struct.dcin_reset = CHARGE_DCIN_RESET_DIS;
  22. charge_init_struct.trick_curr = CHARGE_TRI_CUR_20mA;
  23. charge_init_struct.trick_curr_en = ENABLE;
  24. charge_init_struct.mode = CHARGE_MODE_FULL_DISCONNECT;
  25. charge_init(&charge_init_struct);
  26. }
  27. // 测试函数
  28. AT(.text.app.proc.charge)
  29. void bsp_charge_process(void)
  30. {
  31. static u32 delay_cnt1;
  32. static u32 delay_cnt2;
  33. static u8 charge_status_last = CHARGE_STA_OFF;
  34. u8 charge_status = charge_status_last;
  35. charge_status = charge_get_status();
  36. if (charge_status != charge_status_last) {
  37. charge_status_last = charge_status;
  38. printf(charge_status_info[charge_status]);
  39. }
  40. if (charge_status_last > CHARGE_STA_OFF_BUT_DC_IN) {
  41. lowpwr_pwroff_delay_reset();
  42. lowpwr_sleep_delay_reset();
  43. }
  44. if (tick_check_expire(delay_cnt1, 10)) {
  45. delay_cnt1 = tick_get();
  46. charge_process();
  47. }
  48. if (tick_check_expire(delay_cnt2, 2000)) {
  49. delay_cnt2 = tick_get();
  50. if (charge_detect_dc() == CHARGE_DC_STATUS_ONLINE_BUT_ERR) {
  51. printf("[charge] CHARGE LINE VOLTAGE ERROR!!!\n");
  52. }
  53. }
  54. }
  55. #endif // BSP_CHARGE_EN