|
@@ -595,16 +595,16 @@ 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 == 0) ? 0x55 : 0xAA;
|
|
|
+ MC_ConfigParam1.GasCtrlMode_Param = MC_UpcInfo.stBikeInfo.uwThrottleMaxSpdKmH;
|
|
|
MC_ConfigParam1.StarModel = MC_UpcInfo.stBikeInfo.uwStartMode;
|
|
|
MC_ConfigParam1.StopTime = 100;
|
|
|
- MC_ConfigParam1.SpeedLimit = MC_UpcInfo.stAssistInfo.uwAssistLimitBikeSpdStart;
|
|
|
+ MC_ConfigParam1.SpeedLimit = MC_UpcInfo.stAssistInfo.uwAssistLimitBikeSpdStart / 10;
|
|
|
MC_ConfigParam1.Deceleration = 3;
|
|
|
MC_ConfigParam1.TeethNum_F = MC_UpcInfo.stBikeInfo.uwNmFrontChainring;
|
|
|
MC_ConfigParam1.TeethNum_B = MC_UpcInfo.stBikeInfo.uwNmBackChainring;
|
|
|
MC_ConfigParam1.CurrentLimit = MC_UpcInfo.stTestParaInfo.uwPwrLimit / MC_UpcInfo.stMotorInfo.uwRVolV;
|
|
|
- MC_ConfigParam1.TempTH_Alarm = MC_UpcInfo.stMContorlInfo.uwPwrLimitStartCe;
|
|
|
- MC_ConfigParam1.TempTH_Protect = MC_UpcInfo.stMContorlInfo.uwAlamOverHeatCe;
|
|
|
+ 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.WheelSize = MC_UpcInfo.stBikeInfo.uwWheelPerimeter;
|
|
|
MC_ConfigParam1.SerialNum = MC_UpcInfo.stTestParaInfo.RunModelSelect;
|
|
@@ -629,6 +629,40 @@ void DataProcess(USART_Buf_TypeDef* ptUartTx, UWORD ID, UBYTE Mode, UWORD Cmd, U
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
+ case 0x1B20: //按小牙盘原协议写入部分控制参数
|
|
|
+ {
|
|
|
+ MC_UpcInfo.stBikeInfo.uwThrottleMaxSpdKmH = Data[0];
|
|
|
+ MC_UpcInfo.stBikeInfo.uwStartMode = Data[1];
|
|
|
+ MC_UpcInfo.stAssistInfo.uwAssistLimitBikeSpdStart = Data[4] * 10;
|
|
|
+ MC_UpcInfo.stAssistInfo.uwAssistLimitBikeSpdStop = Data[4] * 10 + 20;
|
|
|
+ MC_UpcInfo.stBikeInfo.uwNmFrontChainring = Data[6];
|
|
|
+ MC_UpcInfo.stBikeInfo.uwNmBackChainring = Data[7];
|
|
|
+ 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.stBikeInfo.uwSaveFlg = TRUE;
|
|
|
+ MC_UpcInfo.stAssistInfo.uwSaveFlg = TRUE;
|
|
|
+ MC_UpcInfo.stTestParaInfo.uwSaveFlg = TRUE;
|
|
|
+ MC_UpcInfo.stSensorInfo.uwSaveFlg = TRUE;
|
|
|
+ MC_UpcInfo.stMContorlInfo.uwSaveFlg = TRUE;
|
|
|
+
|
|
|
+ cp_stFlg.ParaSaveEEFlg = TRUE;
|
|
|
+ cp_stFlg.ParaUpdateFlg = TRUE;
|
|
|
+ cp_stFlg.ParaBikeInfoUpdateFlg = TRUE;
|
|
|
+ cp_stFlg.ParaAInfoUpdateFlg = TRUE;
|
|
|
+ cp_stFlg.ParaAssistUpdateFinishFlg = TRUE;
|
|
|
+ cp_stFlg.ParaSensorInfoUpdateFlg = TRUE;
|
|
|
+ cp_stFlg.ParaMCInfoUpdateFlg = TRUE;
|
|
|
+ cp_stFlg.ParaMotorDriveUpdateFinishFlg = TRUE;
|
|
|
+ cp_stFlg.TestParaInfoUpdateFlg =TRUE;
|
|
|
+ SendData(ptUartTx, ID_MC_BC, MODE_REPORT, 0xA903, (UBYTE *)"ACK");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
case 0x1C00: //按小牙盘原协议返回马达参数
|
|
|
{
|
|
|
MC_MotorParam_Struct_t MC_MotorParam;
|
|
@@ -646,6 +680,27 @@ void DataProcess(USART_Buf_TypeDef* ptUartTx, UWORD ID, UBYTE Mode, UWORD Cmd, U
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
+ case 0x1D10: //按小牙盘原协议写入马达参数
|
|
|
+ {
|
|
|
+ MC_UpcInfo.stMotorInfo.uwRPwrWt = (UWORD)(Data[0] + (Data[1] << 8));
|
|
|
+ MC_UpcInfo.stMotorInfo.uwRSpdRpm = (UWORD)(Data[2] + (Data[3] << 8));
|
|
|
+ MC_UpcInfo.stMotorInfo.uwRsmOhm = (UWORD)(Data[4] + (Data[5] << 8));
|
|
|
+ MC_UpcInfo.stMotorInfo.uwLquH = (UWORD)(Data[6] + (Data[7] << 8));
|
|
|
+ MC_UpcInfo.stMotorInfo.uwLduH = (UWORD)(Data[8] + (Data[9] << 8));
|
|
|
+ MC_UpcInfo.stMotorInfo.uwFluxmWb = ((UWORD)(Data[10] + (Data[11] << 8)) * 45189 / Data[13]) >> 13;//Flux = V(@1000rpm) / 1.732 / (2 * 3.14 * 1000 * p / 60)
|
|
|
+ MC_UpcInfo.stMotorInfo.uwRVolV = (UWORD)(Data[12] * 10);
|
|
|
+ MC_UpcInfo.stMotorInfo.uwPolePairs = Data[13];
|
|
|
+
|
|
|
+ MC_UpcInfo.stMotorInfo.uwSaveFlg = TRUE;
|
|
|
+
|
|
|
+ cp_stFlg.ParaSaveEEFlg = TRUE;
|
|
|
+ cp_stFlg.ParaUpdateFlg = TRUE;
|
|
|
+ cp_stFlg.ParaAssistUpdateFinishFlg = TRUE;
|
|
|
+ cp_stFlg.ParaMInfoUpdateFlg = TRUE;
|
|
|
+ cp_stFlg.ParaMotorDriveUpdateFinishFlg = TRUE;
|
|
|
+ SendData(ptUartTx, ID_MC_BC, MODE_REPORT, 0xA903, (UBYTE *)"ACK");
|
|
|
+ }
|
|
|
+
|
|
|
case 0x1E00: //查询历史信息
|
|
|
{
|
|
|
SendData(ptUartTx, ID_MC_TO_CDL, MODE_REPORT, 0xB74C, (UBYTE *)&MC_UpcInfo.stHistoryInfo.uwOpenTimes);
|
|
@@ -660,10 +715,8 @@ void DataProcess(USART_Buf_TypeDef* ptUartTx, UWORD ID, UBYTE Mode, UWORD Cmd, U
|
|
|
|
|
|
case 0x2000: //小牙盘原单力矩读零点
|
|
|
{
|
|
|
- #ifndef TORSENSOR3NUM
|
|
|
UBYTE TempData[24] = {0,};
|
|
|
SendData(ptUartTx, ID_MC_TO_CDL, MODE_REPORT, 0xA318, (UBYTE*)TempData);
|
|
|
- #endif
|
|
|
break;
|
|
|
}
|
|
|
|
|
@@ -792,21 +845,18 @@ void DataProcess(USART_Buf_TypeDef* ptUartTx, UWORD ID, UBYTE Mode, UWORD Cmd, U
|
|
|
}
|
|
|
|
|
|
case 0x2900: //小牙盘原单力矩查询校正信息
|
|
|
- {
|
|
|
- #ifndef TORSENSOR3NUM
|
|
|
+ {
|
|
|
UBYTE DataTemp[4]; //Byte1~Byte2:启动值,取13Nm采集值;Byte3~Byte4:校正系数,取75Nm采集值/375
|
|
|
DataTemp[0] = MC_UpcInfo.stSensorInfo.uwBikeTor1StepADC;
|
|
|
DataTemp[1] = MC_UpcInfo.stSensorInfo.uwBikeTor1StepADC >> 8;
|
|
|
DataTemp[2] = MC_UpcInfo.stSensorInfo.uwBikeTor4StepADC * 100 / 375; //AD * 100 / 400
|
|
|
DataTemp[3] = 0;
|
|
|
SendData(ptUartTx, ID_MC_TO_CDL, MODE_REPORT, 0xAA04, (UBYTE*)DataTemp);
|
|
|
- #endif
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
case 0x2A01: //小牙盘原单力矩写入力矩传感器标定系数,根据系数更新13Nm, 35Nm, 55Nm, 75Nm默认系数
|
|
|
{
|
|
|
- #ifndef TORSENSOR3NUM
|
|
|
MC_UpcInfo.stSensorInfo.uwBikeTor1StepADC = 65 * Data[0] / 100;
|
|
|
MC_UpcInfo.stSensorInfo.uwBikeTor2StepADC = 175 * Data[0] / 100;
|
|
|
MC_UpcInfo.stSensorInfo.uwBikeTor3StepADC = 275 * Data[0] / 100;
|
|
@@ -816,11 +866,10 @@ void DataProcess(USART_Buf_TypeDef* ptUartTx, UWORD ID, UBYTE Mode, UWORD Cmd, U
|
|
|
cp_stFlg.ParaSensorInfoUpdateFlg = TRUE;
|
|
|
cp_stFlg.ParaAssistUpdateFinishFlg = TRUE;
|
|
|
SendData(ptUartTx, ID_MC_BC, MODE_REPORT, 0xA903, (UBYTE *)"ACK");
|
|
|
- #endif
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- case 0x2B02: //小牙盘原单力矩和三力矩写入力矩传感器启动值
|
|
|
+ case 0x2B02: //小牙盘原单力矩写入启动值
|
|
|
{
|
|
|
//更新13Nm采集值
|
|
|
UWORD DataTemp = 0;
|
|
@@ -906,72 +955,23 @@ void DataProcess(USART_Buf_TypeDef* ptUartTx, UWORD ID, UBYTE Mode, UWORD Cmd, U
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- case 0x3201: //小牙盘原三力矩读零点
|
|
|
+ case 0x3120: //按小牙盘原协议写入控制参数2
|
|
|
{
|
|
|
- #ifdef TORSENSOR3NUM
|
|
|
- UBYTE DataTemp[26] = {0, };
|
|
|
- DataTemp[0] = Data[0];
|
|
|
- switch(DataTemp[0])
|
|
|
- {
|
|
|
- case 1:
|
|
|
- {
|
|
|
- DataTemp[23] = MC_UpcInfo.stSensorInfo.uwTorSensorOffsetNow1;
|
|
|
- DataTemp[24] = MC_UpcInfo.stSensorInfo.uwTorSensorOffsetNow1 >> 8;
|
|
|
- break;
|
|
|
- }
|
|
|
- case 2:
|
|
|
- {
|
|
|
- DataTemp[23] = MC_UpcInfo.stSensorInfo.uwTorSensorOffsetNow2;
|
|
|
- DataTemp[24] = MC_UpcInfo.stSensorInfo.uwTorSensorOffsetNow2 >> 8;
|
|
|
- break;
|
|
|
- }
|
|
|
- case 3:
|
|
|
- {
|
|
|
- DataTemp[23] = MC_UpcInfo.stSensorInfo.uwTorSensorOffsetNow3;
|
|
|
- DataTemp[24] = MC_UpcInfo.stSensorInfo.uwTorSensorOffsetNow3 >> 8;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- SendData(ptUartTx, ID_MC_TO_CDL, MODE_REPORT, 0xAE1A, DataTemp);
|
|
|
- #endif
|
|
|
- break;
|
|
|
- }
|
|
|
+ MC_UpcInfo.stBikeInfo.uwLightConfig = 0x0000;
|
|
|
+ MC_UpcInfo.stBikeInfo.uwLightConfig |= ((UWORD)(Data[5] << 12) & 0xF000); //Bit15~Bit12:尾灯模式
|
|
|
+ MC_UpcInfo.stBikeInfo.uwLightConfig |= (UWORD)(Data[6] & 0x00FF); //Bit7~Bit0:前灯电压
|
|
|
+ MC_UpcInfo.stBikeInfo.uwLightConfig |= ((UWORD)(Data[7] << 8) & 0x0F00); //Bit11~Bit8:尾灯电压
|
|
|
+ MC_UpcInfo.stBikeInfo2.uwRearLightDuty = (UWORD)(Data[10] + (Data[11] << 8));
|
|
|
+ MC_UpcInfo.stBikeInfo2.uwRearLightCycle = (UWORD)(Data[12] + (Data[13] << 8));
|
|
|
|
|
|
- case 0x3301: //小牙盘原三力矩读校正系数
|
|
|
- {
|
|
|
- #ifdef TORSENSOR3NUM
|
|
|
- UBYTE DataTemp[2] = {0, };
|
|
|
- DataTemp[0] = Data[0];
|
|
|
- DataTemp[1] = MC_UpcInfo.stSensorInfo.uwBikeTor4StepADC * 100 / 375; //AD * 100 / 400
|
|
|
- SendData(ptUartTx, ID_MC_TO_CDL, MODE_REPORT, 0xAF02, DataTemp);
|
|
|
- #endif
|
|
|
- break;
|
|
|
- }
|
|
|
+ MC_UpcInfo.stBikeInfo.uwSaveFlg = TRUE;
|
|
|
+ MC_UpcInfo.stBikeInfo2.uwSaveFlg = TRUE;
|
|
|
|
|
|
- case 0x3402: //小牙盘原三力矩写校正系数
|
|
|
- {
|
|
|
- #ifdef TORSENSOR3NUM
|
|
|
- MC_UpcInfo.stSensorInfo.uwBikeTor1StepADC = 65 * Data[1] / 100;
|
|
|
- MC_UpcInfo.stSensorInfo.uwBikeTor2StepADC = 175 * Data[1] / 100;
|
|
|
- MC_UpcInfo.stSensorInfo.uwBikeTor3StepADC = 275 * Data[1] / 100;
|
|
|
- MC_UpcInfo.stSensorInfo.uwBikeTor4StepADC = 375 * Data[1] / 100;
|
|
|
cp_stFlg.ParaSaveEEFlg = TRUE;
|
|
|
cp_stFlg.ParaUpdateFlg = TRUE;
|
|
|
- cp_stFlg.ParaSensorInfoUpdateFlg = TRUE;
|
|
|
- cp_stFlg.ParaAssistUpdateFinishFlg = TRUE;
|
|
|
+ cp_stFlg.ParaBikeInfoUpdateFlg = TRUE;
|
|
|
+ cp_stFlg.ParaBikeInfo2UpdateFlg = TRUE;
|
|
|
SendData(ptUartTx, ID_MC_BC, MODE_REPORT, 0xA903, (UBYTE *)"ACK");
|
|
|
- #endif
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- case 0x3500: //小牙盘原三力矩查询启动值
|
|
|
- {
|
|
|
- #ifdef TORSENSOR3NUM
|
|
|
- UBYTE DataTemp[2]; //启动值,取13Nm采集值
|
|
|
- DataTemp[0] = MC_UpcInfo.stSensorInfo.uwBikeTor1StepADC;
|
|
|
- DataTemp[1] = MC_UpcInfo.stSensorInfo.uwBikeTor1StepADC >> 8;
|
|
|
- SendData(ptUartTx, ID_MC_TO_CDL, MODE_REPORT, 0xB002, DataTemp);
|
|
|
- #endif
|
|
|
break;
|
|
|
}
|
|
|
|