Pārlūkot izejas kodu

feat: 刹车功能

CN\guohui27 2 gadi atpakaļ
vecāks
revīzija
2a45da27ed

+ 21 - 18
User project/1.FrameLayer/Source/TimeTask_Event.c

@@ -93,6 +93,9 @@ void  Event_1ms(void)
         torsensor_voTorADC();
         torsensor_voOffsetUpdate();
         
+        /* Bike brake info update */
+        bikebrake_voBikeBrakeDetect();
+        
         /* Torque assist calculation*/
         //ass_stCalIn.SOCValue = 100;
         ass_stCalIn.SOCValue = MC_RunInfo.SOC;
@@ -302,7 +305,7 @@ void Event_100ms(void)
                                                   bikespeed_stFreGetOut.uwFrequencyPu * (100 - bikespeed_stFreGetCof.uwBikeSpeedLPFGain)) /
                                                  100;
         /* Bike Throttle Assist */
-        if((bikethrottle_stBikeThrottleOut.uwThrottlePercent > 200)  && (cp_stBikeRunInfoPara.uwBikeGear > 0) && (cp_stFlg.RunPermitFlg == TRUE))
+        if((bikethrottle_stBikeThrottleOut.uwThrottlePercent > 200)  && (cp_stBikeRunInfoPara.uwBikeGear > 0) && (cp_stFlg.RunPermitFlg == TRUE) && (BikeBrake_blGetstate() == FALSE))
         {
             // signal_state.Sensor = TRUE;
             Event_pvt_blBikeThroFlg = TRUE;
@@ -371,23 +374,23 @@ void  Event_200ms(void)
         bikespeed_voGetBikeSpeedPwrError(adc_stUpOut.uwU5VPu);
 
         /* Bike Sensor Faults Detect */
-//        if((cp_stFlg.RunModelSelect == MountainBIKE) || (cp_stFlg.RunModelSelect == CityBIKE))
-//        {
-//            alm_stBikeIn.uwTroqReg = torsensor_stTorSensorOut.uwTorqueReg;
-//            alm_stBikeIn.uwTroqPu = torsensor_stTorSensorOut.uwTorqueLPFPu;//torsensor_stTorSensorOut.uwTorquePu;
-//            alm_stBikeIn.blBikeSpdOvrFlg = bikespeed_stFreGetOut.blBikeSpeedSensorPwrErrorFlg;
-//            alm_stBikeIn.blCadenceFreqOvrFlg = cadence_stFreGetOut.blCadenceSensorErrorFlg;
-//            alm_stBikeIn.swMotorSpdDir = ass_stCalIn.swDirection;
-//            alm_stBikeIn.swMotorSpdPu = scm_stSpdFbkLpf.slY.sw.hi;
-//            alm_stBikeIn.uwBikeSpdPu = bikespeed_stFreGetOut.uwFrequencyPu;
-//            alm_stBikeIn.uwCadenceFreqPu = cadence_stFreGetOut.uwFrequencyPu;
-//            alm_stBikeIn.uwMotorNTCReg = adc_stUpOut.MotorTempReg;
-//            alm_stBikeIn.uwPCBNTCReg = adc_stUpOut.PCBTempReg;
-//            alm_stBikeIn.uwThrottleReg = adc_stUpOut.uwThrottleReg;
-//            alm_stBikeIn.blThrottleExistFlg = FALSE;
-//            alm_stBikeIn.blMotorNTCExistFlg = FALSE;
-//            alm_voDetec200MS(&alm_stBikeIn, &alm_stDetect200MSCoef);   
-//        }
+        if((cp_stFlg.RunModelSelect == MountainBIKE) || (cp_stFlg.RunModelSelect == CityBIKE))
+        {
+            alm_stBikeIn.uwTroqReg = torsensor_stTorSensorOut.uwTorqueReg;
+            alm_stBikeIn.uwTroqPu = torsensor_stTorSensorOut.uwTorqueLPFPu;//torsensor_stTorSensorOut.uwTorquePu;
+            alm_stBikeIn.blBikeSpdOvrFlg = bikespeed_stFreGetOut.blBikeSpeedSensorPwrErrorFlg;
+            alm_stBikeIn.blCadenceFreqOvrFlg = cadence_stFreGetOut.blCadenceSensorErrorFlg;
+            alm_stBikeIn.swMotorSpdDir = ass_stCalIn.swDirection;
+            alm_stBikeIn.swMotorSpdPu = scm_stSpdFbkLpf.slY.sw.hi;
+            alm_stBikeIn.uwBikeSpdPu = bikespeed_stFreGetOut.uwFrequencyPu;
+            alm_stBikeIn.uwCadenceFreqPu = cadence_stFreGetOut.uwFrequencyPu;
+            alm_stBikeIn.uwMotorNTCReg = adc_stUpOut.MotorTempReg;
+            alm_stBikeIn.uwPCBNTCReg = adc_stUpOut.PCBTempReg;
+            alm_stBikeIn.uwThrottleReg = adc_stUpOut.uwThrottleReg;
+            alm_stBikeIn.blThrottleExistFlg = FALSE;
+            alm_stBikeIn.blMotorNTCExistFlg = FALSE;
+            alm_voDetec200MS(&alm_stBikeIn, &alm_stDetect200MSCoef);   
+        }
         
         if (switch_flg.SysFault_Flag == TRUE)
         {

+ 1 - 1
User project/3.BasicFunction/Include/bikebrake.h

@@ -56,7 +56,7 @@ typedef struct
  ***************************************/
 void bikebrake_voBikeBrakeInit(void);   // api function
 void bikebrake_voBikeBrakeDetect(void); // api function
-BOOL BikeBrake_blGetBrkState(void);
+BOOL BikeBrake_blGetstate(void);
 /************************************************************************/
 
 #endif

+ 2 - 2
User project/3.BasicFunction/Include/bikespeed.h

@@ -21,9 +21,9 @@
  *
  ****************************************/
 #define BIKESPEED_NUMBERS_PULSES           1     // numbers of pulses per cycles
-#define BIKESPEED_START_INTERVALTIME       10000 //10000 // interveal time of detect valid pulses, ms
+#define BIKESPEED_START_INTERVALTIME       8000 //10000 // interveal time of detect valid pulses, ms
 #define BIKESPEED_NUMBERS_VALIDPULSE2START 1     // numbers of valid pulses that needed to start
-#define BIKESPEED_HF_MINTIME               30000 //4000  //3000  // Min time of valid pulses, ms
+#define BIKESPEED_HF_MINTIME               8000 //4000  //3000  // Min time of valid pulses, ms
 #define BIKESPEED_ERROR_RESETTIME          5000  // TIMER PERIOD,ms
 #define BIKESPEED_TIM_TIMERUNIT            25    // TIMER PERIOD,ms
 #define BIKESPEED_LPF_GAIN                 80    //%

+ 26 - 23
User project/3.BasicFunction/Source/AssistCurve.c

@@ -623,7 +623,7 @@ static void AssitCuvApplPerVolt(void)
         } 
 
         /* Switch to ReduceCurrent FSM */
-        if((ass_stCalIn.uwcadancePer == 0) || (ass_stCalIn.uwGearSt == 0))
+        if((ass_stCalIn.uwcadancePer == 0) || (ass_stCalIn.uwGearSt == 0) || BikeBrake_blGetstate() == TRUE)
         {
             /* When CandanceFreq=0 or BikeGear=0*/
             ass_stCalCoef.swAss2SpdCNT = 0;
@@ -691,7 +691,7 @@ static void AssitCuvApplPerVolt(void)
         }
                  
         /* Switch to ReduceCurrent FSM */
-        if((ass_stCalIn.uwcadancePer == 0) || (ass_stCalIn.uwGearSt == 0))
+        if((ass_stCalIn.uwcadancePer == 0) || (ass_stCalIn.uwGearSt == 0) || BikeBrake_blGetstate() == TRUE)
         {
             /* When CandanceFreq=0 or BikeGear=0*/
             ass_stCalOut.blTorqPIFlg = FALSE;
@@ -753,26 +753,29 @@ static void AssitCuvApplPerVolt(void)
     case StopAssit:
        ass_stCalOut.swTorSpdLoopCurrentTemp = 0;
        /* Switch to Startup FSM */
-       if (ass_stCalIn.uwbikespeed < 449) // 0.3Hz,  (2.19m轮径下  2.36km/h )
-        {
-            if (ass_stCalIn.uwtorquePer > ass_stCalCoef.uwAssThreshold && ass_stCalIn.uwcadance > 0)
-            {               
-                ass_stCalCoef.sw2StopCNT = 0;
-                ass_stCalOut.swVoltLimitPu = scm_swVsDcpLimPu;
-                ass_pvt_stCurLpf.slY.sw.hi = 0;                
-                Ass_FSM = Startup;
-            }
-        }
-        else
-        {
-            if (ass_stCalIn.uwtorquelpf > ((ass_stCalCoef.uwAssThreshold * 3)>>3) && ass_stCalIn.uwtorquePer > ass_stCalCoef.uwAssThreshold && ass_stCalIn.uwcadance > 0)
-            {            
-                ass_stCalCoef.sw2StopCNT = 0;
-                ass_stCalOut.swVoltLimitPu = scm_swVsDcpLimPu;
-                ass_pvt_stCurLpf.slY.sw.hi = 0;               
-                Ass_FSM = Startup;
-            }
-        }
+       if ((BikeBrake_blGetstate() == FALSE) && (ass_stCalIn.uwGearSt > 0))
+       {
+              if (ass_stCalIn.uwbikespeed < 449) // 0.3Hz,  (2.19m轮径下  2.36km/h )
+              {
+                  if (ass_stCalIn.uwtorquePer > ass_stCalCoef.uwAssThreshold && ass_stCalIn.uwcadance > 0)
+                  {               
+                      ass_stCalCoef.sw2StopCNT = 0;
+                      ass_stCalOut.swVoltLimitPu = scm_swVsDcpLimPu;
+                      ass_pvt_stCurLpf.slY.sw.hi = 0;                
+                      Ass_FSM = Startup;
+                  }
+              }
+              else
+              {
+                  if (ass_stCalIn.uwtorquelpf > ((ass_stCalCoef.uwAssThreshold * 3)>>3) && ass_stCalIn.uwtorquePer > ass_stCalCoef.uwAssThreshold && ass_stCalIn.uwcadance > 0)
+                  {            
+                      ass_stCalCoef.sw2StopCNT = 0;
+                      ass_stCalOut.swVoltLimitPu = scm_swVsDcpLimPu;
+                      ass_pvt_stCurLpf.slY.sw.hi = 0;               
+                      Ass_FSM = Startup;
+                  }
+              }
+       }
        
         /* Assit Exit */
         if (ass_stCalIn.uwcadance == 0 || ass_stCalIn.uwtorquelpf < ass_stCalCoef.uwAssStopThreshold)
@@ -787,7 +790,7 @@ static void AssitCuvApplPerVolt(void)
             }
         }
        
-        if ((ass_stCalCoef.sw2StopCNT > TIME_MS2CNT(3000)) || (ass_stCalIn.uwGearSt == 0))// 3s
+        if ((ass_stCalCoef.sw2StopCNT > TIME_MS2CNT(3000)) || (ass_stCalIn.uwGearSt == 0) || (BikeBrake_blGetstate() == TRUE))// 3s
         {
             ass_stCalCoef.sw2StopCNT = 0;
             ass_stCalCoef.blAssistflag = FALSE;            

+ 1 - 1
User project/4.BasicHardwSoftwLayer/2.BasicSoftwLayer/Include/user.h

@@ -260,7 +260,7 @@ Update Time
 #define ALM_IPM_OVR_REC_TM1      120 // unit: s, Time of duration(TBC)
 
 /* Ebike sensor fault detect*/
-#define ALM_MOTORSPD_MIN_RPM  50   //unit: s
+#define ALM_MOTORSPD_MIN_RPM  50   //unit: rpm
 #define ALM_BIKESPD_FLT_TS    10   //unit: s
 #define ALM_CADENCE_FLT_TS    2    //unit: s
 #define ALM_TORQ_MAX_VOL      30   //unit: 0.1V