Bladeren bron

support switch serise auto

Signed-off-by: FuangCao <cavan.cao@foxmail.com>
FuangCao 5 jaren geleden
bovenliggende
commit
ae037957d8
6 gewijzigde bestanden met toevoegingen van 155 en 25 verwijderingen
  1. 100 3
      Project/PS100.uvoptx
  2. 1 1
      Project/version.txt
  3. 40 11
      Source/app.c
  4. 12 8
      Source/app_rs485_1.c
  5. 1 1
      Source/app_rs485_1.h
  6. 1 1
      Source/sw_build_info.h

+ 100 - 3
Project/PS100.uvoptx

@@ -140,7 +140,7 @@
         <SetRegEntry>
           <Number>0</Number>
           <Key>JL2CM3</Key>
-          <Name>-U20080643 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103VB$Flash\STM32F10x_128.FLM)</Name>
+          <Name>-U20080643 -O78 -S8 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0GD32F10x_MD -FS08000000 -FL020000</Name>
         </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
@@ -148,7 +148,56 @@
           <Name>UL2CM3(-S0 -C0 -P0 )  -FN1 -FC1000 -FD20000000 -FF0GD32F10x_MD -FL020000 -FS08000000 -FP0($$Device:GD32F103RB$Flash\GD32F10x_MD.FLM)</Name>
         </SetRegEntry>
       </TargetDriverDllRegistry>
-      <Breakpoint/>
+      <Breakpoint>
+        <Bp>
+          <Number>0</Number>
+          <Type>0</Type>
+          <LineNumber>746</LineNumber>
+          <EnabledFlag>1</EnabledFlag>
+          <Address>134265634</Address>
+          <ByteObject>0</ByteObject>
+          <HtxType>0</HtxType>
+          <ManyObjects>0</ManyObjects>
+          <SizeOfObject>0</SizeOfObject>
+          <BreakByAccess>0</BreakByAccess>
+          <BreakIfRCount>1</BreakIfRCount>
+          <Filename>..\Source\app_rs485_1.c</Filename>
+          <ExecCommand></ExecCommand>
+          <Expression>\\PS100\../Source/app_rs485_1.c\746</Expression>
+        </Bp>
+        <Bp>
+          <Number>1</Number>
+          <Type>0</Type>
+          <LineNumber>755</LineNumber>
+          <EnabledFlag>1</EnabledFlag>
+          <Address>134265674</Address>
+          <ByteObject>0</ByteObject>
+          <HtxType>0</HtxType>
+          <ManyObjects>0</ManyObjects>
+          <SizeOfObject>0</SizeOfObject>
+          <BreakByAccess>0</BreakByAccess>
+          <BreakIfRCount>1</BreakIfRCount>
+          <Filename>..\Source\app_rs485_1.c</Filename>
+          <ExecCommand></ExecCommand>
+          <Expression>\\PS100\../Source/app_rs485_1.c\755</Expression>
+        </Bp>
+        <Bp>
+          <Number>2</Number>
+          <Type>0</Type>
+          <LineNumber>765</LineNumber>
+          <EnabledFlag>1</EnabledFlag>
+          <Address>134265716</Address>
+          <ByteObject>0</ByteObject>
+          <HtxType>0</HtxType>
+          <ManyObjects>0</ManyObjects>
+          <SizeOfObject>0</SizeOfObject>
+          <BreakByAccess>0</BreakByAccess>
+          <BreakIfRCount>1</BreakIfRCount>
+          <Filename>..\Source\app_rs485_1.c</Filename>
+          <ExecCommand></ExecCommand>
+          <Expression>\\PS100\../Source/app_rs485_1.c\765</Expression>
+        </Bp>
+      </Breakpoint>
       <WatchWindow1>
         <Ww>
           <count>0</count>
@@ -292,7 +341,7 @@
       <DebugFlag>
         <trace>0</trace>
         <periodic>1</periodic>
-        <aLwin>0</aLwin>
+        <aLwin>1</aLwin>
         <aCover>0</aCover>
         <aSer1>0</aSer1>
         <aSer2>0</aSer2>
@@ -519,6 +568,54 @@
           <ExecCommand></ExecCommand>
           <Expression></Expression>
         </Bp>
