Эх сурвалжийг харах

add add switch lock time for charge mode

Signed-off-by: FuangCao <cavan.cao@foxmail.com>
FuangCao 5 жил өмнө
parent
commit
a69f4a8c12

+ 1 - 1
Project/version.txt

@@ -1 +1 @@
-PS100XX_V11_11191537
+PS100XX_V11_11191715

+ 8 - 12
Source/app.c

@@ -211,8 +211,6 @@ static u8 shark_battery_switch_parrallel(void)
 	shark_bms_set_mos_parrallel();
 	sub_bms_info_1.used = shark_true;
 	sub_bms_info_2.used = shark_true;
-	shark_charge_times = 0;
-
 	return CB_BAT1_BAT2_PARRALLEL;
 }
 
@@ -349,10 +347,8 @@ static shark_bool shark_battery_series_enabled(void)
 
 static shark_bool shark_battery_check_series(u8 operate)
 {
-	if (operate != CB_BAT1_BAT2_SERIES) {
-		if (is_intelligent == 0) {
-			return shark_false;
-		}
+	if (operate != CB_BAT1_BAT2_SERIES && is_intelligent == 0) {
+		return shark_false;
 	}
 
 	return shark_battery_series_enabled();
@@ -360,10 +356,6 @@ static shark_bool shark_battery_check_series(u8 operate)
 
 static shark_bool shark_battery_parrallel_enabled(void)
 {
-	if (shark_xl_check()) {
-		return shark_false;
-	}
-
 	return shark_charger_detected;
 }
 
@@ -1195,7 +1187,7 @@ uint8_t Check_CB_BAT1_BAT2_SERIES(void)
 
 	if (shark_battery_get_series_error() != 0)
 	{
-		if (shark_xl_check() && QD_Dect()) {
+		if (shark_xl_check_with_qd()) {
 			shark_battery_series_locked = shark_true;
 			println("series locked");
 		} else {
@@ -1392,7 +1384,7 @@ uint8_t Change_Mode_Sub_BMS_PARRALLEL(void)
 		return 0;
 	}
 
-	if (shark_charge_times < SHARK_CHG_TIME_MID) {
+	if (shark_xl_check_with_qd()) {
 		return 0;
 	}
 
@@ -1501,6 +1493,10 @@ void Intelligent_Management_Battery(void)
 	{
 		if(shark_charger_detected)
 		{
+			if (shark_charge_times < SHARK_CHG_TIME_SWITCH) {
+				return;
+			}
+
 			if(cb_operate_state == CB_BAT1_BAT2_PARRALLEL)
 				return;		
 			else if(Battery_Change_Mode(CFG_BAT1_BAT2_PARRALLEL) == CB_BAT1_BAT2_PARRALLEL)

+ 1 - 1
Source/app.h

@@ -26,7 +26,7 @@
 #define SHARK_BATT_VOLTAGE_FUZZ			10000
 #define SHARK_SERIES_MAX_TIMES			10
 
-#define SHARK_BATT_SINGLE_DELTA			2000
+#define SHARK_BATT_SINGLE_DELTA			500
 
 enum
 {

+ 1 - 5
Source/app_rs485_1.c

@@ -376,11 +376,7 @@ static shark_battery_exit_t shark_battery_is_normal_raw(SUB_BMS_INFO *info, shar
 			return SHARK_BATT_EXIT_485;
 		}
 
-		if (shark_xl_check() == shark_false) {
-			return SHARK_BATT_EXIT_485;
-		}
-
-		if (QD_Dect() == 0) {
+		if (shark_xl_check_with_qd() == shark_false) {
 			return SHARK_BATT_EXIT_485;
 		}
 

+ 17 - 23
Source/shark_charge.c

@@ -5,12 +5,11 @@
 
 shark_bool shark_charger_detected;
 shark_bool shark_charger_enabled;
-
 shark_u16 shark_charge_times;
-shark_bool shark_battery_full;
 
 static shark_u16 shark_charger_remove;
 static shark_u16 shark_charger_insert;
+static shark_bool shark_battery_full;
 
 void shark_charge_init(void)
 {
@@ -32,28 +31,23 @@ void shark_charger_set_enable(shark_bool enable)
 		shark_battery_full = shark_false;
 	}
 
-	if (shark_battery_full || cb_operate_state == CB_BAT1_BAT2_SERIES || shark_charger_remove) {
+	if (shark_battery_full || cb_operate_state == CB_BAT1_BAT2_SERIES) {
 		enable = shark_false;
 	}
 
-	if (shark_charger_enabled != enable) {
-		shark_charger_enabled = enable;
-		shark_charge_times = 0;
-
-		if (enable) {
-			gpio_bit_set(GPIO_PORT_CHG_EN, GPIO_PIN_CHG_EN);
-			println("charger enabled");
-		} else {
-			gpio_bit_reset(GPIO_PORT_CHG_EN, GPIO_PIN_CHG_EN);
-			shark_charger_remove = SHARK_CHG_DEBOUNCE;
-			println("charger disabled");
-		}
+	if (enable) {
+		gpio_bit_set(GPIO_PORT_CHG_EN, GPIO_PIN_CHG_EN);
+	} else {
+		gpio_bit_reset(GPIO_PORT_CHG_EN, GPIO_PIN_CHG_EN);
 	}
+
+	shark_charger_enabled = enable;
+	shark_charge_times = 0;
 }
 
-void shark_charger_disable(u16 times)
+void shark_charger_disable(void)
 {
-	if (shark_charge_times > times) {
+	if (shark_charge_times > SHARK_CHG_TIME_DETECT) {
 		shark_charger_set_enable(shark_false);
 	}
 }
@@ -65,7 +59,7 @@ void shark_charge_tick(void)
 
 		if (shark_charger_insert < 50) {
 			shark_charger_insert++;
-		} else if (shark_xl_check() == shark_false) {
+		} else if (shark_xl_check_with_qd() == shark_false) {
 			shark_charger_detected = shark_true;
 
 			if (shark_charger_enabled && shark_charge_times < SHARK_CHG_TIME_MAX) {
@@ -90,27 +84,27 @@ void shark_charge_poll(void)
 			switch (cb_operate_state) {
 			case CB_BAT1:
 				if (sub_bms_info_1.packet_common.charge_flag == 0) {
-					shark_charger_disable(SHARK_CHG_TIME_MIN);
+					shark_charger_disable();
 				}
 				break;
 
 			case CB_BAT2:
 				if (sub_bms_info_2.packet_common.charge_flag == 0) {
-					shark_charger_disable(SHARK_CHG_TIME_MIN);
+					shark_charger_disable();
 				}
 				break;
 
 			case CB_BAT1_BAT2_PARRALLEL:
 				if (sub_bms_info_1.packet_common.charge_flag == 0) {
 					if (sub_bms_info_2.packet_common.charge_flag == 0) {
-						shark_charger_disable(SHARK_CHG_TIME_MIN);
+						shark_charger_disable();
 					}
 
 					if (shark_battery_get_current12() < 0) {
-						shark_charger_disable(SHARK_CHG_TIME_MIN);
+						shark_charger_disable();
 					}
 				} else if (sub_bms_info_2.packet_common.charge_flag == 0 && shark_battery_get_current12() < 0) {
-					shark_charger_disable(SHARK_CHG_TIME_MIN);
+					shark_charger_disable();
 				}
 				break;
 			}

+ 3 - 7
Source/shark_charge.h

@@ -3,9 +3,8 @@
 #include "shark_types.h"
 #include "common.h"
 
-#define SHARK_CHG_DEBOUNCE			500
-#define SHARK_CHG_TIME_MIN			5000
-#define SHARK_CHG_TIME_MID			10000
+#define SHARK_CHG_TIME_DETECT		5000
+#define SHARK_CHG_TIME_SWITCH		10000
 #define SHARK_CHG_TIME_MAX			60000
 
 #define GPIO_PORT_CHG_DET			GPIOC
@@ -22,13 +21,10 @@
 
 extern shark_bool shark_charger_detected;
 extern shark_bool shark_charger_enabled;
-extern shark_bool shark_battery_full;
 extern shark_u16 shark_charge_times;
-extern shark_u16 shark_charger_remove;
-extern shark_u16 shark_charger_insert;
 
 void shark_charger_set_enable(shark_bool enable);
-void shark_charger_disable(u16 times);
+void shark_charger_disable(void);
 void shark_charge_init(void);
 void shark_charge_tick(void);
 void shark_charge_poll(void);

+ 7 - 1
Source/shark_xl.h

@@ -1,6 +1,7 @@
 #pragma once
 
 #include "shark_types.h"
+#include "drv_io.h"
 
 #define CONFIG_XL_MIN		50
 #define CONFIG_XL_MAX		100
@@ -29,7 +30,12 @@ void shark_xl_init(void);
 void shark_xl_tick(void);
 void shark_xl_isr(void);
 
-static shark_bool shark_xl_check(void)
+static inline shark_bool shark_xl_check(void)
 {
 	return shark_xl_speed > CONFIG_XL_MIN;
 }
+
+static inline shark_bool shark_xl_check_with_qd(void)
+{
+	return shark_xl_check() && QD_Dect();
+}

+ 1 - 1
Source/sw_build_info.h

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