|
@@ -595,7 +595,7 @@ void DataProcess(USART_Buf_TypeDef* ptUartTx, UWORD ID, UBYTE Mode, UWORD Cmd, U
|
|
|
case 0x1A00: //按小牙盘原协议返回控制参数1
|
|
|
{
|
|
|
MC_ConfigParam1_Struct_t MC_ConfigParam1;
|
|
|
- MC_ConfigParam1.GasCtrlMode_Param = MC_UpcInfo.stBikeInfo.uwThrottleMaxSpdKmH;
|
|
|
+ MC_ConfigParam1.GasCtrlMode_Param = MC_UpcInfo.stBikeInfo.uwThrottleMaxSpdKmH / 10;
|
|
|
MC_ConfigParam1.StarModel = MC_UpcInfo.stBikeInfo.uwStartMode;
|
|
|
MC_ConfigParam1.StopTime = 100;
|
|
|
MC_ConfigParam1.SpeedLimit = MC_UpcInfo.stAssistInfo.uwAssistLimitBikeSpdStart / 10;
|
|
@@ -605,7 +605,7 @@ void DataProcess(USART_Buf_TypeDef* ptUartTx, UWORD ID, UBYTE Mode, UWORD Cmd, U
|
|
|
MC_ConfigParam1.CurrentLimit = MC_UpcInfo.stTestParaInfo.uwPwrLimit / MC_UpcInfo.stMotorInfo.uwRVolV;
|
|
|
MC_ConfigParam1.TempTH_Alarm = MC_UpcInfo.stMContorlInfo.uwPwrLimitStartCe + 40;
|
|
|
MC_ConfigParam1.TempTH_Protect = MC_UpcInfo.stMContorlInfo.uwAlamOverHeatCe + 40;
|
|
|
- MC_ConfigParam1.NoPBU_Flag = (MC_UpcInfo.stBikeInfo2.uwNoneOBCEnable == 0xAA) ? 0xAA : 0x55;;
|
|
|
+ MC_ConfigParam1.NoPBU_Flag = (MC_UpcInfo.stBikeInfo2.uwNoneOBCEnable == 0xAA) ? 0xAA : 0x55;
|
|
|
MC_ConfigParam1.WheelSize = MC_UpcInfo.stBikeInfo.uwWheelPerimeter;
|
|
|
MC_ConfigParam1.SerialNum = MC_UpcInfo.stTestParaInfo.RunModelSelect;
|
|
|
MC_ConfigParam1.UserAdjParam1_ECO.Assist_K_GAIN = 100;
|
|
@@ -631,7 +631,7 @@ void DataProcess(USART_Buf_TypeDef* ptUartTx, UWORD ID, UBYTE Mode, UWORD Cmd, U
|
|
|
|
|
|
case 0x1B20: //按小牙盘原协议写入部分控制参数
|
|
|
{
|
|
|
- MC_UpcInfo.stBikeInfo.uwThrottleMaxSpdKmH = Data[0];
|
|
|
+ MC_UpcInfo.stBikeInfo.uwThrottleMaxSpdKmH = Data[0] * 10;
|
|
|
MC_UpcInfo.stBikeInfo.uwStartMode = Data[1];
|
|
|
MC_UpcInfo.stAssistInfo.uwAssistLimitBikeSpdStart = Data[4] * 10;
|
|
|
MC_UpcInfo.stAssistInfo.uwAssistLimitBikeSpdStop = Data[4] * 10 + 20;
|
|
@@ -640,9 +640,9 @@ void DataProcess(USART_Buf_TypeDef* ptUartTx, UWORD ID, UBYTE Mode, UWORD Cmd, U
|
|
|
MC_UpcInfo.stTestParaInfo.uwPwrLimit = MC_UpcInfo.stMotorInfo.uwRVolV * Data[8];
|
|
|
MC_UpcInfo.stBikeInfo.uwWheelPerimeter = Data[12];
|
|
|
MC_UpcInfo.stTestParaInfo.RunModelSelect = Data[13];
|
|
|
- MC_UpcInfo.stSensorInfo.uwBikeSpdSensorPulseNm = Data[24];
|
|
|
MC_UpcInfo.stMContorlInfo.uwAlamUVolV = (UWORD)Data[28] + (Data[29] << 8);
|
|
|
MC_UpcInfo.stBikeInfo.uwCartSpdKmH = Data[30];
|
|
|
+ MC_UpcInfo.stSensorInfo.uwBikeSpdSensorPulseNm = Data[24];
|
|
|
|
|
|
MC_UpcInfo.stBikeInfo.uwSaveFlg = TRUE;
|
|
|
MC_UpcInfo.stAssistInfo.uwSaveFlg = TRUE;
|
|
@@ -704,6 +704,44 @@ void DataProcess(USART_Buf_TypeDef* ptUartTx, UWORD ID, UBYTE Mode, UWORD Cmd, U
|
|
|
case 0x1E00: //查询历史信息
|
|
|
{
|
|
|
SendData(ptUartTx, ID_MC_TO_CDL, MODE_REPORT, 0xB74C, (UBYTE *)&MC_UpcInfo.stHistoryInfo.uwOpenTimes);
|
|
|
+
|
|
|
+ //按小牙盘原协议返回历史信息
|
|
|
+ MC_RunLog1_Struct_t MC_RunLog1;
|
|
|
+ MC_RunLog1.PowerOnCnt = MC_UpcInfo.stHistoryInfo.uwOpenTimes;
|
|
|
+ MC_RunLog1.RunTime = (ULONG)(MC_UpcInfo.stHistoryInfo.uwUsedTimeH << 16) + MC_UpcInfo.stHistoryInfo.uwUsedTimeL;
|
|
|
+ MC_RunLog1.OC_ProtectCnt = MC_UpcInfo.stHistoryInfo.uwAlamSOcurTimes;
|
|
|
+ MC_RunLog1.UV_ProtectCnt = MC_UpcInfo.stHistoryInfo.uwAlamUVolTimes;
|
|
|
+ MC_RunLog1.OV_ProtectCnt = MC_UpcInfo.stHistoryInfo.uwAlamOVolTimes;
|
|
|
+ MC_RunLog1.LockRotor_ProtectCnt = MC_UpcInfo.stHistoryInfo.uwAlamRotorLockTimes;
|
|
|
+ MC_RunLog1.OT_ProtectCnt = MC_UpcInfo.stHistoryInfo.uwAlamOHeatTimes;
|
|
|
+ MC_RunLog1.SPS_FaultCnt = MC_UpcInfo.stHistoryInfo.uwBikeSpdSensorAlamTimes;
|
|
|
+ MC_RunLog1.TQS_FaultCnt = MC_UpcInfo.stHistoryInfo.uwTorSensorAlamTimes;
|
|
|
+ MC_RunLog1.Hall_FaultCnt = MC_UpcInfo.stHistoryInfo.uwPosSensorAlamTimes;
|
|
|
+ MC_RunLog1.PhaseLine_FaultCnt = MC_UpcInfo.stHistoryInfo.uwAlamPhsLossTimes;
|
|
|
+ MC_RunLog1.NTC_FaultCnt = 0;
|
|
|
+ MC_RunLog1.BMS_Check_FaultCnt = 0;
|
|
|
+ MC_RunLog1.HMI_Check_FaultCnt = 0;
|
|
|
+ MC_RunLog1.PBU_Check_FaultCnt = 0;
|
|
|
+ MC_RunLog1.T_PCB_Max = 0;
|
|
|
+ MC_RunLog1.T_PCB_Min = 0;
|
|
|
+ MC_RunLog1.ODO_Km = (ULONG)(MC_UpcInfo.stHistoryInfo.uwRealODOTripH << 16) + MC_UpcInfo.stHistoryInfo.uwRealODOTripL;
|
|
|
+ MC_RunLog1.T_Coil_Max = MC_UpcInfo.stHistoryInfo.swNTCTempMaxCe + 40;
|
|
|
+ MC_RunLog1.T_Coil_Min = MC_UpcInfo.stHistoryInfo.swNTCTempMinCe + 40;
|
|
|
+ MC_RunLog1.T_MCU_Max = 0;
|
|
|
+ MC_RunLog1.T_MCU_Min = 0;
|
|
|
+ MC_RunLog1.ODO_Time = (ULONG)(MC_UpcInfo.stHistoryInfo.uwRealODOTimeH << 16) + MC_UpcInfo.stHistoryInfo.uwRealODOTimeL;
|
|
|
+ SendData(ptUartTx, ID_MC_TO_CDL, MODE_REPORT, 0xA230, (UBYTE*)&MC_RunLog1.PowerOnCnt);
|
|
|
+
|
|
|
+ MC_RunLog2_Struct_t MC_RunLog2;
|
|
|
+ MC_RunLog2.MCU_FaultCnt = 0;
|
|
|
+ MC_RunLog2.CadenceSensor_FaultCnt = MC_UpcInfo.stHistoryInfo.uwCadSensorAlamTimes;
|
|
|
+ MC_RunLog2.GasSensor_FaultCnt = 0;
|
|
|
+ MC_RunLog2.MOS_ShortCircuit_FaultCnt = MC_UpcInfo.stHistoryInfo.uwAlamHOcurTimes;
|
|
|
+ MC_RunLog2.VoltageChangeOrOverSpeed_FaultCnt = 0;
|
|
|
+ MC_RunLog2.Circuit_FaultCnt = 0;
|
|
|
+ MC_RunLog2.TE_MCU_FaultCnt = 0;
|
|
|
+ MC_RunLog2.TE_Circuit_FaultCnt = 0;
|
|
|
+ SendData(ptUartTx, ID_MC_TO_CDL, MODE_REPORT, 0xAC10, (UBYTE*)&MC_RunLog2.MCU_FaultCnt);
|
|
|
break;
|
|
|
}
|
|
|
|
|
@@ -765,7 +803,6 @@ void DataProcess(USART_Buf_TypeDef* ptUartTx, UWORD ID, UBYTE Mode, UWORD Cmd, U
|
|
|
{
|
|
|
//执行复位,跳转进入Bootloader
|
|
|
SendData(ptUartTx, ID_MC_TO_CDL, MODE_REPORT, 0xA903, (UBYTE *)"ACK");
|
|
|
-// __set_FAULTMASK(1);//关闭所有中断
|
|
|
DL_WWDT_disablePower(WWDT0_INST);
|
|
|
NVIC_SystemReset();
|
|
|
}
|
|
@@ -776,35 +813,16 @@ void DataProcess(USART_Buf_TypeDef* ptUartTx, UWORD ID, UBYTE Mode, UWORD Cmd, U
|
|
|
if (strncmp("CLEAR", (char *)Data, DataLength) == 0)
|
|
|
{
|
|
|
DISABLE_IRQ;
|
|
|
-
|
|
|
- //flash_voParaInit();
|
|
|
flash_voErrorClear();//历史信息
|
|
|
que_voInit(&que_stFlashErrorLog);
|
|
|
- flash_voSysParaInit();
|
|
|
CodeHistoryParaDelete();
|
|
|
mn_voEEHistoryParaUpdate();
|
|
|
flash_voSysParaInit();
|
|
|
- flash_voSysParaWrite();//
|
|
|
- flash_HistoryWrite(); //
|
|
|
+ flash_voSysParaWrite();
|
|
|
+ flash_HistoryWrite();
|
|
|
ENABLE_IRQ;
|
|
|
- /* DISABLE_IRQ;
|
|
|
-
|
|
|
- i2c_voDefaultWriteBuffer();
|
|
|
- i2c_voInfoWrite2EE(&i2c_stTXCoef, &i2c_stTXOut);
|
|
|
-
|
|
|
- CodeHistoryParaDelete();
|
|
|
- mn_voEEHistoryParaUpdate();
|
|
|
- i2c_voHistoryWriteBuffer();
|
|
|
- i2c_voHistoryWrite2EE(&i2c_stTXCoef, &i2c_stTXOut);
|
|
|
-
|
|
|
- ENABLE_IRQ;*/
|
|
|
-
|
|
|
- // if (I2C_EEFltFlg != TRUE)
|
|
|
- {
|
|
|
- SendData(ptUartTx, ID_MC_TO_CDL, MODE_REPORT, 0xA903, (UBYTE *)"ACK");
|
|
|
- }
|
|
|
|
|
|
- //GPIO_ResetBits(POWER_LOCK_PORT,POWER_LOCK_PIN);
|
|
|
+ SendData(ptUartTx, ID_MC_TO_CDL, MODE_REPORT, 0xA903, (UBYTE *)"ACK");
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
@@ -813,25 +831,13 @@ void DataProcess(USART_Buf_TypeDef* ptUartTx, UWORD ID, UBYTE Mode, UWORD Cmd, U
|
|
|
if (strncmp("RECOVERY", (char *)Data, DataLength) == 0)
|
|
|
{
|
|
|
DISABLE_IRQ;
|
|
|
-
|
|
|
- //flash_voParaInit();
|
|
|
- // flash_voWrite();
|
|
|
- flash_voSysParaInit();
|
|
|
flash_voSysParaInit();
|
|
|
- flash_voSysParaWrite();//tbd
|
|
|
-
|
|
|
+ flash_voSysParaWrite();
|
|
|
ENABLE_IRQ;
|
|
|
- /*DISABLE_IRQ;
|
|
|
- i2c_voDefaultWriteBuffer();
|
|
|
- i2c_voInfoWrite2EE(&i2c_stTXCoef, &i2c_stTXOut);
|
|
|
- cp_stFlg.ParaSaveEEFlg = FALSE;
|
|
|
- ENABLE_IRQ;*/
|
|
|
+
|
|
|
cp_stFlg.ParaSaveEEFlg = FALSE;
|
|
|
- // if (I2C_EEFltFlg != TRUE)
|
|
|
- {
|
|
|
- SendData(ptUartTx, ID_MC_TO_CDL, MODE_REPORT, 0xA903, (UBYTE *)"ACK");
|
|
|
- }
|
|
|
- //GPIO_ResetBits(POWER_LOCK_PORT,POWER_LOCK_PIN);
|
|
|
+ SendData(ptUartTx, ID_MC_TO_CDL, MODE_REPORT, 0xA903, (UBYTE *)"ACK");
|
|
|
+
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
@@ -898,12 +904,12 @@ void DataProcess(USART_Buf_TypeDef* ptUartTx, UWORD ID, UBYTE Mode, UWORD Cmd, U
|
|
|
{
|
|
|
do
|
|
|
{
|
|
|
- uint32_t DataLength, AddressBegin, AddressEnd;
|
|
|
- AddressBegin = (uint32_t)((Data[0] << 24) + (Data[1] << 16) + (Data[2] << 8) + (Data[3]));
|
|
|
- AddressEnd = (uint32_t)((Data[4] << 24) + (Data[5] << 16) + (Data[6] << 8) + (Data[7]));
|
|
|
+ ULONG DataLength, AddressBegin, AddressEnd;
|
|
|
+ AddressBegin = (ULONG)((Data[0] << 24) + (Data[1] << 16) + (Data[2] << 8) + (Data[3]));
|
|
|
+ AddressEnd = (ULONG)((Data[4] << 24) + (Data[5] << 16) + (Data[6] << 8) + (Data[7]));
|
|
|
|
|
|
- if(((AddressBegin <= AddressEnd) &&(AddressBegin>0) &&(AddressEnd<=(uint32_t)(0x0001FFFF)))
|
|
|
- ||((AddressBegin <= AddressEnd) &&(AddressBegin>=(uint32_t)(0x20200000)) &&(AddressEnd<(uint32_t)(0x20208000))) )
|
|
|
+ if(((AddressBegin <= AddressEnd) && (AddressBegin>0) && (AddressEnd<=(ULONG)(0x0001FFFF)))
|
|
|
+ ||((AddressBegin <= AddressEnd) && (AddressBegin >= (ULONG)(0x20200000)) && (AddressEnd < (ULONG)(0x20208000))) )
|
|
|
{
|
|
|
DataLength = AddressEnd - AddressBegin+ 1;
|
|
|
|
|
@@ -926,7 +932,7 @@ void DataProcess(USART_Buf_TypeDef* ptUartTx, UWORD ID, UBYTE Mode, UWORD Cmd, U
|
|
|
MC_ConfigParam2_Struct_t MC_ConfigParam2;
|
|
|
MC_ConfigParam2.ZeroAngle_Pitch = 0;
|
|
|
MC_ConfigParam2.ZeroAngle_Roll = 0;
|
|
|
- MC_ConfigParam2.UseAttitudeAngle_Flag = 0xAA;
|
|
|
+ MC_ConfigParam2.UseAttitudeAngle_Flag = 0x55;
|
|
|
MC_ConfigParam2.MC_Light_Mode = MC_UpcInfo.stBikeInfo.uwLightConfig >> 12;
|
|
|
MC_ConfigParam2.HeadLightVol = MC_UpcInfo.stBikeInfo.uwLightConfig;
|
|
|
MC_ConfigParam2.TailLightVol = (MC_UpcInfo.stBikeInfo.uwLightConfig >> 8) & 0x0F;
|