driver_charge.h 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. /*
  2. * @File name : driver_charge.h
  3. * @Author : Bluetrum IOT Team
  4. * @Date : 2023-06-20
  5. * @Description : This file contains all the functions prototypes for the Charge library.
  6. *
  7. * Copyright (c) by Bluetrum, All Rights Reserved.
  8. */
  9. #ifndef _DRIVER_CHARGE_H
  10. #define _DRIVER_CHARGE_H
  11. #include "driver_com.h"
  12. /**
  13. * @brief Charge Mode Enum
  14. */
  15. typedef enum {
  16. CHARGE_MODE_FULL_KEEP = 0x00,
  17. CHARGE_MODE_FULL_DISCONNECT = 0x01,
  18. } CHARGE_MODE_TYPEDEF;
  19. /**
  20. * @brief Charge DC Detect Enum
  21. */
  22. typedef enum {
  23. CHARGE_DC_STATUS_OFF = 0x00,
  24. CHARGE_DC_STATUS_ONLINE_BUT_ERR = 0x01,
  25. CHARGE_DC_STATUS_ONLINE = 0x02,
  26. } CHARGE_DC_STATUS_TYPEDEF;
  27. /**
  28. * @brief Charge Status Enum
  29. */
  30. typedef enum {
  31. CHARGE_STA_UNINIT = 0x00, // uninitialized.
  32. CHARGE_STA_OFF = 0x01, // charge off.
  33. CHARGE_STA_OFF_BUT_DC_IN = 0x02, // charge off but still connect to DC5V.
  34. CHARGE_STA_ON_TRICKLE = 0x03, // trickle charging.
  35. CHARGE_STA_ON_CON_CURR = 0x04, // constant current charging.
  36. CHARGE_STA_ON_CON_VOL = 0x05, // constant voltage charging.
  37. } CHARGE_STATUS_TYPEDEF;
  38. /**
  39. * @brief Charge DC In Reset System Enum
  40. */
  41. typedef enum {
  42. CHARGE_DCIN_RESET_DIS = 0x0000,
  43. CHARGE_DCIN_RESET_EN = 0x0040,
  44. } CHARGE_DCIN_RESERT_TYPEDEF;
  45. /**
  46. * @brief Current Charging Enum
  47. */
  48. typedef enum {
  49. CHARGE_CUR_5mA = 0x0000,
  50. CHARGE_CUR_10mA,
  51. CHARGE_CUR_15mA,
  52. CHARGE_CUR_20mA,
  53. CHARGE_CUR_25mA,
  54. CHARGE_CUR_30mA,
  55. CHARGE_CUR_35mA,
  56. CHARGE_CUR_40mA,
  57. CHARGE_CUR_45mA,
  58. CHARGE_CUR_50mA,
  59. CHARGE_CUR_55mA,
  60. CHARGE_CUR_60mA,
  61. CHARGE_CUR_65mA,
  62. CHARGE_CUR_70mA,
  63. CHARGE_CUR_75mA,
  64. CHARGE_CUR_80mA,
  65. CHARGE_CUR_85mA,
  66. CHARGE_CUR_90mA,
  67. CHARGE_CUR_95mA,
  68. CHARGE_CUR_100mA,
  69. CHARGE_CUR_105mA,
  70. CHARGE_CUR_110mA,
  71. CHARGE_CUR_115mA,
  72. CHARGE_CUR_120mA,
  73. CHARGE_CUR_125mA,
  74. CHARGE_CUR_130mA,
  75. CHARGE_CUR_135mA,
  76. CHARGE_CUR_140mA,
  77. CHARGE_CUR_145mA,
  78. CHARGE_CUR_150mA,
  79. CHARGE_CUR_155mA,
  80. CHARGE_CUR_160mA,
  81. CHARGE_CUR_165mA,
  82. CHARGE_CUR_170mA,
  83. CHARGE_CUR_175mA,
  84. CHARGE_CUR_180mA,
  85. CHARGE_CUR_185mA,
  86. CHARGE_CUR_190mA,
  87. CHARGE_CUR_195mA,
  88. CHARGE_CUR_200mA,
  89. CHARGE_CUR_205mA,
  90. CHARGE_CUR_210mA,
  91. CHARGE_CUR_215mA,
  92. CHARGE_CUR_220mA,
  93. CHARGE_CUR_225mA,
  94. CHARGE_CUR_230mA,
  95. CHARGE_CUR_235mA,
  96. CHARGE_CUR_240mA,
  97. CHARGE_CUR_245mA,
  98. CHARGE_CUR_250mA,
  99. CHARGE_CUR_255mA,
  100. CHARGE_CUR_260mA,
  101. CHARGE_CUR_265mA,
  102. CHARGE_CUR_270mA,
  103. CHARGE_CUR_275mA,
  104. CHARGE_CUR_280mA,
  105. CHARGE_CUR_285mA,
  106. CHARGE_CUR_290mA,
  107. CHARGE_CUR_295mA,
  108. CHARGE_CUR_300mA,
  109. CHARGE_CUR_305mA,
  110. CHARGE_CUR_310mA,
  111. CHARGE_CUR_315mA,
  112. CHARGE_CUR_320mA,
  113. } CHARGE_CUR_TYPEDEF;
  114. /**
  115. * @brief Current of Cutoff charging Enum
  116. */
  117. typedef enum {
  118. CHARGE_CUTOFF_CUR_0m = 0x0000,
  119. CHARGE_CUTOFF_CUR_2mA5 = 0x0800,
  120. CHARGE_CUTOFF_CUR_5mA = 0x1000,
  121. CHARGE_CUTOFF_CUR_7mA5 = 0x1800,
  122. CHARGE_CUTOFF_CUR_10mA = 0x2000,
  123. CHARGE_CUTOFF_CUR_12mA5 = 0x2800,
  124. CHARGE_CUTOFF_CUR_15mA = 0x3000,
  125. CHARGE_CUTOFF_CUR_17mA5 = 0x3800,
  126. CHARGE_CUTOFF_CUR_20mA = 0x4000,
  127. CHARGE_CUTOFF_CUR_22mA5 = 0x4800,
  128. CHARGE_CUTOFF_CUR_25mA = 0x5000,
  129. CHARGE_CUTOFF_CUR_27mA5 = 0x5800,
  130. CHARGE_CUTOFF_CUR_30mA = 0x6000,
  131. CHARGE_CUTOFF_CUR_32mA5 = 0x6800,
  132. CHARGE_CUTOFF_CUR_35mA = 0x7000,
  133. CHARGE_CUTOFF_CUR_37mA5 = 0x7800,
  134. } CHARGE_CUTOFF_CUR_TYPEDEF;
  135. /**
  136. * @brief Voltage of Cutoff Charging Enum
  137. */
  138. typedef enum {
  139. CHARGE_CUTOFF_VOL_4V2 = 0x0000,
  140. CHARGE_CUTOFF_VOL_4V35 = 0x0100,
  141. CHARGE_CUTOFF_VOL_4V4 = 0x0200,
  142. CHARGE_CUTOFF_VOL_4V45 = 0x0300,
  143. } CHARGE_CUTOFF_VOL_TYPEDEF;
  144. /**
  145. * @brief Charge Current When Power Up Charge
  146. */
  147. typedef enum {
  148. CHARGE_PWRUP_CUR_5mA = 0x0000,
  149. CHARGE_PWRUP_CUR_10mA = 0x0040,
  150. CHARGE_PWRUP_CUR_15mA = 0x0080,
  151. CHARGE_PWRUP_CUR_20mA = 0x00c0,
  152. } CHARGE_PWRUP_CHARGE_CUR_TYPEDEF;
  153. /**
  154. * @brief Charging Initial Struct
  155. */
  156. typedef struct {
  157. CHARGE_DCIN_RESERT_TYPEDEF dcin_reset; // reset if DC insert.
  158. CHARGE_CUR_TYPEDEF const_curr; // the current of the constant currrent charging.
  159. CHARGE_CUR_TYPEDEF trick_curr; // the current of the trickle charging.
  160. CHARGE_CUTOFF_CUR_TYPEDEF cutoff_curr; // charging cutoff current.
  161. CHARGE_CUTOFF_VOL_TYPEDEF cutoff_volt; // charging cutoff voltage.
  162. FUNCTIONAL_STATE trick_curr_en; // trickle charging enable.
  163. CHARGE_MODE_TYPEDEF mode; // disconnect or not when charge full.
  164. } charge_init_typedef;
  165. //--------------- Function used to configure charging ---------------//
  166. void charge_init(charge_init_typedef *charge_init_struct);
  167. void charge_deinit(void);
  168. void charge_process(void);
  169. CHARGE_DC_STATUS_TYPEDEF charge_detect_dc(void);
  170. uint8_t charge_get_status(void);
  171. void charge_status_update(u8 status);
  172. void charge_change_mode(u8 mode);
  173. u8 charge_get_mode(void);
  174. FLAG_STATE charge_cutoff_cur_condition(void);
  175. FLAG_STATE charge_cutoff_vol_condition(void);
  176. FLAG_STATE charge_trickle_vol_condition(void);
  177. void charge_cutoff_vol_to_stop_time_set(uint16_t time);
  178. void charge_pwrup_charge_cur_sel(CHARGE_PWRUP_CHARGE_CUR_TYPEDEF pwrup_charge_cur);
  179. #endif // _DRIVER_CHARGE_H