Преглед изворни кода

增加外部晶振启动延时,解决部分电机无法使用外部晶振启动的问题。

dd пре 5 месеци
родитељ
комит
17540ea7f0

+ 1 - 0
.settings/org.eclipse.core.resources.prefs

@@ -18,3 +18,4 @@ encoding//Debug/objects.mk=UTF-8
 encoding//Debug/sources.mk=UTF-8
 encoding//Debug/subdir_rules.mk=UTF-8
 encoding//Debug/subdir_vars.mk=UTF-8
+encoding/<project>=UTF-8

+ 1 - 1
2.MotorDrive/Source/adc.c

@@ -523,7 +523,7 @@ void adc_voSampleCoef(ADC_COF *cof)
     cof->uwCurReg2Pu = ((UQWORD)ADC_IPHASE_CUR_MAX_AP << 24) / (1 << (ADC_RESOLUTION_BIT - 1)) / IBASE; // Q24    
     cof->uwCurIdcReg2Pu = ((UQWORD)ADC_IDC_CUR_MAX_AP << 24) / (1 << (ADC_RESOLUTION_BIT)) / IBASE;     // Q24
     //cof->uwCurIdcAvgReg2Pu = ((UQWORD)ADC_IDC_CUR_AVG_MAX_AP << 24) / (1 << (ADC_RESOLUTION_BIT)) / IBASE;     // Q24
-    cof->uwCurIdcAvgReg2Pu = ((UQWORD)ADC_IDC_CUR_AVG_MAX_AP << 24) / (3824) / IBASE;     // Q24
+    cof->uwCurIdcAvgReg2Pu = ((UQWORD)ADC_IDC_CUR_AVG_MAX_AP << 24) / (3036) / IBASE;     // Q24
     cof->uwVdcReg2Pu = ((UQWORD)ADC_VDC_MAX_VT << 24) / (1 << ADC_RESOLUTION_BIT) / VBASE;              // Q24
     cof->uwUabcReg2Pu = ((UQWORD)ADC_UABC_MAX_VT << 24) / (1 << (ADC_RESOLUTION_BIT)) / VBASE;          // Q24
     cof->uwU6VReg2Pu = ((UQWORD)ADC_LIGHT_MAX_VT << 24) / (1 << (ADC_RESOLUTION_BIT)) / VBASE;          // Q24;

+ 2 - 2
3.BasicFunction/Include/Cadence.h

@@ -23,7 +23,7 @@
  ****************************************/
 //#if (ASSIST_MODE == TORQUE_ASSIST)
 //力矩相关参数
-#define TORQUE_NUMBERS_PULSES           30  //24   //24 48 64(350W-bike)          //numbers of pulses per cycles
+#define TORQUE_NUMBERS_PULSES           60  //24   //24 48 64(350W-bike)          //numbers of pulses per cycles
 #define TORQUE_START_INTERVALTIME_MS    1000 // 250     //interveal time of detect valid pulses to start, ms
 #define TORQUE_NUMBERS_VALIDPULSE2START  1    // numbers of valid pulses that needed to start
 #define TORQUE_LF_RECORDTIME_MS         500  // time of Recording pulses per cycle, ms
@@ -35,7 +35,7 @@
 #define TORQUE_MAX_FREQUENCY            5    // Hz, human foot
 //#elif (ASSIST_MODE == CADENCE_ASSIST)
 //踏频相关参数
-#define CADENCE_NUMBERS_PULSES           30   //24 48 64(350W-bike)          //numbers of pulses per cycles
+#define CADENCE_NUMBERS_PULSES           60   //24 48 64(350W-bike)          //numbers of pulses per cycles
 #define CADENCE_START_INTERVALTIME_MS    5000 // 250     //interveal time of detect valid pulses to start, ms
 #define CADENCE_NUMBERS_VALIDPULSE2START 1    // numbers of valid pulses that needed to start
 #define CADENCE_LF_RECORDTIME_MS         500  // time of Recording pulses per cycle, ms

+ 4 - 4
3.BasicFunction/Include/i2c_master.h

@@ -328,7 +328,7 @@
     }
 #define I2CuwBikeTor1StepADC \
     {                        \
-        150     \
+        100     \
     }
 #define I2CuwBikeTor2StepRealNm \
     {                           \
@@ -336,7 +336,7 @@
     }
 #define I2CuwBikeTor2StepADC \
     {                        \
-        300     \
+        200     \
     }
 #define I2CuwBikeTor3StepRealNm \
     {                           \
@@ -344,7 +344,7 @@
     }
 #define I2CuwBikeTor3StepADC \
     {                        \
-        450     \
+        300     \
     }
 #define I2CuwBikeTor4StepRealNm \
     {                           \
@@ -352,7 +352,7 @@
     }
 #define I2CuwBikeTor4StepADC \
     {                        \
-        600      \
+        400      \
     }
 #define I2CuwCadSensorPulseNm              \
     {                                      \

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

@@ -820,11 +820,11 @@ void Can_voMC_Run_200ms(void)
 //    MC_RunInfo.BusCurrent = (((ULONG)TempPower << 13) / adc_stUpOut.uwVdcLpfPu) * cof_uwIbAp * 100 >> 14; ///>母线电流 1mA,地址偏移8
     MC_RunInfo.BusCurrent = ((ULONG)adc_stUpOut.uwIbusAvgLpfPu) * cof_uwIbAp * 10 >> 14; ///14 >母线电流 1mA,地址偏移8
     MC_RunInfo.Cadence = (cadence_stFreGetOut.uwLPFFrequencyPu * cof_uwFbHz * 60) >> 20;                  ///>踏频 1rpm,地址偏移10
-    MC_RunInfo.Torque = ((ULONG)torsensor_stTorSensorOut.uwTorqueLPFPu * cof_uwTorqNm / 10) >> 14;        ///>踩踏力矩 1Nm,地址偏移11
+    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
     MC_RunInfo.LightSwitch = MC_ControlCode.LightSwitch;                             ///>灯开关 0xF0-关,0xF1-开,地址偏移14
-
+    MC_RunInfo.TorqueReg = torsensor_stTorSensorOut.uwTorqueReg;
     MC_RunInfo.SOC = Can_SOC_Cal();                                                                   ///>剩余电量 1%,地址偏移15
     if(hw_blPWMOnFlg == FALSE)
        {

+ 28 - 15
3.BasicFunction/Source/torquesensor.c

@@ -259,10 +259,10 @@ void torsensor_voTorADC(void) // need to match ADC_StartConversion(ADC1);
             torsensor_stTorSensorOut.uwTorquePu = torsensor_stTorSensorCof.uwBikeTorStep4NmPu;
         }
 #elif (TORSENSOR_USEMOL == TORSENSOR_USEAUTOZERO)
-        torsensor_stTorSensorOut.uwTorqueReg = ( (TORQUEVOLREG1() - torsensor_stTorSensorCof.uwTorqueOffsetNow1) +
-                                                 (TORQUEVOLREG2() - torsensor_stTorSensorCof.uwTorqueOffsetNow2) +
-                                                 (TORQUEVOLREG3() - torsensor_stTorSensorCof.uwTorqueOffsetNow3)
-                                               ) / 3;
+        torsensor_stTorSensorOut.uwTorqueReg = abs( (SWORD)(TORQUEVOLREG1() - torsensor_stTorSensorCof.uwTorqueOffsetNow1) +
+                                                    (SWORD)(TORQUEVOLREG2() - torsensor_stTorSensorCof.uwTorqueOffsetNow2) +
+                                                    (SWORD)(TORQUEVOLREG3() - torsensor_stTorSensorCof.uwTorqueOffsetNow3)
+                                                  ) / 3;
         if (torsensor_stTorSensorOut.uwTorqueReg <= torsensor_stTorSensorCof.uwTorqueOffset)
         {
             torsensor_stTorSensorOut.uwTorquePu = 0;
@@ -337,37 +337,50 @@ void TorqueSensorRegFltCal(void)
     TorqueSensorRegFlt.SensorFlt3 = TorqueSensorRegFlt.SensorFltSum3 >> 10;
 }
 
+//零点更新
 void TorqueSensorOffSetAuto(UBYTE SetFlag)
 {
     SLONG SumTemp = 0;
+    static BOOL OffSet_RefreshFlag = FALSE;
     if(SetFlag == 1)
     {
         torsensor_stTorSensorCof.uwTorqueOffsetNow1 = TORQUEVOLREG1();
         torsensor_stTorSensorCof.uwTorqueOffsetNow2 = TORQUEVOLREG2();
         torsensor_stTorSensorCof.uwTorqueOffsetNow3 = TORQUEVOLREG3();
+        OffSet_RefreshFlag = TRUE;
     }
     else
     {
         if(TorqueSensorRegFlt.SensorFlt1 < torsensor_stTorSensorCof.uwTorqueOffsetNow1)
+        {
             torsensor_stTorSensorCof.uwTorqueOffsetNow1 = TorqueSensorRegFlt.SensorFlt1;
+            OffSet_RefreshFlag = TRUE;
+        }
         if(TorqueSensorRegFlt.SensorFlt2 < torsensor_stTorSensorCof.uwTorqueOffsetNow2)
+        {
             torsensor_stTorSensorCof.uwTorqueOffsetNow2 = TorqueSensorRegFlt.SensorFlt2;
+            OffSet_RefreshFlag = TRUE;
+        }
         if(TorqueSensorRegFlt.SensorFlt3 < torsensor_stTorSensorCof.uwTorqueOffsetNow3)
+        {
             torsensor_stTorSensorCof.uwTorqueOffsetNow3 = TorqueSensorRegFlt.SensorFlt3;
+            OffSet_RefreshFlag = TRUE;
+        }
     }
-    SumTemp = (TORQUEVOLREG1() - torsensor_stTorSensorCof.uwTorqueOffsetNow1) +
-              (TORQUEVOLREG2() - torsensor_stTorSensorCof.uwTorqueOffsetNow2) +
-              (TORQUEVOLREG3() - torsensor_stTorSensorCof.uwTorqueOffsetNow3);
-    if(SumTemp <= 0)
+    if(OffSet_RefreshFlag == TRUE)
     {
-        torsensor_stTorSensorCof.uwTorqueOffset = 0;
-        torsensor_stTorSensorCof.uwTorqueOffsetPowerUp = torsensor_stTorSensorCof.uwTorqueOffset;
-    }
+        if(SumTemp <= 0)
+        {
+            torsensor_stTorSensorCof.uwTorqueOffset = 0;
+            torsensor_stTorSensorCof.uwTorqueOffsetPowerUp = torsensor_stTorSensorCof.uwTorqueOffset;
+        }
 
-    else
-    {
-        torsensor_stTorSensorCof.uwTorqueOffset = SumTemp / 3;
-        torsensor_stTorSensorCof.uwTorqueOffsetPowerUp = torsensor_stTorSensorCof.uwTorqueOffset;
+        else
+        {
+            torsensor_stTorSensorCof.uwTorqueOffset = SumTemp / 3;
+            torsensor_stTorSensorCof.uwTorqueOffsetPowerUp = torsensor_stTorSensorCof.uwTorqueOffset;
+        }
+        OffSet_RefreshFlag = FALSE;
     }
 }
 

+ 2 - 2
4.BasicHardwSoftwLayer/2.BasicSoftwLayer/Include/user.h

@@ -66,8 +66,8 @@ Update Time
 #define MOTOR_VOLANS_PLUS                           0x81
 #define MOTOR_PEGASI                                0x82
 #define MOTOR_PEGASI_PLUS                           0x83
-#define MOTOR_PEGASI_NEW                            0x82
-#define MOTOR_PEGASI_PLUS_NEW                       0x83
+#define MOTOR_PEGASI_NEW                            0x84
+#define MOTOR_PEGASI_PLUS_NEW                       0x85
 
 /* Select Motor */
 #if( (IPM_POWER_SEL == IPM_POWER_1000W_12G) ||(IPM_POWER_SEL ==IPM_POWER_1000W_MINI_12G))

+ 1 - 1
mspm0g3507.syscfg

@@ -74,8 +74,8 @@ mux12.inputSelect = "zSYSPLLMUX_HFCLK";
 
 const pinFunction4       = system.clockTree["HFXT"];
 pinFunction4.inputFreq   = 8;
-pinFunction4.HFXTStartup = 40;
 pinFunction4.enable      = true;
+pinFunction4.HFXTStartup = 200;
 
 ADC121.$name                       = "ADC12_0";
 ADC121.trigSrc                     = "DL_ADC12_TRIG_SRC_EVENT";