瀏覽代碼

fixup series lock fault

Signed-off-by: FuangCao <cavan.cao@foxmail.com>
FuangCao 5 年之前
父節點
當前提交
7e39fba072
共有 6 個文件被更改,包括 44 次插入31 次删除
  1. 1 1
      Project/version.txt
  2. 29 26
      Source/app.c
  3. 1 1
      Source/app.h
  4. 1 1
      Source/app_end_ctr.c
  5. 11 1
      Source/drv_can.c
  6. 1 1
      Source/sw_build_info.h

+ 1 - 1
Project/version.txt

@@ -1 +1 @@
-PS100XX_V10_11091648
+PS100XX_V10_11091756

+ 29 - 26
Source/app.c

@@ -43,7 +43,7 @@ const double nhb_default = 600;
 SHENG_YU_LI_CHENG sheng_yu_li_cheng;
 DELAY_COMMON save_param_delay;
 
-shark_bool shark_battery_series_disabled;
+shark_bool shark_battery_series_locked;
 u8 shark_battery_series_times;
 
 shark_bool shark_battery_switch_busy;
@@ -225,7 +225,7 @@ static u8 shark_battery_switch_series(void)
 
 	sub_bms_info_1.state = SHARK_BATT_STATE_USED;
 	sub_bms_info_2.state = SHARK_BATT_STATE_USED;
-	shark_battery_series_disabled = shark_false;
+	shark_battery_series_locked = shark_false;
 
 	return CB_BAT1_BAT2_SERIES;
 }
@@ -320,7 +320,7 @@ static shark_bool shark_battery_series_enabled(void)
 			return shark_false;
 		}
 
-		if (shark_battery_series_disabled) {
+		if (shark_battery_series_locked) {
 			return shark_false;
 		}
 
@@ -1200,6 +1200,27 @@ uint8_t Select_One_BAT_Han_Guo(void)
 }
 #endif
 
+static u8 shark_battery_get_series_error(void)
+{
+	if (Is_Sub_BMS_1_Normal() != SHARK_BATT_EXIT_SUCCESS) {
+		return 1;
+	}
+
+	if (Is_Sub_BMS_2_Normal() != SHARK_BATT_EXIT_SUCCESS) {
+		return 2;
+	}
+
+	if (!shark_battery_check_power(&sub_bms_info_1, SHARK_BATT_POWER_FULL)) {
+		return 3;
+	}
+
+	if (!shark_battery_check_power(&sub_bms_info_2, SHARK_BATT_POWER_FULL)) {
+		return 4;
+	}
+
+	return 0;
+}
+
 uint8_t Check_CB_BAT1_BAT2_SERIES(void)
 {
 	uint8_t temp_op = CB_MAX;
@@ -1222,31 +1243,13 @@ uint8_t Check_CB_BAT1_BAT2_SERIES(void)
 		return temp_op;
 	}	
 
-	if(Is_Sub_BMS_1_Normal() == SHARK_BATT_EXIT_SUCCESS && Is_Sub_BMS_2_Normal() == SHARK_BATT_EXIT_SUCCESS)
-	{
-		if((sub_bms_info_1.packet_common.bms_status & (BMS_STA_D_OPEN | BMS_STA_C_OPEN)) != (BMS_STA_D_OPEN | BMS_STA_C_OPEN))
-		{
-			//sub_bms_info_1.sub_bms_cmd.operate = OP_OPEN_FET;
-			//sub_bms_info_1.sub_bms_cmd.param = 0x03;
-			sub_bms_info_1.define_error= D_BMS_ERROR_SERISE_CD_OFF;
-			temp_op = Select_One_BAT();
-			sub_bms_info_1.define_error = D_BMS_ERROR_NO;
-			return temp_op;
-		}
-		if((sub_bms_info_2.packet_common.bms_status & (BMS_STA_D_OPEN | BMS_STA_C_OPEN)) != (BMS_STA_D_OPEN | BMS_STA_C_OPEN))
-		{
-			//sub_bms_info_2.sub_bms_cmd.operate = OP_OPEN_FET;
-			//sub_bms_info_2.sub_bms_cmd.param = 0x03;
-			sub_bms_info_2.define_error = D_BMS_ERROR_SERISE_CD_OFF;
-			temp_op = Select_One_BAT();
-			sub_bms_info_2.define_error = D_BMS_ERROR_NO;
-			return temp_op;
-		}
-	}
-	else
+	if (shark_battery_get_series_error() != 0)
 	{
 		if (shark_bms_xl_times > SHARK_XL_FUZZ && QD_Dect()) {
-			shark_battery_series_disabled = shark_true;
+			shark_battery_series_locked = shark_true;
+			println("series locked");
+		} else {
+			println("no xl");
 		}
 
 #ifdef HAN_GUO_VERSION

+ 1 - 1
Source/app.h

@@ -88,7 +88,7 @@ extern DELAY_COMMON Check_CB_oper_sta_delay;
 extern uint8_t is_intelligent;
 extern uint8_t CB_OPERATE_PRECEDENCE_Config;
 
-extern shark_bool shark_battery_series_disabled;
+extern shark_bool shark_battery_series_locked;
 extern u8 shark_battery_series_times;
 
 extern shark_bool shark_battery_switch_busy;

+ 1 - 1
Source/app_end_ctr.c

@@ -185,7 +185,7 @@ int8_t Handle_Can_Ctr_CMD(CAN_FRAME*can_ctr_frame)
 						//ACC2_Enable(0);
 						QD_Enable_From(0,2);
 						serise_low_enable = 0;
-						shark_battery_series_disabled = shark_false;
+						shark_battery_series_locked = shark_false;
 						break;
 					case 1:
 						//QD_Enable(1);

+ 11 - 1
Source/drv_can.c

@@ -452,10 +452,20 @@ static can_trasnmit_message_struct shark_can_log_message;
 
 static void shark_can_log_flush(uint8_t dest)
 {
+	u64 time = shark_get_time() + 100;
+
 	shark_can_log_message.tx_efid = 3 << 24 | 1 << 19 | 1 << 14 | SELF_ID << 7 | dest;
 	shark_can_log_message.tx_ff = CAN_FF_EXTENDED;
 	shark_can_log_message.tx_ft = CAN_FT_DATA;
-	can_message_transmit(CAN0, &shark_can_log_message);
+
+	while (can_message_transmit(CAN0, &shark_can_log_message) == CAN_NOMAILBOX) {
+		if (time < shark_get_time()) {
+			break;
+		}
+
+		fwdgt_counter_reload();
+	}
+
 	shark_can_log_message.tx_dlen = 0;
 }
 

+ 1 - 1
Source/sw_build_info.h

@@ -1,3 +1,3 @@
 #pragma once
 
-#define CONFIG_VERSION "PS100XX_V10_11091648"
+#define CONFIG_VERSION "PS100XX_V10_11091756"