app.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. #ifndef APP_H
  2. #define APP_H
  3. //#define IS_CHARGE_IN() !gpio_input_bit_get(GPIOC,GPIO_PIN_4)
  4. #define IS_CHARGER_ON() gpio_output_bit_get(GPIOB,GPIO_PIN_12)
  5. #define CHARG_PROTECT_OPEN(x) gpio_bit_write(GPIOB,GPIO_PIN_12,(bit_status)(x))
  6. #define BAT1_IS_OPEN() (!gpio_input_bit_get(GPIOC,GPIO_PIN_2))
  7. #define BAT2_IS_OPEN() (!gpio_input_bit_get(GPIOC,GPIO_PIN_1))
  8. #define S10_ENABLE(x) //gpio_bit_write()
  9. #define S11_ENABLE(x) gpio_bit_write(GPIOB,GPIO_PIN_13,(bit_status)(x))
  10. #define S20_ENABLE(x) //gpio_bit_write()
  11. #define S21_ENABLE(x) gpio_bit_write(GPIOB,GPIO_PIN_15,(bit_status)(x))
  12. #define SS__ENABLE(x) gpio_bit_write(GPIOB,GPIO_PIN_14,(bit_status)(x))
  13. #define BATTERY_RESISTANCE_OHM (0.1F)
  14. #define PARRALLEL_DELTA_VOL (2500)
  15. #define PARRALLEL_BL_DELTA_VOL (100)
  16. #define CHARGE_DELAY_TIME_OUT_COUNT (10000)
  17. #define ONE_BATTERY_DELTA_VOL (500)
  18. enum
  19. {
  20. PRE_PARRALLEL,
  21. PRE_SERIES,
  22. PRE_MAX
  23. };
  24. enum
  25. {
  26. CFG_BAT_NO,
  27. CFG_BAT1,
  28. CFG_BAT2,
  29. CFG_BAT1_BAT2_PARRALLEL,
  30. CFG_BAT1_BAT2_SERIES,
  31. CFG_MAX
  32. };
  33. enum
  34. {
  35. CB_BAT_NO,
  36. CB_BAT1,
  37. CB_BAT2,
  38. CB_BAT1_BAT2_PARRALLEL,
  39. CB_BAT1_BAT2_SERIES,
  40. CB_MAX
  41. };
  42. enum
  43. {
  44. CB_NO_ERR,
  45. CB_NO_BAT1,
  46. CB_NO_BAT2,
  47. CB_NO_OPERATE,
  48. CB_MAX_ERR
  49. };
  50. typedef struct
  51. {
  52. uint8_t s10_bit:1;
  53. uint8_t s11_bit:1;
  54. uint8_t s20_bit:1;
  55. uint8_t s21_bit:1;
  56. uint8_t ss__bit:1;
  57. }CB_VAL;
  58. extern CB_VAL cb_val_last;
  59. extern uint8_t cb_operate_state;
  60. extern uint8_t Check_CB_oper_sta_start;
  61. extern DELAY_COMMON Check_CB_oper_sta_delay;
  62. extern uint8_t is_intelligent;
  63. extern uint8_t CB_OPERATE_PRECEDENCE_Config;
  64. extern uint8_t shark_switch_disabled;
  65. __inline void Check_CB_Oper_Sta_Delay(void)
  66. {
  67. if(Check_CB_oper_sta_delay.set)
  68. {
  69. if(++Check_CB_oper_sta_delay.count >= 2000)
  70. {
  71. Check_CB_oper_sta_delay.count = 0;
  72. Check_CB_oper_sta_start = 1;
  73. }
  74. }
  75. }
  76. #define CHECK_SERIES_VOL (80000)
  77. #ifdef HAN_GUO_VERSION
  78. #define CHECK_SERIES_PROTECT_VOL (20000)
  79. #else
  80. #define CHECK_SERIES_PROTECT_VOL (40000)
  81. #endif
  82. #define SERIES_PROTECT_VOL (CHECK_SERIES_PROTECT_VOL + 3000)
  83. #define SERIES_UNDER_VOL_TIME_OUT (4000)
  84. #define NEXT_SERIES_TIME_OUT (5000)
  85. #define SELECT_ONE_BATTERY_VOL (60000)
  86. #define SERIES_UNDER_XX_PERCENT (20)
  87. enum
  88. {
  89. D_BMS_ERROR_NO,
  90. D_BMS_ERROR_SERISE_CD_OFF,
  91. D_BMS_ERROR_MAX
  92. };
  93. enum
  94. {
  95. OBCS_CHARGER_OUT,
  96. OBCS_CHARGER_IN,
  97. OBCS_CHARGER_CHECK_FINISH,
  98. OBCS_CHARGER_MAX
  99. };
  100. extern uint8_t one_bat_charge_status;
  101. extern uint8_t serise_low_enable;
  102. extern uint8_t serise_low_qd_status;
  103. enum
  104. {
  105. UPDATE_BAT_NO,
  106. UPDATE_BAT_1,
  107. UPDATE_BAT_2,
  108. UPDATE_BAT_MAX
  109. };
  110. enum
  111. {
  112. UPDATE_STEP_NO,
  113. UPDATE_STEP_REQ,
  114. UPDATE_STEP_DATA,
  115. UPDATE_STEP_MAX
  116. };
  117. #pragma pack (push,1)
  118. #define UB_DATA_MAX (128)
  119. typedef struct
  120. {
  121. uint8_t ub_step;
  122. uint8_t ub_bat;
  123. uint16_t ub_total;
  124. uint16_t ub_sq;
  125. uint16_t ub_len;
  126. uint8_t ub_data[UB_DATA_MAX];
  127. }UPDATE_BAT;
  128. #pragma pack(pop)
  129. extern UPDATE_BAT update_bat;
  130. #define NENG_HAO_BI_MIN (300)
  131. #define NENG_HAO_BI_MAX (700)
  132. #define SY_VALID_FLAG_KEY (0x0325)
  133. typedef struct
  134. {
  135. uint16_t sy_valid_flag;
  136. double neng_hao_bi;
  137. }SYLC_SAVE_PARM;
  138. typedef struct
  139. {
  140. uint32_t sy_dan_ci_li_cheng_temp;
  141. uint32_t sy_dan_ci_li_cheng;
  142. uint8_t sy_percent_1;
  143. uint8_t sy_percent_2;
  144. uint8_t sy_percent_dlta;
  145. uint8_t sy_percent_total;
  146. uint8_t sy_yu_ji_ke_xing_shi_li_cheng;
  147. SYLC_SAVE_PARM sy_ss_parm;
  148. }SHENG_YU_LI_CHENG;
  149. extern SHENG_YU_LI_CHENG sheng_yu_li_cheng;
  150. extern uint8_t power_switch_from;
  151. extern uint8_t work_normal;
  152. void App_Initial(void);
  153. void CB_Operate_Initial(void);
  154. void Misc_Initial(void);
  155. void Battery_CB_Operate(CB_VAL *cb_val);
  156. int8_t Battery_CB_Switch(uint8_t cb_operate);
  157. uint8_t Is_BAT1_Lock(void);
  158. uint8_t Is_BAT2_Lock(void);
  159. void Check_Charge_In(void);
  160. void Check_CB_Operate_State(void);
  161. uint8_t Battery_Change_Mode(uint8_t cfg_mode);
  162. void Power_On_Normal(uint8_t enable,uint8_t from);
  163. void Intelligent_Management_Battery(void);
  164. void Check_Battery_Small_Current(void);
  165. uint8_t Is_Soak(void);
  166. void Series_Delay_Timeout(void);
  167. void Cal_Sheng_Yu_Li_Cheng(void);
  168. void Initial_Neng_Hao_Bi(void);
  169. extern void Flash_flag_clear(void);
  170. void Save_Param_Time_Out(void) ;
  171. void Save_Param(void);
  172. #endif