|
@@ -646,40 +646,6 @@ void DataProcess(USART_Buf_TypeDef* ptUartTx, UWORD ID, UBYTE Mode, UWORD Cmd, U
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- case 0x3000: //按小牙盘原协议返回控制参数2
|
|
|
- {
|
|
|
- MC_ConfigParam2_Struct_t MC_ConfigParam2;
|
|
|
- MC_ConfigParam2.ZeroAngle_Pitch = 0;
|
|
|
- MC_ConfigParam2.ZeroAngle_Roll = 0;
|
|
|
- MC_ConfigParam2.UseAttitudeAngle_Flag = 0xAA;
|
|
|
- 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;
|
|
|
- MC_ConfigParam2.u16OverspeedWarnVal = 0;
|
|
|
- MC_ConfigParam2.u16EffectVal = MC_UpcInfo.stBikeInfo2.uwRearLightDuty;
|
|
|
- MC_ConfigParam2.u16Prediv = MC_UpcInfo.stBikeInfo2.uwRearLightCycle;
|
|
|
- MC_ConfigParam2.SpeedLimitStartAdj = 0;
|
|
|
- MC_ConfigParam2.SpeedLimitEndAdj = 0;
|
|
|
- MC_ConfigParam2.SpeedLimitAdj = MC_UpcInfo.stBikeInfo2.swDeltaBikeSpeedLimit;
|
|
|
- MC_ConfigParam2.RS1 = 0;
|
|
|
- MC_ConfigParam2.UserAdjParam2_ECO.MaxCurrent_K_GAIN = 100;
|
|
|
- MC_ConfigParam2.UserAdjParam2_ECO.MaxTorque_K_GAIN = 100;
|
|
|
- MC_ConfigParam2.UserAdjParam2_NORM.MaxCurrent_K_GAIN = 100;
|
|
|
- MC_ConfigParam2.UserAdjParam2_NORM.MaxTorque_K_GAIN = 100;
|
|
|
- MC_ConfigParam2.UserAdjParam2_SPORT.MaxCurrent_K_GAIN = 100;
|
|
|
- MC_ConfigParam2.UserAdjParam2_SPORT.MaxTorque_K_GAIN = 100;
|
|
|
- MC_ConfigParam2.UserAdjParam2_TURBO.MaxCurrent_K_GAIN = 100;
|
|
|
- MC_ConfigParam2.UserAdjParam2_TURBO.MaxTorque_K_GAIN = 100;
|
|
|
- MC_ConfigParam2.UserAdjParam2_SMART.MaxCurrent_K_GAIN = 100;
|
|
|
- MC_ConfigParam2.UserAdjParam2_SMART.MaxTorque_K_GAIN = 100;
|
|
|
- MC_ConfigParam2.RS2[0] = 0;
|
|
|
- MC_ConfigParam2.RS2[1] = 0;
|
|
|
- MC_ConfigParam2.RS2[2] = 0;
|
|
|
- MC_ConfigParam2.RS2[3] = 0;
|
|
|
- SendData(ptUartTx, ID_MC_TO_CDL, MODE_REPORT, 0xAD20, (UBYTE*)&MC_ConfigParam2.ZeroAngle_Pitch);
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
case 0x1E00: //查询历史信息
|
|
|
{
|
|
|
SendData(ptUartTx, ID_MC_TO_CDL, MODE_REPORT, 0xB74C, (UBYTE *)&MC_UpcInfo.stHistoryInfo.uwOpenTimes);
|
|
@@ -691,6 +657,15 @@ void DataProcess(USART_Buf_TypeDef* ptUartTx, UWORD ID, UBYTE Mode, UWORD Cmd, U
|
|
|
SendData(ptUartTx, ID_MC_TO_CDL, MODE_REPORT, 0xA520, (UBYTE *)MC_MacInfo.Manufacturer);
|
|
|
break;
|
|
|
}
|
|
|
+
|
|
|
+ case 0x2000: //小牙盘原单力矩读零点
|
|
|
+ {
|
|
|
+ #ifndef TORSENSOR3NUM
|
|
|
+ UBYTE TempData[24] = {0,};
|
|
|
+ SendData(ptUartTx, ID_MC_TO_CDL, MODE_REPORT, 0xA318, (UBYTE*)TempData);
|
|
|
+ #endif
|
|
|
+ break;
|
|
|
+ }
|
|
|
|
|
|
case 0x2210: //写入电机型号
|
|
|
{
|
|
@@ -816,6 +791,54 @@ void DataProcess(USART_Buf_TypeDef* ptUartTx, UWORD ID, UBYTE Mode, UWORD Cmd, U
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
+ 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;
|
|
|
+ MC_UpcInfo.stSensorInfo.uwBikeTor4StepADC = 375 * Data[0] / 100;
|
|
|
+ cp_stFlg.ParaSaveEEFlg = TRUE;
|
|
|
+ cp_stFlg.ParaUpdateFlg = TRUE;
|
|
|
+ cp_stFlg.ParaSensorInfoUpdateFlg = TRUE;
|
|
|
+ cp_stFlg.ParaAssistUpdateFinishFlg = TRUE;
|
|
|
+ SendData(ptUartTx, ID_MC_BC, MODE_REPORT, 0xA903, (UBYTE *)"ACK");
|
|
|
+ #endif
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ case 0x2B02: //小牙盘原单力矩和三力矩写入力矩传感器启动值
|
|
|
+ {
|
|
|
+ //更新13Nm采集值
|
|
|
+ UWORD DataTemp = 0;
|
|
|
+ DataTemp = Data[0] + (UWORD)(Data[1] << 8);
|
|
|
+ MC_UpcInfo.stSensorInfo.uwBikeTor1StepADC = MC_UpcInfo.stSensorInfo.uwBikeTor1StepADC * (DataTemp * 10 / 28) / MC_UpcInfo.stSensorInfo.uwBikeTor1StepRealNm;
|
|
|
+ //线性修正,结合75Nm标定值计算35Nm和55Nm采集值
|
|
|
+ ULONG k;
|
|
|
+ k = ((ULONG)(MC_UpcInfo.stSensorInfo.uwBikeTor4StepADC - MC_UpcInfo.stSensorInfo.uwBikeTor1StepADC) << 14) / (750 - 130);
|
|
|
+ MC_UpcInfo.stSensorInfo.uwBikeTor2StepADC = MC_UpcInfo.stSensorInfo.uwBikeTor1StepADC + (((350 - 130) * k) >> 14);
|
|
|
+ MC_UpcInfo.stSensorInfo.uwBikeTor3StepADC = MC_UpcInfo.stSensorInfo.uwBikeTor1StepADC + (((550 - 130) * k) >> 14);
|
|
|
+ cp_stFlg.ParaSaveEEFlg = TRUE;
|
|
|
+ cp_stFlg.ParaUpdateFlg = TRUE;
|
|
|
+ cp_stFlg.ParaSensorInfoUpdateFlg = TRUE;
|
|
|
+ cp_stFlg.ParaAssistUpdateFinishFlg = TRUE;
|
|
|
+ SendData(ptUartTx, ID_MC_BC, MODE_REPORT, 0xA903, (UBYTE *)"ACK");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
case 0x2C01: //控制指令
|
|
|
{
|
|
|
MC_MotorSPD_rpm_Percent = *Data;
|
|
@@ -848,6 +871,109 @@ void DataProcess(USART_Buf_TypeDef* ptUartTx, UWORD ID, UBYTE Mode, UWORD Cmd, U
|
|
|
SendData(ptUartTx, ID_MC_BC, MODE_REPORT, 0x1510, (UBYTE *)&MC_RideLog.ODO_Km);
|
|
|
break;
|
|
|
}
|
|
|
+
|
|
|
+ case 0x3000: //按小牙盘原协议返回控制参数2
|
|
|
+ {
|
|
|
+ MC_ConfigParam2_Struct_t MC_ConfigParam2;
|
|
|
+ MC_ConfigParam2.ZeroAngle_Pitch = 0;
|
|
|
+ MC_ConfigParam2.ZeroAngle_Roll = 0;
|
|
|
+ MC_ConfigParam2.UseAttitudeAngle_Flag = 0xAA;
|
|
|
+ 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;
|
|
|
+ MC_ConfigParam2.u16OverspeedWarnVal = 0;
|
|
|
+ MC_ConfigParam2.u16EffectVal = MC_UpcInfo.stBikeInfo2.uwRearLightDuty;
|
|
|
+ MC_ConfigParam2.u16Prediv = MC_UpcInfo.stBikeInfo2.uwRearLightCycle;
|
|
|
+ MC_ConfigParam2.SpeedLimitStartAdj = 0;
|
|
|
+ MC_ConfigParam2.SpeedLimitEndAdj = 0;
|
|
|
+ MC_ConfigParam2.SpeedLimitAdj = MC_UpcInfo.stBikeInfo2.swDeltaBikeSpeedLimit;
|
|
|
+ MC_ConfigParam2.RS1 = 0;
|
|
|
+ MC_ConfigParam2.UserAdjParam2_ECO.MaxCurrent_K_GAIN = 100;
|
|
|
+ MC_ConfigParam2.UserAdjParam2_ECO.MaxTorque_K_GAIN = 100;
|
|
|
+ MC_ConfigParam2.UserAdjParam2_NORM.MaxCurrent_K_GAIN = 100;
|
|
|
+ MC_ConfigParam2.UserAdjParam2_NORM.MaxTorque_K_GAIN = 100;
|
|
|
+ MC_ConfigParam2.UserAdjParam2_SPORT.MaxCurrent_K_GAIN = 100;
|
|
|
+ MC_ConfigParam2.UserAdjParam2_SPORT.MaxTorque_K_GAIN = 100;
|
|
|
+ MC_ConfigParam2.UserAdjParam2_TURBO.MaxCurrent_K_GAIN = 100;
|
|
|
+ MC_ConfigParam2.UserAdjParam2_TURBO.MaxTorque_K_GAIN = 100;
|
|
|
+ MC_ConfigParam2.UserAdjParam2_SMART.MaxCurrent_K_GAIN = 100;
|
|
|
+ MC_ConfigParam2.UserAdjParam2_SMART.MaxTorque_K_GAIN = 100;
|
|
|
+ MC_ConfigParam2.RS2[0] = 0;
|
|
|
+ MC_ConfigParam2.RS2[1] = 0;
|
|
|
+ MC_ConfigParam2.RS2[2] = 0;
|
|
|
+ MC_ConfigParam2.RS2[3] = 0;
|
|
|
+ SendData(ptUartTx, ID_MC_TO_CDL, MODE_REPORT, 0xAD20, (UBYTE*)&MC_ConfigParam2.ZeroAngle_Pitch);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ case 0x3201: //小牙盘原三力矩读零点
|
|
|
+ {
|
|
|
+ #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;
|
|
|
+ }
|
|
|
+
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+
|
|
|
+ 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;
|
|
|
+ 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;
|
|
|
+ }
|
|
|
|
|
|
case 0x3909: // 历史信息清除
|
|
|
{
|
|
@@ -873,13 +999,13 @@ void DataProcess(USART_Buf_TypeDef* ptUartTx, UWORD ID, UBYTE Mode, UWORD Cmd, U
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
- ////////////////////////////////////////
|
|
|
+
|
|
|
case 0x3A00: //读取马达信息
|
|
|
{
|
|
|
SendData(ptUartTx, ID_MC_TO_CDL, MODE_REPORT, 0xB226, (UBYTE *)&MC_UpcInfo.stMotorInfo.uwPolePairs);
|
|
|
break;
|
|
|
}
|
|
|
- case 0x3B10:
|
|
|
+ case 0x3B10: //写入骑行ODO和TRIP
|
|
|
{
|
|
|
memcpy(&MC_RideLog.ODO_Km, Data, DataLength);
|
|
|
|