Explorar o código

新增客户定制编号和硬件版本的写入。
硬件版本写入按照16个字符保存,读取时后4个字节更新为MCU ID。

dd hai 1 mes
pai
achega
f811a316c8

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 2463 - 2463
MDK-ARM/QD007A_CTL_APP/QD007A_CTL_APP_CRC.hex


BIN=BIN
MDK-ARM/bin/QD007A_CTL_APP.bin


+ 2 - 0
User/Inc/eeprom_flash.h

@@ -19,6 +19,8 @@
 #define    EEPROM_FLASH_ADDR_GEARBOX_PARAMS      EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)144         //自动变速器控制参数 8bytes + 4bytes   
 #define    EEPROM_FLASH_ADDR_BATTERY_PARMAS      EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)156         //电池放电曲线参数 204bytes + 4bytes  
 #define    EEPROM_FLASH_ADDR_TAG_INFO            EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)364         //产品标签信息 32bytes + 4bytes
+#define    EEPROM_FLASH_ADDR_CUSTOMER_INFO       EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)400         //客户定制编号信息 32bytes + 4bytes
+#define    EEPROM_FLASH_ADDR_HW_VERSION          EEPROM_FLASH_BEGIN_ADDRESS + (uint32_t)436         //硬件版本信息 16bytes + 4bytes
 
 #define    EEPROM_FLASH_ADDR_TEMP_BEGIN_ADDRESS    0x0801E800
 #define    EEPROM_FLASH_ADDR_TEMP_END_ADDRESS      0x0801EFFF

+ 1 - 0
User/Inc/var.h

@@ -559,6 +559,7 @@ extern MC_ErrorCode_Struct_t MC_ErrorCode;
 extern MC_VerInfo_Struct_t MC_VerInfo;
 extern char Firmware_Special[32];
 extern uint8_t MC_TagInfo[32];
+extern uint8_t MC_Customer_Info[32];
 extern OnLine_Status_Struct_t DeviceOnLine_Status;
 extern BMS_RunInfo_Struct_t BMS_RunInfo;
 extern Device_CheckInfo_Struct_t BMS_CheckInfo;

+ 20 - 0
User/Src/can_process.c

@@ -828,6 +828,26 @@ void DataProcess(uint16_t ID, uint8_t Mode, uint16_t Cmd, uint8_t* Data)
 					SendData(ID_MC_BC, MODE_REPORT, 0xA903, (uint8_t*)"ACK");
 					break;
 				}
+				case 0x5310://写入HW
+				{
+				  memcpy(MC_VerInfo.HW_Version, Data, DataLength);
+					IsFlashSaveDataUpdate = TRUE;
+					SendData(ID_MC_BC, MODE_REPORT, 0xA903, (uint8_t*)"ACK");
+					break;
+				}
+				case 0x5600://查询客户定制信息
+				{
+				  ReadDataFromEEPROM_Flash(EEPROM_FLASH_ADDR_CUSTOMER_INFO, MC_Customer_Info, 32);
+					SendData(ID_MC_TO_CDL, MODE_REPORT, 0xC220, MC_Customer_Info);
+					break;
+				}
+				case 0x5720://写入客户定制信息
+				{
+				  memcpy(MC_Customer_Info, Data, DataLength);
+					IsFlashSaveDataUpdate = TRUE;
+					SendData(ID_MC_BC, MODE_REPORT, 0xA903, (uint8_t*)"ACK");
+					break;
+				}
 				default:break;
 			}
 			break;

+ 17 - 1
User/Src/eeprom_flash.c

@@ -37,7 +37,11 @@ void CopyDataToEEPROM_Flash(void)
 	SaveDataToEEPROM_Flash(EEPROM_FLASH_ADDR_BATTERY_PARMAS, (uint8_t*)&BatteryCellInfo.DesignCap, sizeof(BatterCellInfo_Struct_t));
 	//写入产品标签信息
 	SaveDataToEEPROM_Flash(EEPROM_FLASH_ADDR_TAG_INFO, (uint8_t*)MC_TagInfo, 32);		
-
+	//写入客户定制信息
+  SaveDataToEEPROM_Flash(EEPROM_FLASH_ADDR_CUSTOMER_INFO, (uint8_t*)MC_Customer_Info, 32);	
+  //写入硬件版本
+	SaveDataToEEPROM_Flash(EEPROM_FLASH_ADDR_HW_VERSION, (uint8_t*)MC_VerInfo.HW_Version, 16);	
+	
 	//写入标志
 	Temp_32[0] = (EEPROM_Flash_Flag[0] << 24) + (EEPROM_Flash_Flag[1] << 16) + (EEPROM_Flash_Flag[2] << 8) + EEPROM_Flash_Flag[3];
 	Temp_32[1] = CRC32_Calculate((uint8_t*)EEPROM_Flash_Flag, 4);
@@ -103,6 +107,18 @@ void CopyDataFromEEPROM_Flash(void)
 	{
 	   memcpy(&MC_TagInfo, Flash_ReadDataBuf, 32);
 	}
+	//读取客户定制信息
+	Error_OK = ReadDataFromEEPROM_Flash(EEPROM_FLASH_ADDR_CUSTOMER_INFO, Flash_ReadDataBuf, 32);
+	if(Error_OK == 0)
+	{
+	   memcpy(&MC_Customer_Info, Flash_ReadDataBuf, 32);
+	}
+	//读取HW版本信息
+	Error_OK = ReadDataFromEEPROM_Flash(EEPROM_FLASH_ADDR_HW_VERSION, Flash_ReadDataBuf, 16);
+	if(Error_OK == 0)
+	{
+	   memcpy(&MC_VerInfo.HW_Version, Flash_ReadDataBuf, 16);
+	}
 	
 }
 

+ 2 - 1
User/Src/var.c

@@ -9,6 +9,7 @@ MC_ErrorCode_Struct_t MC_ErrorCode;                       //MC
 MC_VerInfo_Struct_t MC_VerInfo;                           //MC版本信息
 char Firmware_Special[32] = {0,};                         //MC软件版本特性说明
 uint8_t MC_TagInfo[32] = {0xFF,};                         //MC生产标签信息
+uint8_t MC_Customer_Info[32] = {0xFF,};                   //客户定制信息
 OnLine_Status_Struct_t DeviceOnLine_Status;               //设备在线检测结果
 BMS_RunInfo_Struct_t BMS_RunInfo;                         //BMS运行信息
 Device_CheckInfo_Struct_t BMS_CheckInfo;                  //BMS授权校验
@@ -741,7 +742,7 @@ void Var_Init(void)
 	//MCU ID读取
 	memcpy((uint8_t*)MC_CheckInfo.MAC_ID, (uint8_t*)(0x1FFFF7E8), 12);
 	
-    //MC存储数据初始化为默认值
+  //MC存储数据初始化为默认值
 	Var_SetToDefaultParam();
 	Var_SetToDefaultLog();
 	

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio