Ye Jin 1 gadu atpakaļ
vecāks
revīzija
820f3ab6ca

+ 6 - 6
User project/1.FrameLayer/Source/TimeTask_Event.c

@@ -257,6 +257,10 @@ void  Event_1ms(void)
                 { 
                     uart_slSpdRefRpm = uart_slSpdRefRpm - uart_slSpdRefRpm * (cp_stBikeRunInfoPara.BikeSpeedKmH - ass_stParaCong.uwThrottleMaxSpdKmH * 10)/20;
                 }
+                else
+                {
+                    //do nothing
+                }
             }  
             else
             {
@@ -325,11 +329,7 @@ void Event_10ms(void)
              {
                  uart_slSpdRefRpm = 0;
              }
-        }     
-      
-        // Bike light control
-//        Can_Light_switch();
-//        bikelight_voBikeLightControl(cp_stBikeRunInfoPara.uwLightSwitch, BikeBrake_blGetstate(), ass_stParaCong.uwLightVoltage);
+        }
 
         // Trip cal when open
         bikespeed_votempTripCal();
@@ -452,7 +452,7 @@ void  Event_200ms(void)
             alm_stBikeIn.uwThrottleReg = adc_stUpOut.uwThrottleReg;
             alm_stBikeIn.blThrottleExistFlg = FALSE;
             alm_stBikeIn.blMotorNTCExistFlg = FALSE;
-            //alm_voDetec200MS(&alm_stBikeIn, &alm_stDetect200MSCoef);   
+            alm_voDetec200MS(&alm_stBikeIn, &alm_stDetect200MSCoef);   
         }
         
         if (switch_flg.SysFault_Flag == TRUE)

+ 6 - 11
User project/2.MotorDrive/Source/adc.c

@@ -331,8 +331,8 @@ void adc_voSampleUp_High(const ADC_COF *cof, ADC_UP_OUT *out)
     /* Register value */
     out->uwVdcReg = iAdc_GetResultPointer(0)[HW_ADC_UDC_CH]; 
 
-    out->uwVdcPu = (UWORD)((ULONG)out->uwVdcReg * cof->uwVdcReg2Pu >> 10); // Q14=Q24-Q10
-    out->uwVdcPu = (SLONG)((out->uwVdcReg * cof->uwVdcReg2Pu >> 10) - 410); // Q14=Q24-Q10,电路上DCDC的EN漏电流导致测量偏高1.2V
+    //out->uwVdcPu = (UWORD)((ULONG)out->uwVdcReg * cof->uwVdcReg2Pu >> 10); // Q14=Q24-Q10
+    out->uwVdcPu = (UWORD)((out->uwVdcReg * cof->uwVdcReg2Pu >> 10) - 410); // Q14=Q24-Q10,电路上DCDC的EN漏电流导致测量偏高1.2V
     /* Vdc LPF */
     out->uwVdcLpfPu = ((out->uwVdcPu - out->uwVdcLpfPu) >> 1) + out->uwVdcLpfPu;
 
