Forráskód Böngészése

速度来源设为通信时,根据变速器的信号计算车速和里程。

Dail 1 éve
szülő
commit
bda92ad840

+ 3 - 3
MDK-ARM/QD007A_CTL_APP.uvprojx

@@ -121,7 +121,7 @@
             <Oh166RecLen>16</Oh166RecLen>
           </OPTHX>
           <Simulator>
-            <UseSimulator>0</UseSimulator>
+            <UseSimulator>1</UseSimulator>
             <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
             <RunToMain>1</RunToMain>
             <RestoreBreakpoints>1</RestoreBreakpoints>
@@ -133,7 +133,7 @@
             <RestoreSysVw>1</RestoreSysVw>
           </Simulator>
           <Target>
-            <UseTarget>1</UseTarget>
+            <UseTarget>0</UseTarget>
             <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
             <RunToMain>1</RunToMain>
             <RestoreBreakpoints>1</RestoreBreakpoints>
@@ -146,7 +146,7 @@
             <UsePdscDebugDescription>1</UsePdscDebugDescription>
           </Target>
           <RunDebugAfterBuild>0</RunDebugAfterBuild>
-          <TargetSelection>12</TargetSelection>
+          <TargetSelection>9</TargetSelection>
           <SimDlls>
             <CpuDll></CpuDll>
             <CpuDllArguments></CpuDllArguments>

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 2384 - 2384
MDK-ARM/QD007A_CTL_APP/QD007A_CTL_APP_CRC.hex


BIN
MDK-ARM/bin/QD007A_CTL_APP.bin


+ 12 - 1
User/Src/enviolo_can.c

@@ -76,6 +76,17 @@ void GearBox_CanProcess(GearBox_CanData_Struct_t* CanData)
 			EnvioloGearInfo1.Bike_Speed = CanData->Data[2];
 			EnvioloGearInfo1.Battery_Vol = CanData->Data[3];
 			EnvioloGearInfo1.Wheel_Rpm = (uint16_t)(CanData->Data[4] << 8) + CanData->Data[5];
+			//更新轮速,仅配置为通过通信获取车轮周期时更新
+			if(MC_ConfigParam1.SpeedSignal == MC_SPEED_COMMUNICATION)
+			{
+				if(EnvioloGearInfo1.Wheel_Rpm == 0)
+					MC_SpeedSensorData.DiffTime_ms = 0xFFFF;
+				else
+				{
+				  MC_SpeedSensorData.DiffTime_ms = 60000 / EnvioloGearInfo1.Wheel_Rpm; //周期 = 60 / 转速(rpm) * 1000 (ms)
+				  MC_SpeedSensorData.IsTrigFlag = TRUE;	
+				}				
+			}
 			EnvioloGearInfo1.StatusFlag.Flag = CanData->Data[6];
 			EnvioloGearInfo1.ErrorFlag.Flag = CanData->Data[7];
 			//变速器校准成功标志1
@@ -91,7 +102,7 @@ void GearBox_CanProcess(GearBox_CanData_Struct_t* CanData)
 		}
 		else if(CanData->ID == ID_ENVIOLO_TO_MC_2)
 		{
-            memcpy((uint8_t*)&EnvioloGearInfo2.PCB_Version_Major, (uint8_t*)CanData->Data, 8);
+      memcpy((uint8_t*)&EnvioloGearInfo2.PCB_Version_Major, (uint8_t*)CanData->Data, 8);
 		}
 		CanData->RefreshFlag = FALSE;
 	}

+ 3 - 3
User/Src/tasks.c

@@ -183,11 +183,11 @@ void MC_RunInfo_Update(void)
 		if(MC_ConfigParam1.SpeedSignal == MC_SPEED_COMMUNICATION) //根据通信获取的车轮旋转周期计算
 		{
 		  static uint32_t WheelTurnCount_Temp = 0;
-			//运算周期是200ms,根据车轮旋转周期计算200ms内旋转的圈数,存在小数,放大100
+			//运算周期是200ms,根据车轮旋转周期计算200ms内旋转的圈数,存在小数,放大1024
 			if(MC_SpeedSensorData.IsStopFlag == FALSE)
 			{
-				WheelTurnCount_Temp += 20000 / MC_SpeedSensorData.DiffTime_ms;
-				MC_SpeedSensorData.WheelTurnCount = WheelTurnCount_Temp / 100;			
+				WheelTurnCount_Temp += 819200 / MC_SpeedSensorData.DiffTime_ms;
+				MC_SpeedSensorData.WheelTurnCount = WheelTurnCount_Temp >> 12;			
 			}
 		}
 		else if(MC_ConfigParam1.SpeedSignal == MC_SPEED_CADENCE_CAL) //根据踏频计算

Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott