Bläddra i källkod

add charger state

Signed-off-by: FuangCao <cavan.cao@foxmail.com>
FuangCao 5 år sedan
förälder
incheckning
7f4a4ee4a0
6 ändrade filer med 34 tillägg och 21 borttagningar
  1. 1 1
      Project/version.txt
  2. 6 6
      Source/app.c
  3. 1 1
      Source/app_end_ctr.c
  4. 15 11
      Source/shark_charge.c
  5. 10 1
      Source/shark_charge.h
  6. 1 1
      Source/sw_build_info.h

+ 1 - 1
Project/version.txt

@@ -1 +1 @@
-PS100XX_V11_11191715
+PS100XX_V11_11191849

+ 6 - 6
Source/app.c

@@ -306,7 +306,7 @@ static u8 shark_battery_switch_single(void)
 
 static shark_bool shark_battery_series_enabled(void)
 {
-	if (shark_charger_detected) {
+	if (shark_charger_state != SHARK_CHG_REMOVE) {
 		return shark_false;
 	}
 
@@ -356,7 +356,7 @@ static shark_bool shark_battery_check_series(u8 operate)
 
 static shark_bool shark_battery_parrallel_enabled(void)
 {
-	return shark_charger_detected;
+	return shark_charger_state == SHARK_CHG_INSERT;
 }
 
 static shark_bool shark_battery_check_parrallel(u8 operate)
@@ -403,7 +403,7 @@ static u8 shark_battery_switch_auto(u8 operate)
 				return operate;
 			} else if (shark_battery_check_parrallel(operate)) {
 				return shark_battery_switch_parrallel();
-			} else if (shark_charger_detected) {
+			} else if (shark_charger_state == SHARK_CHG_INSERT) {
 				return shark_battery_switch_charge();
 			} else {
 				return shark_battery_switch_single();
@@ -431,7 +431,7 @@ int8_t Battery_CB_Switch(uint8_t cb_operate)
 
 	println("switch: %d", cb_operate_state);
 
-	if (shark_charger_detected) {
+	if (shark_charger_state == SHARK_CHG_INSERT) {
 		shark_charger_set_enable(shark_true);
 	}
 
@@ -1179,7 +1179,7 @@ uint8_t Check_CB_BAT1_BAT2_SERIES(void)
 	}
 #endif
 
-	if (shark_charger_detected)
+	if (shark_charger_state != SHARK_CHG_REMOVE)
 	{
 		temp_op = Select_One_BAT();
 		return temp_op;
@@ -1491,7 +1491,7 @@ void Intelligent_Management_Battery(void)
 {
 	if(is_intelligent)
 	{
-		if(shark_charger_detected)
+		if(shark_charger_state != SHARK_CHG_REMOVE)
 		{
 			if (shark_charge_times < SHARK_CHG_TIME_SWITCH) {
 				return;

+ 1 - 1
Source/app_end_ctr.c

@@ -541,7 +541,7 @@ int8_t Rsp_Can_Ctr_CMD(CAN_FRAME*can_ctr_frame)
 				case 7:
 					buf[len++] = end_ctr_self_ss_new.acc12_sta << 4 | ACC2_Dect();
 					buf[len++] = end_ctr_self_ss_new.qd_sta << 4 | QD_Dect();
-					buf[len++] = gpio_input_bit_get(GPIO_PORT_CHG_DET, GPIO_PIN_CHG_DET) << 4 | shark_charger_detected << 1 | shark_charger_enabled;
+					buf[len++] = shark_charger_state << 4 | shark_charger_enabled;
 					buf[len++] = sub_bms_info_1.packet_common.charge_flag << 4 | sub_bms_info_2.packet_common.charge_flag;
 					break;
 				case 9:

+ 15 - 11
Source/shark_charge.c

@@ -3,7 +3,7 @@
 #include "shark_xl.h"
 #include "app.h"
 
-shark_bool shark_charger_detected;
+shark_charger_state_t shark_charger_state;
 shark_bool shark_charger_enabled;
 shark_u16 shark_charge_times;
 
@@ -49,6 +49,8 @@ void shark_charger_disable(void)
 {
 	if (shark_charge_times > SHARK_CHG_TIME_DETECT) {
 		shark_charger_set_enable(shark_false);
+		shark_charger_insert = 0;
+		shark_charger_state = SHARK_CHG_DETECT;
 	}
 }
 
@@ -57,29 +59,31 @@ void shark_charge_tick(void)
 	if (gpio_input_bit_get(GPIO_PORT_CHG_DET, GPIO_PIN_CHG_DET) == RESET) {
 		shark_charger_remove = 0;
 
-		if (shark_charger_insert < 50) {
-			shark_charger_insert++;
-		} else if (shark_xl_check_with_qd() == shark_false) {
-			shark_charger_detected = shark_true;
+		if (shark_charger_insert > SHARK_CHG_INSERT_MIN) {
+			if (shark_xl_check_with_qd() == shark_false) {
+				shark_charger_state = SHARK_CHG_INSERT;
 
-			if (shark_charger_enabled && shark_charge_times < SHARK_CHG_TIME_MAX) {
-				shark_charge_times++;
+				if (shark_charger_enabled && shark_charge_times < SHARK_CHG_TIME_MAX) {
+					shark_charge_times++;
+				}
 			}
+		} else {
+			shark_charger_insert++;
 		}
 	} else {
 		shark_charger_insert = 0;
 
-		if (shark_charger_remove < 2000) {
-			shark_charger_remove++;
+		if (shark_charger_remove > SHARK_CHG_REMOVE_MIN) {
+			shark_charger_state = SHARK_CHG_REMOVE;
 		} else {
-			shark_charger_detected = shark_false;
+			shark_charger_remove++;
 		}
 	}
 }
 
 void shark_charge_poll(void)
 {
-	if (shark_charger_detected) {
+	if (shark_charger_state == SHARK_CHG_INSERT) {
 		if (shark_charger_enabled) {
 			switch (cb_operate_state) {
 			case CB_BAT1:

+ 10 - 1
Source/shark_charge.h

@@ -7,6 +7,9 @@
 #define SHARK_CHG_TIME_SWITCH		10000
 #define SHARK_CHG_TIME_MAX			60000
 
+#define SHARK_CHG_INSERT_MIN		50
+#define SHARK_CHG_REMOVE_MIN		2000
+
 #define GPIO_PORT_CHG_DET			GPIOC
 #define GPIO_PIN_CHG_DET			GPIO_PIN_4
 #define GPIO_RCU_CHG_DET			RCU_GPIOC
@@ -19,7 +22,13 @@
 #define EXTI_PIN_CHG_DET			GPIO_PIN_SOURCE_4
 #define EXTI_CHG_DET				EXTI_4
 
-extern shark_bool shark_charger_detected;
+typedef enum {
+	SHARK_CHG_REMOVE,
+	SHARK_CHG_DETECT,
+	SHARK_CHG_INSERT,
+} shark_charger_state_t;
+
+extern shark_charger_state_t shark_charger_state;
 extern shark_bool shark_charger_enabled;
 extern shark_u16 shark_charge_times;
 

+ 1 - 1
Source/sw_build_info.h

@@ -1,3 +1,3 @@
 #pragma once
 
-#define CONFIG_VERSION "PS100XX_V11_11191715"
+#define CONFIG_VERSION "PS100XX_V11_11191849"