@@ -456,17 +456,12 @@ void adc_voSRCalibration(ADC_COF *cof, const ADC_UP_OUT *up_out, ADC_DOWN_OUT *d
 
             if(down_out->ulISamplePeakPu > 32767)  
             {
-                adc_pvt_ulGainTemp1 = 780;     ///< Rdson电流采样溢出SWORD时校准系数需小于1024
-                adc_pvt_stRdsonCoefLpf.slY.sw.hi = (SWORD)adc_pvt_ulGainTemp1;  ///< 系数立刻变化,不经过滤波,防止down_out->swIaPu溢出
+                adc_pvt_ulGainTemp1 = 780;     ///< 36V绯荤粺绯绘暟=SWORD鏈€澶х數娴�/閲囨牱鏈€澶х數娴�=120A/156A=0.769=787(Q10), 48V绯荤粺涓嶄細婧㈠嚭
+                adc_pvt_stRdsonCoefLpf.slY.sw.hi = (SWORD)adc_pvt_ulGainTemp1;  ///< 绯绘暟绔嬪埢鍙樺寲锛屼笉缁忚繃婊ゆ尝锛岄槻姝�own_out->swIaPu婧㈠嚭
             }
-            // else if(down_out->ulISamplePeakPu > 25800) ///<  25800 = 32767 / (1300 / 1024)
-            // {
-            //     adc_pvt_ulGainTemp1 = 1024;
-            //     adc_pvt_stRdsonCoefLpf.slY.sw.hi = (SWORD)adc_pvt_ulGainTemp1;
-            // }
             else
             {
-                adc_pvt_ulGainTemp1 = 1024;    ///< 允许其他数值,但大于1024需注意溢出SWORD
+                adc_pvt_ulGainTemp1 = 1024;    ///< 鍏佽�鍏朵粬鏁板€硷紝浣嗗ぇ浜�1024闇€娉ㄦ剰婧㈠嚭SWORD
             }
 
             cof->blCalibCalFlag = FALSE;
@@ -482,7 +477,7 @@ void adc_voSRCalibration(ADC_COF *cof, const ADC_UP_OUT *up_out, ADC_DOWN_OUT *d
                 }
                 else if(ABS(adc_pvt_slRdsonReg) >= ulOverflowCurPu)
                 {
-                    adc_pvt_ulGainTemp1 = 780;     ///< Rdson电流采样削顶时不再校准电流,强制输出为119A防止溢出,尽快报出过流故障
+                    adc_pvt_ulGainTemp1 = ADC_IPHASE_CUR_OVER_K;     ///< Rdson鐢垫祦閲囨牱鍓婇《鏃朵笉鍐嶆牎鍑嗙數娴侊紝36V绯荤粺寮哄埗杈撳嚭涓�119A闃叉�婧㈠嚭锛�48V绯荤粺寮哄埗杈撳嚭涓�75A锛屽敖蹇�姤鍑鸿繃娴佹晠闅�
                     adc_pvt_stRdsonCoefLpf.slY.sw.hi = (SWORD)adc_pvt_ulGainTemp1;
                 }
                 else 

+ 5 - 2
User project/2.MotorDrive/Source/spdctrmode.c

@@ -87,8 +87,11 @@ void scm_voSpdCtrMdInit(void)
     dbc_voDBCompInit();
     /* Contant voltage brake init */
     cvb_voBrakeInit();
-    /* switchHall init */
-    //switchhall_voInit();
+#ifdef RUN_ARCH_SIM
+   /* switchHall init */
+    switchhall_voInit();
+#endif
+  
     /* Align pos startup open2clz clzloop init */
     align_voInit();
     /* Torque observer init */

+ 1 - 2
User project/3.BasicFunction/Source/Cadence.c

@@ -111,14 +111,13 @@ static void cadence_voCadenceIdle(UWORD source)
 ****************************************************************/
 static void cadence_voCadenceHighFrequencyWork(UWORD source)
 {
-    /* 只有踏频一个脉冲会即source==1 && cadence_stFreGetOut.uwCaputureNumCnt==0,需要处理 */
-
     if (source == 1 && cadence_stFreGetOut.uwCaputureNumCnt == 1) 
     {
         cadence_stFreGetOut.uwCaputureOverflowCnt++;
     }
     else if (source == 1 && cadence_stFreGetOut.uwCaputureNumCnt == 0)
     {
+        /* 只有踏频一个脉冲需要从work回到idle */
         cadence_stFreGetOut.uwCaputureOverflowCnt2++;
     }
     else if (source == 2)

+ 11 - 2
User project/3.BasicFunction/Source/canAppl.c

@@ -257,6 +257,8 @@ void Can_voInitMC_Run(void)
 
     BMS_VoltEstimat.uwInterResistpu = (UWORD)(((ULONG)1700 << 15) / cof_uwRbOm);     // Q15 0.1mOhm BMS internal resistance 150mOhm + 20mOhm
     mth_voLPFilterCoef(1000000 / 100, EVENT_1MS_HZ, &BMS_swCurIdcLpf.uwKx); // 100Hz
+    
+    MC_RunInfo.RemainDistance = 0xffff;                           // init invalid value
 }
 
 void Can_voMC_Run_1ms(void) 
@@ -670,9 +672,10 @@ void Can_voMC_Run_200ms(void)
         }
         else
         {
-          MC_RunInfo.PowerPerKm = 0;         
-          MC_RunInfo.RemainDistance = 0xffff;                           //invalid value
+            MC_RunInfo.PowerPerKm = 0;         
+            MC_RunInfo.RemainDistance = 0xffff;                           //invalid value
         }
+
         cp_stBikeRunInfoPara.BMSRestChargeLast = BMS_RunInfo.RC;
         cp_stBikeRunInfoPara.uwPowerPerKm = 0;
         cp_stBikeRunInfoPara.uwAvePowerPerKm = 0;
@@ -681,6 +684,12 @@ void Can_voMC_Run_200ms(void)
         cp_stBikeRunInfoPara.uwAvePowerCNT = 0;
         cp_stBikeRunInfoPara.uwCruisDis = 0;
     }
+    
+    if(blBMSCommFault == TRUE)
+    {
+        MC_RunInfo.RemainDistance = 0xeeee;             /* no bms info*/
+    }
+    
     MC_RunInfo.T_PCB = (UBYTE)adc_stUpOut.PCBTemp + (UBYTE)40;                    //>PCB温度 +40℃
     MC_RunInfo.T_Coil = (UBYTE)adc_stUpOut.PCBTemp + (UBYTE)40;                   //绕组温度 +40℃
     MC_RunInfo.T_MCU = (UBYTE)adc_stUpOut.PCBTemp + (UBYTE)40;                    //MCU温度 +40℃,