소스 검색

重庆测试,BMS升级测试,新增BootLoader版本查询。版本号为1.2.1.14

CHENJIE-PC\QiXiang_CHENJIE 3 년 전
부모
커밋
a8d13fcd0f
3개의 변경된 파일80개의 추가작업 그리고 10개의 파일을 삭제
  1. 2 1
      inc/UartTask.h
  2. 1 1
      inc/app.h
  3. 77 8
      src/UartTask.c

+ 2 - 1
inc/UartTask.h

@@ -76,7 +76,8 @@ typedef enum
 {
         UPDATE_STEP_CHECK_VERSION=0,
         UPDATE_STEP_REQUEST_UPDATE,
-        UPDATE_STEP_START_UPDATE,        
+        UPDATE_STEP_START_UPDATE, 
+        UPDATE_STEP_CHECK_VERSION_AGAIN,       
         UPDATE_STEP_SET_BAUD_RATE,
         UPDATE_STEP_PREPARE_SEND_DATA_LEN,
         UPDATE_STEP_SEND_DATA_LEN,

+ 1 - 1
inc/app.h

@@ -34,7 +34,7 @@ extern "C" {
 #define HWVERSION		    0x0102    //硬件主版本,现为V1.2板
 #define	BLSWVERSION		0x01020000    //BootLoader版本号V1.2.0.0
 #define	DRVSWVERSION		0x01040000     //驱动层版本号V1.4.0.0
-#define	APPSWVERSION		0x0102010D     
+#define	APPSWVERSION		0x0102010E     
 
 //--------------------------------------------------------------------------------
 

+ 77 - 8
src/UartTask.c

@@ -914,7 +914,7 @@ void SP_BMS_Update_Service() //超力源BMS升级服务
 				#endif
 				if(errorCount>10)
 				{
-					updateStep = UPDATE_STEP_ERROR;
+					updateStep = UPDATE_STEP_RESET;
 					errorCount = 0;
 				}
 				osDelay(50);
@@ -966,7 +966,7 @@ void SP_BMS_Update_Service() //超力源BMS升级服务
 
 				if(errorCount>10)
 				{
-					updateStep = UPDATE_STEP_ERROR;
+					updateStep = UPDATE_STEP_RESET;
 					errorCount = 0;
 				}
 				
@@ -1002,7 +1002,7 @@ void SP_BMS_Update_Service() //超力源BMS升级服务
 				memset((UINT8*)(&pUpdateMsgRecv) , 0, sizeof(BMS_Update_Recv_Msg_Type));
 				ret = SP_BMS_Update_Query(pUpdateMsgSend, updateMsgSendLen, (UINT8*)(&pUpdateMsgRecv), 0, 500);
 				//updateStep = UPDATE_STEP_SET_BAUD_RATE;
-				updateStep = UPDATE_STEP_SET_BAUD_RATE;
+				updateStep = UPDATE_STEP_CHECK_VERSION_AGAIN;//2021-04-09跳过波特率设置
 				#ifdef USING_PRINTF
 							
 							printf("query:");
@@ -1019,6 +1019,75 @@ void SP_BMS_Update_Service() //超力源BMS升级服务
 							printf("\n");		
 							printf("next update step:%d\n",updateStep);
 				#endif
+				osDelay(100);
+				break;
+			case UPDATE_STEP_CHECK_VERSION_AGAIN:
+				dataLen = 0;
+				updateMsgSendLen = 7;
+				pUpdateMsgSend[0] = 0xEB; //start flag
+				pUpdateMsgSend[1] = 0x01;	//add flag
+				pUpdateMsgSend[2] = 0x01; //read
+				pUpdateMsgSend[3] = 0x03;	//data len
+				pUpdateMsgSend[4] = 0x90;	//cmd
+				pUpdateMsgSend[5] = 0x93;	//checksum
+				pUpdateMsgSend[6] = 0xF5;	//end flag		
+				//printf("updateMsgSendLen0 = %x\n",updateMsgSendLen);
+				memset((UINT8*)(&pUpdateMsgRecv) , 0, sizeof(BMS_Update_Recv_Msg_Type));
+				ret = SP_BMS_Update_Query(pUpdateMsgSend, updateMsgSendLen, (UINT8*)(&pUpdateMsgRecv),sizeof(BMS_Update_Recv_Msg_Type), 500);
+				//printf("updateMsgSendLen1 = %x\n",updateMsgSendLen);
+				if(ret!=0)
+				{
+					if(pUpdateMsgRecv.startFlag == 0xEB && pUpdateMsgRecv.endFlag == 0xF5)
+					{
+						if(pUpdateMsgRecv.cmd == 0x90)
+						{
+							if(pUpdateMsgRecv.data != 0xFF)
+							{
+								updateStep = UPDATE_STEP_REQUEST_UPDATE;
+								errorCount = 0;
+							}
+							else
+							{
+								updateStep = UPDATE_STEP_SET_BAUD_RATE;
+								errorCount = 0;
+							}
+						}
+						else
+						{
+							errorCount++;
+						}
+					}
+					else
+					{
+						errorCount++;
+					}
+				}			
+				else
+				{
+					errorCount++;
+				}
+				#ifdef USING_PRINTF
+							//printf("update step:%d\n",updateStep);
+							printf("query:");
+							
+							for(j=0;j<updateMsgSendLen;j++)
+							{
+								printf("%x ",pUpdateMsgSend[j]);
+							}
+							
+							printf("\nanswer:");
+							for(j=0;j<sizeof(BMS_Update_Recv_Msg_Type);j++)
+							{
+								printf("%x ",*(((UINT8*)&pUpdateMsgRecv)+j));
+							}
+							printf("\n");
+							printf("next update step:%d\n",updateStep);
+				#endif
+				if(errorCount>10)
+				{
+					updateStep = UPDATE_STEP_RESET;
+					errorCount = 0;
+				}
 				osDelay(50);
 				break;
 			case UPDATE_STEP_SET_BAUD_RATE:
@@ -1080,7 +1149,7 @@ void SP_BMS_Update_Service() //超力源BMS升级服务
 
 				if(errorCount>10)
 				{
-					updateStep = UPDATE_STEP_ERROR;
+					updateStep = UPDATE_STEP_RESET;
 					errorCount = 0;
 				}
 				
@@ -1150,7 +1219,7 @@ void SP_BMS_Update_Service() //超力源BMS升级服务
 
 				if(errorCount>10)
 				{
-					updateStep = UPDATE_STEP_ERROR;
+					updateStep = UPDATE_STEP_RESET;
 					errorCount = 0;
 				}
 				
@@ -1224,7 +1293,7 @@ void SP_BMS_Update_Service() //超力源BMS升级服务
 
 				if(errorCount>10)
 				{
-					updateStep = UPDATE_STEP_ERROR;
+					updateStep = UPDATE_STEP_RESET;
 					errorCount = 0;
 				}
 				
@@ -1292,7 +1361,7 @@ void SP_BMS_Update_Service() //超力源BMS升级服务
 
 				if(errorCount>10)
 				{
-					updateStep = UPDATE_STEP_ERROR;
+					updateStep = UPDATE_STEP_RESET;
 					errorCount = 0;
 				}
 				
@@ -1440,7 +1509,7 @@ void SP_BMS_Update_Service() //超力源BMS升级服务
 
 				if(errorCount>10)
 				{
-					updateStep = UPDATE_STEP_ERROR;
+					updateStep = UPDATE_STEP_RESET;
 					errorCount = 0;
 				}