|
@@ -249,6 +249,12 @@ void DataProcess(uint16_t ID, uint8_t Mode, uint16_t Cmd, uint8_t* Data)
|
|
|
{
|
|
|
memcpy(&MC_ControlCode.GearSt, Data, 2);
|
|
|
Update_MC_ControlCode_Back();
|
|
|
+ //更新轮速,仅配置为通过通信获取车轮周期时更新
|
|
|
+ if(MC_ConfigParam1.SpeedSignal == MC_SPEED_COMMUNICATION)
|
|
|
+ {
|
|
|
+ MC_SpeedSensorData.DiffTime_ms = (Data[3] << 8) + Data[2];
|
|
|
+ MC_SpeedSensorData.IsTrigFlag = TRUE;
|
|
|
+ }
|
|
|
}
|
|
|
MC_RunInfo.GearSt = MC_ControlCode.GearSt;//当前助力档位更新
|
|
|
MC_RunInfo.LightSwitch = MC_ControlCode.LightSwitch;
|
|
@@ -287,8 +293,11 @@ void DataProcess(uint16_t ID, uint8_t Mode, uint16_t Cmd, uint8_t* Data)
|
|
|
|
|
|
case 0x3900://OBC/ECU查询版本信息
|
|
|
{
|
|
|
- ReadDataFromEEPROM_Flash(EEPROM_FLASH_ADDR_MODE, (uint8_t*)MC_VerInfo.Mode, 16);
|
|
|
+ uint32_t MCU_ID_CRC32;
|
|
|
+ ReadDataFromEEPROM_Flash(EEPROM_FLASH_ADDR_MODE, (uint8_t*)MC_VerInfo.Mode, 16);
|
|
|
ReadDataFromEEPROM_Flash(EEPROM_FLASH_ADDR_SN, (uint8_t*)MC_VerInfo.SN_Num, 16);
|
|
|
+ MCU_ID_CRC32 = CRC32_Calculate(MC_CheckInfo.MAC_ID, 12);
|
|
|
+ memcpy((uint8_t*)(MC_VerInfo.HW_Version + 12), (uint8_t*)(&MCU_ID_CRC32), 4);
|
|
|
SendData(ID_MC_BC, MODE_REPORT, 0x1240, (uint8_t*)MC_VerInfo.Mode);
|
|
|
SendData(ID_MC_BC, MODE_REPORT, 0x1720, (uint8_t*)Firmware_Special);
|
|
|
break;
|
|
@@ -324,8 +333,11 @@ void DataProcess(uint16_t ID, uint8_t Mode, uint16_t Cmd, uint8_t* Data)
|
|
|
//HMI发送MC的指令
|
|
|
case 0x3000://查询电机版本信息
|
|
|
{
|
|
|
- ReadDataFromEEPROM_Flash(EEPROM_FLASH_ADDR_MODE, (uint8_t*)MC_VerInfo.Mode, 16);
|
|
|
+ uint32_t MCU_ID_CRC32;
|
|
|
+ ReadDataFromEEPROM_Flash(EEPROM_FLASH_ADDR_MODE, (uint8_t*)MC_VerInfo.Mode, 16);
|
|
|
ReadDataFromEEPROM_Flash(EEPROM_FLASH_ADDR_SN, (uint8_t*)MC_VerInfo.SN_Num, 16);
|
|
|
+ MCU_ID_CRC32 = CRC32_Calculate(MC_CheckInfo.MAC_ID, 12);
|
|
|
+ memcpy((uint8_t*)(MC_VerInfo.HW_Version + 12), (uint8_t*)(&MCU_ID_CRC32), 4);
|
|
|
SendData(ID_MC_BC, MODE_REPORT, 0x1240, (uint8_t*)MC_VerInfo.Mode);
|
|
|
SendData(ID_MC_BC, MODE_REPORT, 0x1720, (uint8_t*)Firmware_Special);
|
|
|
break;
|
|
@@ -418,8 +430,11 @@ void DataProcess(uint16_t ID, uint8_t Mode, uint16_t Cmd, uint8_t* Data)
|
|
|
}
|
|
|
case 0x1200://查询电机版本信息
|
|
|
{
|
|
|
- ReadDataFromEEPROM_Flash(EEPROM_FLASH_ADDR_MODE, (uint8_t*)MC_VerInfo.Mode, 16);
|
|
|
+ uint32_t MCU_ID_CRC32;
|
|
|
+ ReadDataFromEEPROM_Flash(EEPROM_FLASH_ADDR_MODE, (uint8_t*)MC_VerInfo.Mode, 16);
|
|
|
ReadDataFromEEPROM_Flash(EEPROM_FLASH_ADDR_SN, (uint8_t*)MC_VerInfo.SN_Num, 16);
|
|
|
+ MCU_ID_CRC32 = CRC32_Calculate(MC_CheckInfo.MAC_ID, 12);
|
|
|
+ memcpy((uint8_t*)(MC_VerInfo.HW_Version + 12), (uint8_t*)(&MCU_ID_CRC32), 4);
|
|
|
SendData(ID_MC_BC, MODE_REPORT, 0x1240, (uint8_t*)MC_VerInfo.Mode);
|
|
|
SendData(ID_MC_BC, MODE_REPORT, 0x1720, (uint8_t*)Firmware_Special);
|
|
|
break;
|
|
@@ -630,8 +645,13 @@ void DataProcess(uint16_t ID, uint8_t Mode, uint16_t Cmd, uint8_t* Data)
|
|
|
}
|
|
|
case 0x2D08://读取Flash存储器指定地址数据
|
|
|
{
|
|
|
- memcpy((uint8_t*)(Data + 8), (uint8_t*)((Data[0] << 24) + (Data[1] << 16) + (Data[2] << 8) + (Data[3])), 128);
|
|
|
- SendData(ID_MC_TO_CDL, MODE_REPORT, 0xAB88, (uint8_t*)Data);
|
|
|
+ do
|
|
|
+ {
|
|
|
+ uint32_t DataLength;
|
|
|
+ DataLength = (uint32_t)((Data[4] << 24) + (Data[5] << 16) + (Data[6] << 8) + (Data[7])) - (uint32_t)((Data[0] << 24) + (Data[1] << 16) + (Data[2] << 8) + (Data[3])) + 1;
|
|
|
+ memcpy((uint8_t*)(Data + 8), (uint8_t*)((Data[0] << 24) + (Data[1] << 16) + (Data[2] << 8) + (Data[3])), DataLength);
|
|
|
+ SendData(ID_MC_TO_CDL, MODE_REPORT, (0xAB08 + DataLength), (uint8_t*)Data);
|
|
|
+ }while(0);
|
|
|
break;
|
|
|
}
|
|
|
case 0x2E00://查询骑行历史信息
|