app.h 4.2 KB

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