Przeglądaj źródła

disable qd when over discharge

Signed-off-by: FuangCao <cavan.cao@foxmail.com>
FuangCao 5 lat temu
rodzic
commit
54a1f324c3
3 zmienionych plików z 21 dodań i 0 usunięć
  1. 3 0
      Source/app.c
  2. 17 0
      Source/app_rs485_1.c
  3. 1 0
      Source/app_rs485_1.h

+ 3 - 0
Source/app.c

@@ -776,6 +776,9 @@ void Check_CB_Operate_State(void)
 	{
 		case CB_BAT_NO:
 			temp_op = Select_One_BAT();
+			if (shark_battery_over_discharge()) {
+				QD_Enable_From(0, 1);
+			}
 			break;
 		case CB_BAT1:
 			temp_op = Check_CB_BAT_1();

+ 17 - 0
Source/app_rs485_1.c

@@ -631,6 +631,23 @@ shark_bool shark_battery_ping(u8 times)
 	return shark_false;
 }
 
+shark_bool shark_battery_over_discharge(void)
+{
+	if (shark_charger_enabled) {
+		return shark_false;
+	}
+
+	if (sub_bms_info_1.connected && (sub_bms_info_1.packet_common.work_status & ST_OVRDISCHRG_VOL) == 0) {
+		return shark_false;
+	}
+
+	if (sub_bms_info_2.connected && (sub_bms_info_2.packet_common.work_status & ST_OVRDISCHRG_VOL) == 0) {
+		return shark_false;
+	}
+
+	return shark_true;
+}
+
 void Save_Test_Info_To_Flash(uint8_t *data,uint16_t len)
 {
 	uint32_t capacity = (REG32(0x1FFFF7E0) & 0xFFFF) << 10;

+ 1 - 0
Source/app_rs485_1.h

@@ -365,6 +365,7 @@ u32 shark_battery_get_voltage_max(void);
 void shark_battery_clear(SUB_BMS_INFO *info);
 shark_bool shark_battery_process(SUB_BMS_INFO *info, const u8 *buff, u8 length);
 shark_bool shark_battery_send_command(SUB_BMS_INFO *info);
+shark_bool shark_battery_over_discharge(void);
 
 static inline void shark_bms_set_mos_close(void)
 {