浏览代码

解决踏频高于130rpm后计算值减半问题,对发送的踏频值增加滤波。

dd 3 月之前
父节点
当前提交
cb8ef7d83a
共有 2 个文件被更改,包括 5 次插入4 次删除
  1. 2 2
      3.BasicFunction/Source/Cadence.c
  2. 3 2
      3.BasicFunction/Source/canAppl.c

+ 2 - 2
3.BasicFunction/Source/Cadence.c

@@ -245,9 +245,9 @@ static void cadence_voCadenceHighFrequencyWork(UWORD source)
             cadence_stFreGetOut.uwCaputureNumCnt = 2;
            // cadence_stFreGetOut.uwCaputure2Cnt = (UWORD)CapValutCadence_CCRx();//(UWORD)iCap_GetCaptureValue(HW_BIKESPD_CAD_CAP, CAP_CH(2));
 
-            ulCaputureCntErr = (((ULONG)cadence_stFreGetOut.uwCaputureOverflowCnt * (72 * cadence_stFreGetCof.uwTimerUnit))  )>>8;
+            ulCaputureCntErr = (((ULONG)cadence_stFreGetOut.uwCaputureOverflowCnt * (72 * cadence_stFreGetCof.uwTimerUnit)))>>8;
             cadence_stFreGetOut.ulCaputureCntErr = ulCaputureCntErr;
-            if (cadence_stFreGetOut.ulCaputureCntErr > 2000)//1000
+            if (cadence_stFreGetOut.ulCaputureCntErr > 1000)//1000
             {
                 tmp_uwFrequencyPu = (UWORD)(((SQWORD)72000000 << 12) / (((SQWORD)cadence_stFreGetOut.ulCaputureCntErr + cadence_stFreGetOut.ulTimer2CntErr) * cadence_stFreGetCof.uwNumbersPulses * FBASE));
                 cadence_stFreGetOut.uwCntErrLast = cadence_stFreGetOut.uwCaputureOverflowCnt;

+ 3 - 2
3.BasicFunction/Source/canAppl.c

@@ -744,7 +744,7 @@ void Can_voMC_Run_5ms(void)
 
 void Can_voMC_Run_200ms(void)
 {
-    // UWORD TempPower;
+    static SLONG slCadenceFltSum = 0;
     
     // 电池通讯异常采用控制器计算电量
     if((cp_ulSystickCnt - ulBMS_ComTimeOutCount) > 3000)
@@ -792,7 +792,8 @@ void Can_voMC_Run_200ms(void)
     MC_RunInfo.Power= Powercal.PowerPoit;                                                //功率
     MC_RunInfo.BusVoltage = ((ULONG)adc_stUpOut.uwVdcLpfPu * cof_uwUbVt * 100) >> 14;    //母线电压 1mV,地址偏移6
     MC_RunInfo.BusCurrent = ((ULONG)adc_stUpOut.uwIbusAvgLpfPu) * cof_uwIbAp * 10 >> 14; //母线电流 1mA,地址偏移8
-    MC_RunInfo.Cadence = (cadence_stFreGetOut.uwLPFFrequencyPu * cof_uwFbHz * 60) >> 20; //踏频 1rpm,地址偏移10
+    slCadenceFltSum += ((cadence_stFreGetOut.uwLPFFrequencyPu << 4) - slCadenceFltSum ) >> 3;
+    MC_RunInfo.Cadence = ((slCadenceFltSum >> 4) * cof_uwFbHz * 60 ) >> 20; //踏频 1rpm,地址偏移10
     MC_RunInfo.Torque = ((ULONG)torsensor_stTorSensorOut.uwTorquePu * cof_uwTorqNm / 10) >> 14;        //踩踏力矩 1Nm,地址偏移11
     MC_RunInfo.CadenceDir = (MC_CadenceDir_Struct_t)cadence_stFreGetOut.cadence_dir;     //踩踏方向 0-正,1-反,2-停止,地址偏移12
     MC_RunInfo.GearSt = MC_ControlCode.GearSt;                                           //助力档位,地址偏移13