+        <Bp>
+          <Number>3</Number>
+          <Type>0</Type>
+          <LineNumber>746</LineNumber>
+          <EnabledFlag>1</EnabledFlag>
+          <Address>0</Address>
+          <ByteObject>0</ByteObject>
+          <HtxType>0</HtxType>
+          <ManyObjects>0</ManyObjects>
+          <SizeOfObject>0</SizeOfObject>
+          <BreakByAccess>0</BreakByAccess>
+          <BreakIfRCount>0</BreakIfRCount>
+          <Filename>..\Source\app_rs485_1.c</Filename>
+          <ExecCommand></ExecCommand>
+          <Expression></Expression>
+        </Bp>
+        <Bp>
+          <Number>4</Number>
+          <Type>0</Type>
+          <LineNumber>755</LineNumber>
+          <EnabledFlag>1</EnabledFlag>
+          <Address>0</Address>
+          <ByteObject>0</ByteObject>
+          <HtxType>0</HtxType>
+          <ManyObjects>0</ManyObjects>
+          <SizeOfObject>0</SizeOfObject>
+          <BreakByAccess>0</BreakByAccess>
+          <BreakIfRCount>0</BreakIfRCount>
+          <Filename>..\Source\app_rs485_1.c</Filename>
+          <ExecCommand></ExecCommand>
+          <Expression></Expression>
+        </Bp>
+        <Bp>
+          <Number>5</Number>
+          <Type>0</Type>
+          <LineNumber>765</LineNumber>
+          <EnabledFlag>1</EnabledFlag>
+          <Address>0</Address>
+          <ByteObject>0</ByteObject>
+          <HtxType>0</HtxType>
+          <ManyObjects>0</ManyObjects>
+          <SizeOfObject>0</SizeOfObject>
+          <BreakByAccess>0</BreakByAccess>
+          <BreakIfRCount>0</BreakIfRCount>
+          <Filename>..\Source\app_rs485_1.c</Filename>
+          <ExecCommand></ExecCommand>
+          <Expression></Expression>
+        </Bp>
       </Breakpoint>
       <WatchWindow1>
         <Ww>

+ 1 - 1
Project/version.txt

@@ -1 +1 @@
-PS100XX_V01_11061622
+PS100XX_V01_11061736

+ 40 - 11
Source/app.c

@@ -147,44 +147,64 @@ static u8 shark_battery_switch_series(void)
 	Power_On_Normal(0, 2);
 
 	if (sub_bms_info_1.packet_common.m_total_vol > sub_bms_info_2.packet_common.m_total_vol) {
-		if (shark_battery_set_power(SHARK_BATT_POWER_FULL, SHARK_BATT_POWER_SMALL) != 3) {
+		if (shark_battery_set_power(SHARK_BATT_POWER_FULL, SHARK_BATT_POWER_OFF, 3) != 3) {
+			return CB_BAT_NO;
+		}
+
+		delay_1ms(100);
+
+		if (shark_battery_set_power(SHARK_BATT_POWER_FULL, SHARK_BATT_POWER_SMALL, 3) != 3) {
 			return CB_BAT_NO;
 		}
 	} else {
-		if (shark_battery_set_power(SHARK_BATT_POWER_SMALL, SHARK_BATT_POWER_FULL) != 3) {
+		if (shark_battery_set_power(SHARK_BATT_POWER_OFF, SHARK_BATT_POWER_FULL, 3) != 3) {
+			return CB_BAT_NO;
+		}
+
+		delay_1ms(100);
+
+		if (shark_battery_set_power(SHARK_BATT_POWER_SMALL, SHARK_BATT_POWER_FULL, 3) != 3) {
 			return CB_BAT_NO;
 		}
 	}
 
 	shark_bms_set_mos_series();
 	battery_wait_voltage_up(SERIES_VOLTAGE_MIN);
+	delay_1ms(200);
 
-	if (shark_battery_set_power(SHARK_BATT_POWER_FULL, SHARK_BATT_POWER_FULL) != 3) {
+	if (shark_battery_set_power(SHARK_BATT_POWER_FULL, SHARK_BATT_POWER_FULL, 3) != 3) {
 		shark_bms_set_mos_close();
 		return CB_BAT_NO;
 	}
 
+	sub_bms_info_1.state = SHARK_BATT_STATE_USED;
+	sub_bms_info_2.state = SHARK_BATT_STATE_USED;
+
 	return CB_BAT1_BAT2_SERIES;
 }
 
 static u8 shark_battery_switch_bat1(u8 mask)
 {
-	if ((shark_battery_set_power(SHARK_BATT_POWER_FULL, SHARK_BATT_POWER_OFF) & mask) != mask) {
+	if (shark_battery_set_power(SHARK_BATT_POWER_FULL, SHARK_BATT_POWER_OFF, mask) != mask) {
 		return CB_BAT_NO;
 	}
 
 	shark_bms_set_mos_bat1();
+	sub_bms_info_1.state = SHARK_BATT_STATE_USED;
+	sub_bms_info_2.state = SHARK_BATT_STATE_IDLE;
 
 	return CB_BAT1;
 }
 
 static u8 shark_battery_switch_bat2(u8 mask)
 {
-	if ((shark_battery_set_power(SHARK_BATT_POWER_OFF, SHARK_BATT_POWER_FULL) & mask) != mask) {
+	if (shark_battery_set_power(SHARK_BATT_POWER_OFF, SHARK_BATT_POWER_FULL, mask) != mask) {
 		return CB_BAT_NO;
 	}
 
 	shark_bms_set_mos_bat2();
+	sub_bms_info_1.state = SHARK_BATT_STATE_IDLE;
+	sub_bms_info_2.state = SHARK_BATT_STATE_USED;
 
 	return CB_BAT2;
 }
@@ -222,27 +242,32 @@ static u8 shark_battery_switch_bat1_or_bat2(void)
 
 static u8 shark_battery_switch_auto(shark_bool series)
 {
+	u8 mask;
+
 	shark_bms_set_mos_close();
+	sub_bms_info_1.state = SHARK_BATT_STATE_IDLE;
+	sub_bms_info_2.state = SHARK_BATT_STATE_IDLE;
 
 	if (!battery_wait_voltage_down(SELECT_ONE_BATTERY_VOL)) {
 		return CB_BAT_NO;
 	}
 
 	if (cb_operate_state == CB_BAT_NO) {
-		if (shark_battery_set_power(SHARK_BATT_POWER_SMALL, SHARK_BATT_POWER_SMALL) == 0) {
+		mask = shark_battery_set_power(SHARK_BATT_POWER_SMALL, SHARK_BATT_POWER_SMALL, 3);
+		if (mask == 0) {
 			return CB_BAT_NO;
 		}
 
 		delay_1ms(200);
+	} else {
+		mask = 3;
 	}
 
-	if (shark_battery_set_power(SHARK_BATT_POWER_FULL, SHARK_BATT_POWER_FULL) == 0) {
+	mask = shark_battery_set_power(SHARK_BATT_POWER_FULL, SHARK_BATT_POWER_FULL, mask);
+	if (mask == 0) {
 		return CB_BAT_NO;
 	}
 
-	sub_bms_info_1.state = SHARK_BATT_STATE_IDLE;
-	sub_bms_info_2.state = SHARK_BATT_STATE_IDLE;
-
 	if (shark_battery_is_normal_power_on(&sub_bms_info_1)) {
 		if (shark_battery_is_normal_power_on(&sub_bms_info_2)) {
 			if (series) {
@@ -561,7 +586,10 @@ int8_t Battery_CB_Switch(uint8_t cb_operate)
 			sub_bms_info_2.state = SHARK_BATT_STATE_USED;
 			break;
 		case CB_BAT1_BAT2_SERIES:
-
+#if 1
+			cb_operate = shark_battery_switch_auto(shark_true);
+			println("switch auto: %d", cb_operate);
+#else
 			Power_On_Normal(0,2);
 			shark_bms_set_mos_close();
 
@@ -726,6 +754,7 @@ int8_t Battery_CB_Switch(uint8_t cb_operate)
 			shark_bms_set_mos_series();
 			sub_bms_info_1.state = SHARK_BATT_STATE_USED;
 			sub_bms_info_2.state = SHARK_BATT_STATE_USED;
+#endif
 			break;
 		case CB_BAT_NO:
 		default:

+ 12 - 8
Source/app_rs485_1.c

@@ -674,7 +674,7 @@ static void shark_battery_set_power_param(SUB_BMS_INFO *info, shark_battery_powe
 
 static shark_bool shark_battery_check_power(SUB_BMS_INFO *info, shark_battery_power_t power)
 {
-	if (sub_bms_info_1.conn_state != SUB_BMS_CONT_HV485) {
+	if (info->conn_state != SUB_BMS_CONT_HV485) {
 		return shark_false;
 	}
 
@@ -704,11 +704,11 @@ static shark_bool shark_battery_check_power(SUB_BMS_INFO *info, shark_battery_po
 	return shark_true;
 }
 
-u8 shark_battery_set_power(shark_battery_power_t power1, shark_battery_power_t power2)
+u8 shark_battery_set_power(shark_battery_power_t power1, shark_battery_power_t power2, u8 mask)
 {
 	u64 time = shark_get_time() + 200;
+	u8 success = 0;
 	u8 times;
-	u8 mask;
 
 	while (sub_bms_info_1.conn_state == SUB_BMS_CONT_HV485 && RS485_busy_1) {
 		if (time < shark_get_time_safe()) {
@@ -725,7 +725,7 @@ u8 shark_battery_set_power(shark_battery_power_t power1, shark_battery_power_t p
 	sub_bms_info_1.conn_state = SUB_BMS_DISC_HV485;
 	sub_bms_info_2.conn_state = SUB_BMS_DISC_HV485;
 
-	for (mask = 0, times = 0; times < 3 && mask != 3; times++) {
+	for (times = 0; times < 3; times++) {
 		shark_battery_set_power_param(&sub_bms_info_1, power1);
 		g_event &= ~RS485_RECEIVE_END_EVENT;
 
@@ -737,13 +737,13 @@ u8 shark_battery_set_power(shark_battery_power_t power1, shark_battery_power_t p
 
 		time = shark_get_time() + 200;
 
-		while (time > shark_get_time_safe() && mask != 3) {
+		while (time > shark_get_time_safe()) {
 			if(g_event & RS485_RECEIVE_END_EVENT) {
 				g_event &= ~RS485_RECEIVE_END_EVENT;
 				Handle_RS485_1_Data();
 
 				if (shark_battery_check_power(&sub_bms_info_1, power1)) {
-					mask |= 1;
+					success |= 1;
 				}
 			}
 
@@ -752,13 +752,17 @@ u8 shark_battery_set_power(shark_battery_power_t power1, shark_battery_power_t p
 				Handle_RS485_2_Data();
 
 				if (shark_battery_check_power(&sub_bms_info_2, power2)) {
-					mask |= 2;
+					success |= 2;
 				}
 			}
+
+			if ((success & mask) == mask) {
+				return mask;
+			}
 		}
 	}
 
-	return mask;
+	return success;
 }
 
 int8_t Update_Sub_BMS_1_Software(uint8_t step)

+ 1 - 1
Source/app_rs485_1.h

@@ -385,7 +385,7 @@ shark_bool shark_bms_check_xl(void);
 shark_battery_exit_t shark_battery_is_normal(SUB_BMS_INFO *info);
 void shark_bms_set_vgs(shark_bms_vgs_t vgs, shark_bool enable);
 void shark_bms_set_mos(shark_bool ss, shark_bool s11, shark_bool s21);
-u8 shark_battery_set_power(shark_battery_power_t power1, shark_battery_power_t power2);
+u8 shark_battery_set_power(shark_battery_power_t power1, shark_battery_power_t power2, u8 mask);
 shark_bool shark_battery_is_power_on(SUB_BMS_INFO *info);
 shark_bool shark_battery_is_normal_power_on(SUB_BMS_INFO *info);
 

+ 1 - 1
Source/sw_build_info.h

@@ -1,3 +1,3 @@
 #pragma once
 
-#define CONFIG_VERSION "PS100XX_V01_11061622"
+#define CONFIG_VERSION "PS100XX_V01_11061736"