Переглянути джерело

add charge poll mode

Signed-off-by: FuangCao <cavan.cao@foxmail.com>
FuangCao 5 роки тому
батько
коміт
9537ddc4f0

+ 1 - 1
Project/version.txt

@@ -1 +1 @@
-PS100XX_V11_11202057
+PS100XX_V11_11210008

+ 0 - 4
Source/app_rs485_1.c

@@ -92,10 +92,6 @@ static int8_t Handle_Sub_BMS_CMD_1(SUB_BMS_INFO *info, const u8 *buff, u8 length
 		info->connected = CONFIG_UART_GOOD;
 		info->send_state = SHARK_SEND_SUCCESS;
 
-		if (shark_battery_charge_in(info)) {
-			shark_charger_valid = shark_true;
-		}
-
 		//bang zi ce shi start
 		//temp_bms ->packet_common.m_percent /= 2;
 		//bang zi ce shi end

+ 5 - 3
Source/drv_can.c

@@ -41,14 +41,16 @@ static shark_bool shark_can_tx_frame(shark_can_frame_t *frame)
 	} else if (CAN_TSTAT_TME2 == (CAN_TSTAT(CAN0) & CAN_TSTAT_TME2)) {
 		mailbox = CAN_MAILBOX2;
 	} else {
+		if (work_normal == 0) {
+			return shark_true;
+		}
+
 		if (shark_can_tx_err < 20000) {
 			shark_can_tx_err++;
 		} else {
 			shark_can_tx_err = 0;
-			Can_Power_Enable(0);
 			can_deinit(CAN0);
 			CAN_Config_HW();
-			Can_Power_Enable(1);
 		}
 
 		return shark_false;
@@ -184,7 +186,7 @@ uint16_t Get_Data_Can(CAN_FRAME*app_can_frame)
 
 static void Can_NVIC_Config(void)
 {
-	nvic_irq_enable(USBD_HP_CAN0_TX_IRQn,3,0);
+	// nvic_irq_enable(USBD_HP_CAN0_TX_IRQn,3,0);
 	
 	nvic_irq_enable(USBD_LP_CAN0_RX0_IRQn,3,0);
 }

+ 30 - 25
Source/shark_charge.c

@@ -52,33 +52,27 @@ shark_bool shark_battery_charge_full(void)
 			shark_battery_full = shark_false;
 		}
 	} else {
-		return shark_false;
+		return shark_true;
 	}
 
 	return shark_battery_full;
 }
 
-shark_bool shark_charger_is_normal(void)
+void shark_charger_set_poll(void)
 {
-	return shark_charger_enabled && (shark_battery_charge_in1() || shark_battery_charge_in2());
+	shark_charger_state = SHARK_CHG_REMOVE;
+	shark_charger_insert = 0;
 }
 
-void shark_charger_set_state(shark_charger_state_t state)
+shark_bool shark_charger_is_normal(void)
 {
-	if (shark_battery_charge_full()) {
-		state = SHARK_CHG_REMOVE;
-	}
-
-	if (shark_charger_state != state) {
-		shark_charger_state = state;
-		println("charger: state%d", state);
-	}
+	return shark_charger_enabled && (shark_battery_charge_in1() || shark_battery_charge_in2());
 }
 
 void shark_charger_set_enable(shark_bool enable)
 {
 	if (shark_battery_charge_full()) {
-		shark_charger_set_state(SHARK_CHG_REMOVE);
+		shark_charger_set_poll();
 		enable = shark_false;
 	}
 
@@ -109,7 +103,7 @@ void shark_charger_disable(void)
 		println("charger detect");
 		shark_charger_insert = 0;
 		shark_charge_skip = 6000;
-		shark_charger_set_state(SHARK_CHG_DETECT);
+		shark_charger_state = SHARK_CHG_DETECT;
 		shark_charger_set_enable(shark_false);
 	}
 }
@@ -123,21 +117,26 @@ void shark_charge_tick(void)
 			if (shark_charger_enabled && shark_charge_times < SHARK_CHG_TIME_MAX) {
 				shark_charge_times++;
 			}
+
 		} else if (shark_charge_skip > 0) {
 			shark_charge_skip--;
 		} else {
-			if (shark_charger_insert == SHARK_CHG_INSERT_MIN && shark_xl_check_with_qd() == shark_false) {
-				shark_charger_set_state(SHARK_CHG_INSERT);
-			}
-
 			shark_charger_insert++;
+
+			if (shark_charger_insert > SHARK_CHG_INSERT_MIN) {
+				if (shark_battery_charge_full() || shark_xl_check_with_qd()) {
+					shark_charger_set_poll();
+				} else {
+					shark_charger_state = SHARK_CHG_INSERT;
+				}
+			}
 		}
 	} else {
 		shark_charger_insert = 0;
 		shark_charge_skip = 0;
 
 		if (shark_charger_remove > SHARK_CHG_REMOVE_MIN) {
-			shark_charger_set_state(SHARK_CHG_REMOVE);
+			shark_charger_state = SHARK_CHG_REMOVE;
 			shark_battery_full = shark_false;
 		} else {
 			shark_charger_remove++;
@@ -150,27 +149,33 @@ void shark_charge_poll(void)
 	if (shark_charger_enabled) {
 		switch (cb_operate_state) {
 		case CB_BAT1:
-			if (sub_bms_info_1.packet_common.charge_flag == 0) {
+			if (shark_battery_charge_in1()) {
+				shark_charger_valid = shark_true;
+			} else {
 				shark_charger_disable();
 			}
 			break;
 
 		case CB_BAT2:
-			if (sub_bms_info_2.packet_common.charge_flag == 0) {
+			if (shark_battery_charge_in2()) {
+				shark_charger_valid = shark_true;
+			} else {
 				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) {
+			if (shark_battery_charge_in1()) {
+				if (shark_battery_charge_in2()) {
+					shark_charger_valid = shark_true;
+				} else if (shark_battery_get_current12() < 0) {
 					shark_charger_disable();
 				}
-
+			} else if (shark_battery_charge_in2()) {
 				if (shark_battery_get_current12() < 0) {
 					shark_charger_disable();
 				}
-			} else if (sub_bms_info_2.packet_common.charge_flag == 0 && shark_battery_get_current12() < 0) {
+			} else {
 				shark_charger_disable();
 			}
 			break;

+ 2 - 2
Source/shark_charge.h

@@ -34,10 +34,10 @@ extern shark_bool shark_charger_valid;
 extern shark_bool shark_battery_full;
 extern shark_u16 shark_charge_times;
 
-shark_bool shark_battery_charge_full(void);
 void shark_charger_set_enable(shark_bool enable);
-void shark_charger_set_state(shark_charger_state_t state);
+shark_bool shark_battery_charge_full(void);
 shark_bool shark_charger_is_normal(void);
+void shark_charger_set_poll(void);
 void shark_charger_disable(void);
 void shark_charge_init(void);
 void shark_charge_tick(void);

+ 1 - 1
Source/sw_build_info.h

@@ -1,3 +1,3 @@
 #pragma once
 
-#define CONFIG_VERSION "PS100XX_V11_11202057"
+#define CONFIG_VERSION "PS100XX_V11_11210008"