|
@@ -151,7 +151,7 @@ void DataProcess(uint16_t ID, uint8_t Mode, uint16_t Cmd, uint8_t* Data)
|
|
|
#if 1 // PBU/OBC发送给MC的指令
|
|
|
case 0x3002://控制电机指令
|
|
|
{
|
|
|
- if(MC_WorkMode == MC_WorkMode_Run)
|
|
|
+ if(MC_WorkMode != MC_WorkMode_Config)
|
|
|
{
|
|
|
memcpy(&MC_ControlCode.GearSt, Data, DataLength);
|
|
|
Update_MC_ControlCode_Back();
|
|
@@ -263,7 +263,7 @@ void DataProcess(uint16_t ID, uint8_t Mode, uint16_t Cmd, uint8_t* Data)
|
|
|
}
|
|
|
case 0x3708://ECU控制指令
|
|
|
{
|
|
|
- if(MC_WorkMode == MC_WorkMode_Run)
|
|
|
+ if(MC_WorkMode != MC_WorkMode_Config)
|
|
|
{
|
|
|
memcpy(&MC_ControlCode.GearSt, Data, 2);
|
|
|
Update_MC_ControlCode_Back();
|
|
@@ -551,7 +551,7 @@ void DataProcess(uint16_t ID, uint8_t Mode, uint16_t Cmd, uint8_t* Data)
|
|
|
MC_WorkMode = (MC_WorkMode_Struct_t)*Data;
|
|
|
MC_WorkMode_Back = (MC_WorkMode_Struct_t)~MC_WorkMode;
|
|
|
//配置模式时,清除设备校验失败故障码
|
|
|
- if(MC_WorkMode == MC_WorkMode_Config)
|
|
|
+ if(MC_WorkMode != MC_WorkMode_Run)
|
|
|
{
|
|
|
MC_ErrorCode.ERROR_Bit.Fault_BMS_Check = 0;
|
|
|
MC_ErrorCode.ERROR_Bit.Fault_PBU_Check = 0;
|
|
@@ -712,7 +712,7 @@ void DataProcess(uint16_t ID, uint8_t Mode, uint16_t Cmd, uint8_t* Data)
|
|
|
MC_WalkMode_Persent = Data[0];
|
|
|
break;
|
|
|
}
|
|
|
- case 0x2D08://读取Flash存储器指定地址数据
|
|
|
+ case 0x2D08://读取RAM或FLASH存储器指定地址数据
|
|
|
{
|
|
|
do
|
|
|
{
|
|
@@ -723,6 +723,16 @@ void DataProcess(uint16_t ID, uint8_t Mode, uint16_t Cmd, uint8_t* Data)
|
|
|
}while(0);
|
|
|
break;
|
|
|
}
|
|
|
+ case 0x2DF0://指定RAM寄存器写入地址,前面8个字节是起始地址,长度 = 结束地址 - 起始地址 + 1,有效数据长度为232Bytes
|
|
|
+ {
|
|
|
+ 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[0] << 24) + (Data[1] << 16) + (Data[2] << 8) + (Data[3])), (uint8_t*)(Data + 8), DataLength);
|
|
|
+ SendData(ID_MC_TO_CDL, MODE_REPORT, 0xA903, (uint8_t*)"ACK");
|
|
|
+ }while(0);
|
|
|
+ }
|
|
|
case 0x2E00://查询骑行历史信息
|
|
|
{
|
|
|
SendData(ID_MC_BC, MODE_REPORT, 0x1510, (uint8_t*)&MC_RideLog.ODO_Km);
|