soc.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #pragma once
  2. #include "libs/shark_libs.h"
  3. #include "bsp/shark_bsp.h"
  4. #define SOC_CURRENT_VERSION 1
  5. #define SOC_FLAG_VERSON_MASK (0x0E)
  6. #define SOC_FLAG_CALIBRATED (0x1 << 0) //已经校准
  7. #define SOC_FLAG_VERSION(v) (((v)<<1)& SOC_FLAG_VERSON_MASK)
  8. #define SOC_FLAG_TO_VER(f) (((f) & SOC_FLAG_VERSON_MASK) >> 1)
  9. typedef struct {
  10. uint8_t flags; //比如是否校准等
  11. double coulomb_now; /*AH, 若导线中载有1安培的稳定电流,则在1秒内通过导线横截面积的电量为1库仑 */
  12. uint8_t capacity; /* 电池的容量百分比 */
  13. double coulomb_min;
  14. double coulomb_max;
  15. double charger_cmin; //充电计算的最小容量
  16. double current_real_coulomb; //当前的能量(wh)
  17. double charger_coulomb; //本次充电的AH
  18. double dischrger_coulomb; //本次放电的AH
  19. double pre_charger_coulomb;
  20. double pre_discharger_coulomb;
  21. float total_coulomb;
  22. }soc_t;
  23. void soc_init(void);
  24. void soc_update(void);
  25. int soc_update_by_ocv(void);
  26. uint32_t soc_get_cycle(void);
  27. uint8_t soc_get_soh(void);
  28. uint32_t soc_get_charger_remain_time(void);
  29. soc_t *get_soc(void);
  30. void soc_log(void);
  31. void soc_update_for_deepsleep(float sleep_time);
  32. void soc_restore_by_iap(uint8_t flags, uint8_t capaticy);
  33. u8 soc_get_version(void);
  34. void soc_set_version(u8 version);
  35. bool soc_is_force_full(void);
  36. void soc_clear_calibrate(int keep_cycle);