Kaynağa Gözat

1,增加小牙盘电机参数;
2,修改灯相关参数。

Deyauo 5 ay önce
ebeveyn
işleme
f0473eab1d

+ 2 - 4
1.FrameLayer/Source/FSM_1st.c

@@ -149,10 +149,8 @@ void SysInit_hook(void)
     {
         /* BikeLightInit */
         bikelight_voBikeLightInit(&BikeLedCheck_F);
-        bikelight_voBikeLightInit(&BikeLedCheck_B);
-        bikelight_voBikeLightInit(&BikeLedCheck_L);
-        bikelight_voBikeLightInit(&BikeLedCheck_R);
-        bikelight_voBikeLightInit(&BikeLedCheck_DC);
+        bikelight_voBikeLightInit(&BikeLedCheck_DC_1);
+        bikelight_voBikeLightInit(&BikeLedCheck_DC_2);
         /* BikeThrottleInit */
         bikethrottle_voBikeThrottleInit();
         /* TorqueSensorInit */

+ 6 - 5
3.BasicFunction/Include/bikelight.h

@@ -29,7 +29,7 @@ typedef _Bool  BOOL;
 
 
 #define    BIKELEDOPEN_F_ENABLE    1  //前灯使能,0-失能,1-使能
-#define    BIKELEDOPEN_R_ENABLE    1  //尾灯使能,0-失能,1-使能
+#define    BIKELEDOPEN_R_ENABLE    0  //尾灯使能,0-失能,1-使能
 
 
 //---------------------------------------
@@ -117,10 +117,11 @@ typedef struct
 
 //EXTERNBIKE  BIKELED_Global_STR  BikeLedGloFun;
 EXTERNBIKE  BIKELEDCHECK_STR    BikeLedCheck_F;//前灯参数
-EXTERNBIKE  BIKELEDCHECK_STR    BikeLedCheck_B;//尾灯参数
-EXTERNBIKE  BIKELEDCHECK_STR    BikeLedCheck_L;//左灯参数
-EXTERNBIKE  BIKELEDCHECK_STR    BikeLedCheck_R;//右灯参数
-EXTERNBIKE  BIKELEDCHECK_STR    BikeLedCheck_DC;//DC12V
+//EXTERNBIKE  BIKELEDCHECK_STR    BikeLedCheck_B;//尾灯参数
+//EXTERNBIKE  BIKELEDCHECK_STR    BikeLedCheck_L;//左灯参数
+//EXTERNBIKE  BIKELEDCHECK_STR    BikeLedCheck_R;//右灯参数
+EXTERNBIKE  BIKELEDCHECK_STR    BikeLedCheck_DC_1;//DC12V
+EXTERNBIKE  BIKELEDCHECK_STR    BikeLedCheck_DC_2;//DC12V
 
 //---------------------------------------
 

+ 130 - 373
3.BasicFunction/Source/bikelight.c

@@ -30,11 +30,12 @@
 
 
 BIKELEDCHECK_STR   BikeLedCheck_F;//前灯参数
-BIKELEDCHECK_STR   BikeLedCheck_B;//尾灯参数
-BIKELEDCHECK_STR   BikeLedCheck_L;//左灯参数
-BIKELEDCHECK_STR   BikeLedCheck_R;//右灯参数
+//BIKELEDCHECK_STR   BikeLedCheck_B;//尾灯参数
+//BIKELEDCHECK_STR   BikeLedCheck_L;//左灯参数
+//BIKELEDCHECK_STR   BikeLedCheck_R;//右灯参数
 
-BIKELEDCHECK_STR   BikeLedCheck_DC;//DC12V端口参数
+BIKELEDCHECK_STR   BikeLedCheck_DC_1; //DC12V端口参数
+BIKELEDCHECK_STR   BikeLedCheck_DC_2; //DC12V端口参数
 
 //LED_PWM_STR   BikePwmChoice;
 void LED_EnableDeal(BIKELEDCHECK_STR *p,UWORD switchAction,LED_PWM_STR mode );
@@ -384,32 +385,35 @@ void bikelight_voBikeLightInit(BIKELEDCHECK_STR *LedPoit)
 ****************************************************************/
 void bikelight_voBikeLightCoef(UWORD volt)
 {
-
-//前灯
-    BikeLedCheck_F.uwBike_LedVolt =volt & 0x0f;
-    BikeLedCheck_F.uwBike_LedMode=8; //前灯模式
-//尾灯
-    BikeLedCheck_B.uwBike_LedMode = (volt & 0xf000)>>12;//尾灯模式
-   BikeLedCheck_B.uwBike_LedVolt =(volt & 0x0f00)>>8;
-
-
-//左灯模式
-   BikeLedCheck_L.uwBike_LedMode=5;
-//右灯模式
-   BikeLedCheck_R.uwBike_LedMode=5;
-
-   if( BikeLedCheck_F.uwBike_LedVolt == 12) //拉低短路
+    //DC1灯参数
+    BikeLedCheck_DC_1.uwBike_LedVolt =volt & 0x0f;//电压
+    BikeLedCheck_DC_1.uwBike_LedMode=8;           //模式
+    //DC2灯参数
+    BikeLedCheck_DC_2.uwBike_LedVolt =(volt & 0x0f00)>>8;  //电压
+    BikeLedCheck_DC_2.uwBike_LedMode = (volt & 0xf000)>>12;//模式
+    //BAT灯模式
+    BikeLedCheck_F.uwBike_LedMode=5;
+
+    //DC1灯电压设置
+    if( BikeLedCheck_DC_1.uwBike_LedVolt == 12) //拉低短路
+    {
+        IO_LED1_6or12V_Choise_H(); //12V使能
+    }
+    else //高阻
     {
 
-        IO_LED_6or12V_Choise_H(); //12V使能
-   }
-   else //高阻
-   {
-
-       IO_LED_6or12V_Choise_L();//6V输出使能
+       IO_LED1_6or12V_Choise_L();//6V输出使能
+    }
+    //DC2灯电压设置
+    if( BikeLedCheck_DC_1.uwBike_LedVolt == 12) //拉低短路
+    {
+        IO_LED2_6or12V_Choise_H(); //12V使能
     }
+    else //高阻
+    {
 
-   BikeLedCheck_DC.uwBike_LedMode=5;
+       IO_LED2_6or12V_Choise_L();//6V输出使能
+    }
 
 }
 /***************************************************************
@@ -423,381 +427,134 @@ void bikelight_voBikeLightCoef(UWORD volt)
 ****************************************************************/
 void bikelight_voBikeLightControl(UWORD switchAction, BOOL Brate_Sta )
 {
-
-if( power_stPowStateOut.blPowerStartupFlg  ==FALSE)
-{
-    BikeLedCheck_F.blBike_LedSta=FALSE;
-    BikeLedCheck_B.blBike_LedSta=FALSE;
-    BikeLedCheck_L.blBike_LedSta=FALSE;
-    BikeLedCheck_R.blBike_LedSta=FALSE;
-    DL_TimerG_setCaptureCompareValue(PWM_F_INST,   0, GPIO_PWM_F_C1_IDX);//max=2304
- //   DL_TimerG_setCaptureCompareValue(PWM_B_L_INST, 0, GPIO_PWM_B_L_C1_IDX);//max=2304
-//    DL_TimerG_setCaptureCompareValue(PWM_B_L_INST, 0, GPIO_PWM_B_L_C0_IDX);//max=2304
- //   DL_TimerG_setCaptureCompareValue(PWM_R_INST,   0, GPIO_PWM_R_C1_IDX);//max=2304
-
-}
-else
-{
-    ledfunctions[BikeLedCheck_DC.uwBike_LedMode](&BikeLedCheck_DC);
-    if( BikeLedCheck_B.blBike_LedSta==TRUE) //尾灯控制
+    if( power_stPowStateOut.blPowerStartupFlg  ==FALSE)
     {
-        IO_LED_6or12V_EN_H();
+        BikeLedCheck_F.blBike_LedSta=FALSE;
+        DL_TimerG_setCaptureCompareValue(PWM_F_INST,   0, GPIO_PWM_F_C1_IDX);//max=2304
     }
     else
     {
-        IO_LED_6or12V_EN_L();
-    }
-
-
-
-//-----------尾灯处理--------
-#if(BIKELEDOPEN_R_ENABLE!=0)
-
-    ledfunctions[BikeLedCheck_B.uwBike_LedMode](&BikeLedCheck_B);
-    if( BikeLedCheck_B.blBike_LedSta==TRUE) //尾灯控制
-    {
-        if(BikeLedCheck_B.uwBike_keyLedHighSta==0)
-          {
-              BikeLedCheck_B.uwBike_keyLedHighSta=1;
-              BikeLedCheck_B.uwBike_OpenLedEn=0;//开灯瞬间处理标志
-              BikeLedCheck_B.uwBike_LedOffErrCnt=0;  //10秒一检测计时
-              BikeLedCheck_B.uwBike_OpenPreTime=0; //开灯瞬间5ms内处理计数
-              BikeLedCheck_B.uwBike_LedCheckLowTime=0;//检测过流IO出现低电平次数
-              BikeLedCheck_B.blBike_ForwardLedStart=TRUE; //前灯允许开灯启动,总开关
-              BikeLedCheck_B.blBike_LedCurErr=FALSE;
-            //  DL_TimerG_startCounter(PWM_B_L_INST);
-     //         DL_Timer_overrideCCPOut(PWM_B_L_INST, DL_TIMER_FORCE_OUT_DISABLED, DL_TIMER_FORCE_CMPL_OUT_DISABLED, GPIO_PWM_B_L_C1_IDX);
-              GPIOB->POLARITY15_0 &= ~(DL_GPIO_PIN_15_EDGE_FALL |DL_GPIO_PIN_15_EDGE_RISE);
-              GPIOB->POLARITY15_0  |=DL_GPIO_PIN_15_EDGE_RISE;
-
-
-          }
-
-          if((BikeLedCheck_B.uwBike_OpenLedEn==0) &&(BikeLedCheck_B.blBike_ForwardLedStart==TRUE)) //开灯检测,过流后每隔10秒检测1次
-          {
-           LED_EnableDeal(&BikeLedCheck_B,1,B_PWM_byte);
-          }
-          else
-          {
-              GPIOB->POLARITY15_0 &= ~(DL_GPIO_PIN_15_EDGE_FALL |DL_GPIO_PIN_15_EDGE_RISE);
-              GPIOB->POLARITY15_0  |=DL_GPIO_PIN_15_EDGE_FALL;
-          }
-
-          BikeLedCheck_B.uwBike_keyLedLowSta=1;
-    }
-    else
-    {
-        BikeLedCheck_B.uwBike_keyLedHighSta=0;
-        if(BikeLedCheck_B.uwBike_keyLedLowSta!=0)
-           {
-            BikeLedCheck_B.uwBike_keyLedLowSta=0;
-               BikeLedCheck_B.uwBikeLight_PWM=0;
- //              DL_TimerG_setCaptureCompareValue(PWM_B_L_INST, BikeLedCheck_B.uwBikeLight_PWM, GPIO_PWM_B_L_C1_IDX);//max=2304
-           }
-
-    }
-
-#endif
-
-
-// ---------------前灯处理------------
-//#if(BIKELEDOPEN_F_ENABLE!=0)
-//    ledfunctions[BikeLedCheck_F.uwBike_LedMode](&BikeLedCheck_F);
-//
-//    if (BikeLedCheck_F.blBike_LedSta == TRUE)
-//    {
-//        if(BikeLedCheck_F.uwBike_keyLedHighSta==0)
-//        {
-//            BikeLedCheck_F.uwBike_keyLedHighSta=1;
-//            BikeLedCheck_F.uwBike_OpenLedEn=0;//开灯瞬间处理标志
-//            BikeLedCheck_F.uwBike_LedOffErrCnt=0;  //10秒一检测计时
-//            BikeLedCheck_F.uwBike_OpenPreTime=0; //开灯瞬间5ms内处理计数
-//            BikeLedCheck_F.uwBike_LedCheckLowTime=0;//检测过流IO出现低电平次数
-//            BikeLedCheck_F.blBike_ForwardLedStart=TRUE; //前灯允许开灯启动,总开关
-//             DL_COMP_setDACCode0(COMP_FLEDCHECK_INST, 0x0f);
-//            BikeLedCheck_F.blBike_LedCurErr=FALSE;
-//            DL_TimerG_startCounter(PWM_F_INST);
-//
-//
-//        }
-//
-//        if((BikeLedCheck_F.uwBike_OpenLedEn==0) &&(BikeLedCheck_F.blBike_ForwardLedStart==TRUE)) //开灯检测,过流后每隔10秒检测1次
-//        {
-//         LED_EnableDeal(&BikeLedCheck_F,1,F_PWM_byte);
-//        }
-//        else
-//         {
-//#if(DCDC_12S6V_SEL_EN!=1)
-//             DL_COMP_setDACCode0(COMP_FLEDCHECK_INST, 0x4f);
-//#endif
-//         }
-//
-//        BikeLedCheck_F.uwBike_keyLedLowSta=1;
-//    }
-//    else
-//    {
-//        BikeLedCheck_F.uwBike_keyLedHighSta=0;
-//     if(BikeLedCheck_F.uwBike_keyLedLowSta!=0)
-//        {
-//         BikeLedCheck_F.uwBike_keyLedLowSta=0;
-//            BikeLedCheck_F.uwBikeLight_PWM=0;
-//            DL_TimerG_setCaptureCompareValue(PWM_F_INST, BikeLedCheck_F.uwBikeLight_PWM, GPIO_PWM_F_C1_IDX);//max=2304
-//
-//
-//        }
-//    }
-//#endif
-
-//------------右灯处理------
-    ledfunctions[BikeLedCheck_R.uwBike_LedMode](&BikeLedCheck_R);
-
-    if(BikeLedCheck_R.blBike_LedSta==TRUE) //
-       {
-           if(BikeLedCheck_R.uwBike_keyLedHighSta==0)
-             {
-                 BikeLedCheck_R.uwBike_keyLedHighSta=1;
-                 BikeLedCheck_R.uwBike_OpenLedEn=0;//开灯瞬间处理标志
-                 BikeLedCheck_R.uwBike_LedOffErrCnt=0;  //10秒一检测计时
-                 BikeLedCheck_R.uwBike_OpenPreTime=0; //开灯瞬间5ms内处理计数
-                 BikeLedCheck_R.uwBike_LedCheckLowTime=0;//检测过流IO出现低电平次数
-                 BikeLedCheck_R.blBike_ForwardLedStart=TRUE; //前灯允许开灯启动,总开关
-                 BikeLedCheck_R.blBike_LedCurErr=FALSE;
-  //               DL_TimerG_startCounter(PWM_R_INST);
-                 GPIOB->POLARITY15_0 &= ~(DL_GPIO_PIN_8_EDGE_RISE |DL_GPIO_PIN_8_EDGE_FALL);
-                 GPIOB->POLARITY15_0  |=DL_GPIO_PIN_8_EDGE_RISE;
-
-             }
-
-             if((BikeLedCheck_R.uwBike_OpenLedEn==0) &&(BikeLedCheck_R.blBike_ForwardLedStart==TRUE)) //开灯检测,过流后每隔10秒检测1次
-             {
-              LED_EnableDeal(&BikeLedCheck_R,1,R_PWM_byte);
-             }
-             else
-             {
-                 GPIOB->POLARITY15_0 &= ~(DL_GPIO_PIN_8_EDGE_RISE |DL_GPIO_PIN_8_EDGE_FALL);
-                 GPIOB->POLARITY15_0  |=DL_GPIO_PIN_8_EDGE_FALL;
-             }
-
-             BikeLedCheck_R.uwBike_keyLedLowSta=1;
-       }
-       else
-       {
-           BikeLedCheck_R.uwBike_keyLedHighSta=0;
-           if(BikeLedCheck_R.uwBike_keyLedLowSta!=0)
-              {
-               BikeLedCheck_R.uwBike_keyLedLowSta=0;
-                  BikeLedCheck_R.uwBikeLight_PWM=0;
- //                 DL_TimerG_setCaptureCompareValue(PWM_R_INST, BikeLedCheck_R.uwBikeLight_PWM, GPIO_PWM_R_C1_IDX);//max=2304
-              }
-       }
-//------------左灯处理------
-    ledfunctions[BikeLedCheck_L.uwBike_LedMode](&BikeLedCheck_L);
-      if(BikeLedCheck_L.blBike_LedSta==TRUE) //
-         {
-             if(BikeLedCheck_L.uwBike_keyLedHighSta==0)
-               {
-                   BikeLedCheck_L.uwBike_keyLedHighSta=1;
-                   BikeLedCheck_L.uwBike_OpenLedEn=0;//开灯瞬间处理标志
-                   BikeLedCheck_L.uwBike_LedOffErrCnt=0;  //10秒一检测计时
-                   BikeLedCheck_L.uwBike_OpenPreTime=0; //开灯瞬间5ms内处理计数
-                   BikeLedCheck_L.uwBike_LedCheckLowTime=0;//检测过流IO出现低电平次数
-                   BikeLedCheck_L.blBike_ForwardLedStart=TRUE; //前灯允许开灯启动,总开关
-                   BikeLedCheck_L.blBike_LedCurErr=FALSE;
-                   //DL_TimerG_startCounter(PWM_B_L_INST);
-//                   DL_Timer_overrideCCPOut(PWM_B_L_INST, DL_TIMER_FORCE_OUT_DISABLED, DL_TIMER_FORCE_CMPL_OUT_DISABLED, GPIO_PWM_B_L_C0_IDX);
-                   GPIOA->POLARITY15_0 &= ~(DL_GPIO_PIN_3_EDGE_RISE |DL_GPIO_PIN_3_EDGE_FALL);
-                   GPIOA->POLARITY15_0  |=DL_GPIO_PIN_3_EDGE_RISE;
-               }
-
-               if((BikeLedCheck_L.uwBike_OpenLedEn==0) &&(BikeLedCheck_L.blBike_ForwardLedStart==TRUE)) //开灯检测,过流后每隔10秒检测1次
-               {
-                LED_EnableDeal(&BikeLedCheck_L,1,L_PWM_byte);
-               }
-               else
-               {
-                   GPIOA->POLARITY15_0 &= ~(DL_GPIO_PIN_3_EDGE_RISE |DL_GPIO_PIN_3_EDGE_FALL);
-                   GPIOA->POLARITY15_0  |=DL_GPIO_PIN_3_EDGE_FALL;
-               }
-
-               BikeLedCheck_L.uwBike_keyLedLowSta=1;
-         }
-         else
-         {
-             BikeLedCheck_L.uwBike_keyLedHighSta=0;
-             if(BikeLedCheck_L.uwBike_keyLedLowSta!=0)
-                {
-                 BikeLedCheck_L.uwBike_keyLedLowSta=0;
-                    BikeLedCheck_L.uwBikeLight_PWM=0;
- //                   DL_TimerG_setCaptureCompareValue(PWM_B_L_INST, BikeLedCheck_L.uwBikeLight_PWM, GPIO_PWM_B_L_C0_IDX);//max=2304
-                }
-         }
-//---------------------
-
-#if(BIKE_OXFORD_EN!=0)
-    IO_FORWARDLED_ON(); //开前灯
-    IO_BACKLED_ON();
-
-#endif
-
-    //--------------LED电路检测----------
-//-------F_LED
-    if((BikeLedCheck_F.blBike_LedCurErr==TRUE )&&(BikeLedCheck_F.blBike_LedSta == TRUE))  //过流标志,前灯恢复检测
-    {
-        BikeLedCheck_F.uwBike_LedOffErrCnt++;
-        if(BikeLedCheck_F.uwBike_LedOffErrCnt>2000) //1000ms
+        //DC1灯控制
+        ledfunctions[BikeLedCheck_DC_1.uwBike_LedMode](&BikeLedCheck_DC_1);
+        if( BikeLedCheck_DC_1.blBike_LedSta==TRUE)
         {
-            BikeLedCheck_F.uwBike_keyLedHighSta=0;
-            BikeLedCheck_F.uwBike_LedOffErrCnt=0;
-            BikeLedCheck_F.blBike_LedCurErr=FALSE;
-            BikeLedCheck_F.blBike_ForwardLedStart=TRUE;//前灯允许开灯启动,总开关
-
+            IO_LED1_6or12V_EN_H();
         }
-     }
-    else
-    {
-        BikeLedCheck_F.uwBike_LedOffErrCnt=0;
-    }
-
-//------B_LED
-    if((BikeLedCheck_B.blBike_LedCurErr==TRUE)&&(BikeLedCheck_B.blBike_LedSta == TRUE)) //后灯恢复检测
-    {
-
-       BikeLedCheck_B.uwBike_LedOffErrCnt++;
-       if(BikeLedCheck_B.uwBike_LedOffErrCnt>2000)
-       {
-           BikeLedCheck_B.uwBike_keyLedHighSta=0;
-           BikeLedCheck_B.uwBike_LedOffErrCnt=0;
-           BikeLedCheck_B.blBike_LedCurErr=FALSE;
-           BikeLedCheck_B.blBike_ForwardLedStart=TRUE;//前灯允许开灯启动,总开关
-       }
-
-     }
-    else
-    {
-        BikeLedCheck_B.uwBike_LedOffErrCnt=0;
-    }
-
-//------R_LED
-
-    if((BikeLedCheck_R.blBike_LedCurErr==TRUE )&&(BikeLedCheck_R.blBike_LedSta == TRUE))  //过流标志,前灯恢复检测
-    {
-        BikeLedCheck_R.uwBike_LedOffErrCnt++;
-        if(BikeLedCheck_R.uwBike_LedOffErrCnt>2000) //1000ms
+        else
         {
-            BikeLedCheck_R.uwBike_keyLedHighSta=0;
-            BikeLedCheck_R.uwBike_LedOffErrCnt=0;
-            BikeLedCheck_R.blBike_LedCurErr=FALSE;
-            BikeLedCheck_R.blBike_ForwardLedStart=TRUE;//前灯允许开灯启动,总开关
-
+            IO_LED1_6or12V_EN_L();
         }
-     }
-    else
-    {
-        BikeLedCheck_R.uwBike_LedOffErrCnt=0;
-    }
-
-//------L_LED
-    if((BikeLedCheck_L.blBike_LedCurErr==TRUE )&&(BikeLedCheck_L.blBike_LedSta == TRUE))  //过流标志,前灯恢复检测
-    {
-        BikeLedCheck_L.uwBike_LedOffErrCnt++;
-        if(BikeLedCheck_L.uwBike_LedOffErrCnt>2000) //1000ms
+        //DC2灯控制
+        ledfunctions[BikeLedCheck_DC_2.uwBike_LedMode](&BikeLedCheck_DC_2);
+        if( BikeLedCheck_DC_2.blBike_LedSta==TRUE)
         {
-            BikeLedCheck_L.uwBike_keyLedHighSta=0;
-            BikeLedCheck_L.uwBike_LedOffErrCnt=0;
-            BikeLedCheck_L.blBike_LedCurErr=FALSE;
-            BikeLedCheck_L.blBike_ForwardLedStart=TRUE;//前灯允许开灯启动,总开关
+            IO_LED2_6or12V_EN_H();
+        }
+        else
+        {
+            IO_LED2_6or12V_EN_L();
+        }
+        //BAT灯控制
+        #if(BIKELEDOPEN_F_ENABLE!=0)
+        ledfunctions[BikeLedCheck_F.uwBike_LedMode](&BikeLedCheck_F);
+        if (BikeLedCheck_F.blBike_LedSta == TRUE)
+        {
+            if(BikeLedCheck_F.uwBike_keyLedHighSta==0)
+            {
+                BikeLedCheck_F.uwBike_keyLedHighSta=1;
+                BikeLedCheck_F.uwBike_OpenLedEn=0;//开灯瞬间处理标志
+                BikeLedCheck_F.uwBike_LedOffErrCnt=0;  //10秒一检测计时
+                BikeLedCheck_F.uwBike_OpenPreTime=0; //开灯瞬间5ms内处理计数
+                BikeLedCheck_F.uwBike_LedCheckLowTime=0;//检测过流IO出现低电平次数
+                BikeLedCheck_F.blBike_ForwardLedStart=TRUE; //前灯允许开灯启动,总开关
+                BikeLedCheck_F.blBike_LedCurErr=FALSE;
+                DL_TimerG_startCounter(PWM_F_INST);
+            }
+            if((BikeLedCheck_F.uwBike_OpenLedEn==0) &&(BikeLedCheck_F.blBike_ForwardLedStart==TRUE)) //开灯检测,过流后每隔10秒检测1次
+            {
+                LED_EnableDeal(&BikeLedCheck_F,1,F_PWM_byte);
+            }
+            BikeLedCheck_F.uwBike_keyLedLowSta=1;
+        }
+        else
+        {
+            BikeLedCheck_F.uwBike_keyLedHighSta=0;
+            if(BikeLedCheck_F.uwBike_keyLedLowSta!=0)
+            {
+                BikeLedCheck_F.uwBike_keyLedLowSta=0;
+                BikeLedCheck_F.uwBikeLight_PWM=0;
+                DL_TimerG_setCaptureCompareValue(PWM_F_INST, BikeLedCheck_F.uwBikeLight_PWM, GPIO_PWM_F_C1_IDX);//max=2304
+            }
+        }
+        #endif
 
+        //BAT灯检测
+        if((BikeLedCheck_F.blBike_LedCurErr==TRUE )&&(BikeLedCheck_F.blBike_LedSta == TRUE))  //过流标志,前灯恢复检测
+        {
+            BikeLedCheck_F.uwBike_LedOffErrCnt++;
+            if(BikeLedCheck_F.uwBike_LedOffErrCnt>2000) //1000ms
+            {
+                BikeLedCheck_F.uwBike_keyLedHighSta=0;
+                BikeLedCheck_F.uwBike_LedOffErrCnt=0;
+                BikeLedCheck_F.blBike_LedCurErr=FALSE;
+                BikeLedCheck_F.blBike_ForwardLedStart=TRUE;//前灯允许开灯启动,总开关
+            }
+         }
+        else
+        {
+            BikeLedCheck_F.uwBike_LedOffErrCnt=0;
         }
-     }
-    else
-    {
-        BikeLedCheck_L.uwBike_LedOffErrCnt=0;
     }
-    //------
-
-}
-
 }
 
 void LED_EnableDeal(BIKELEDCHECK_STR *p,UWORD switchAction,LED_PWM_STR mode )
 {
-
-if(switchAction!=0)
-{
-
-
-    if(p->uwBike_OpenPreTime<2000)
-     p->uwBike_OpenPreTime++;
-    if(p->uwBike_OpenPreTime<=2)//2ms
+    if(switchAction!=0)
     {
-        if(mode==F_PWM_byte)
-        {
-            p->uwBikeLight_PWM=LIGHT_FIRSTPWM;//
-        }
-        else
+        if(p->uwBike_OpenPreTime<2000)
+            p->uwBike_OpenPreTime++;
+        if(p->uwBike_OpenPreTime<=2)//2ms
         {
-            p->uwBikeLight_PWM=LIGHTBLR_FIRSTPWM;//
+            if(mode==F_PWM_byte)
+            {
+                p->uwBikeLight_PWM=LIGHT_FIRSTPWM;//
+            }
+            else
+            {
+                p->uwBikeLight_PWM=LIGHTBLR_FIRSTPWM;//
+            }
         }
-
-    }
-    else if(p->uwBike_OpenPreTime<=3) //4
-    {
-       // p->uwBikeLight_PWM =691 ;//720;//
-        if((p->uwBike_OpenLedEn ==0)&&(p->blBike_LedCurErr==TRUE))
+        else if(p->uwBike_OpenPreTime<=3) //4
         {
-            p->uwBikeLight_PWM =LIGHT_SECTPWM ;//720;//
+            if((p->uwBike_OpenLedEn ==0)&&(p->blBike_LedCurErr==TRUE))
+            {
+                p->uwBikeLight_PWM =LIGHT_SECTPWM ;//720;//
+            }
+            else
+            {
+                p->uwBikeLight_PWM=0;
+            }
         }
-        else
+        if((p->uwBike_OpenPreTime>2) && (p->uwBikeLight_PWM!=0))// ||(p->uwBike_LedCheckLowTime>=2)
         {
-            p->uwBikeLight_PWM=0;
+            p->blBike_LedCurErr=FALSE;
+            p->uwBike_OpenLedEn=1;
         }
-
-    }
-//    else if(p->uwBike_OpenPreTime>=1000)
-//    {
-//        p->uwBikeLight_PWM=0;//
-//        p->uwBike_OpenLedEn=1;
-//    }
-    if((p->uwBike_OpenPreTime>2) && (p->uwBikeLight_PWM!=0))// ||(p->uwBike_LedCheckLowTime>=2)
-         {
-             p->blBike_LedCurErr=FALSE;
-             p->uwBike_OpenLedEn=1;
-         }
-
-    if(p->uwBike_OpenLedEn!=0) //
+        if(p->uwBike_OpenLedEn!=0) //
         {
             p->uwBikeLight_PWM=LIGHT_MAXPWM;//
-
         }
-
-}
-else
-{
-    p->uwBikeLight_PWM=0;//
-}
-if(mode==F_PWM_byte)
-  {
-      DL_TimerG_setCaptureCompareValue(PWM_F_INST, p->uwBikeLight_PWM, GPIO_PWM_F_C1_IDX);//max=2304
-  }
-//  else if(mode==B_PWM_byte)
-//  {
-//      DL_TimerG_setCaptureCompareValue(PWM_B_L_INST, p->uwBikeLight_PWM, GPIO_PWM_B_L_C1_IDX);//max=2304
-//  }
-//  else if(mode==L_PWM_byte)
-//  {
-//      DL_TimerG_setCaptureCompareValue(PWM_B_L_INST, p->uwBikeLight_PWM, GPIO_PWM_B_L_C0_IDX);//max=2304
-//  }
-//  else if(mode==R_PWM_byte)
-//   {
-//       DL_TimerG_setCaptureCompareValue(PWM_R_INST, p->uwBikeLight_PWM, GPIO_PWM_R_C1_IDX);//max=2304
-//   }
-
-
+    }
+    else
+    {
+        p->uwBikeLight_PWM=0;//
+    }
+    if(mode==F_PWM_byte)
+      {
+          DL_TimerG_setCaptureCompareValue(PWM_F_INST, p->uwBikeLight_PWM, GPIO_PWM_F_C1_IDX);//max=2304
+      }
 }
 
-
-
-
 /*************************************************************************
  Local Functions (N/A)
 *************************************************************************/

+ 1 - 1
3.BasicFunction/Source/bikespeed.c

@@ -154,7 +154,7 @@ static void bikespeed_voBikeSpeedWork(UWORD source)
             //bikespeed_stFreGetOut.uwCaputure1Cnt =(UWORD)CapValutBike_CCRx();// (UWORD)iCap_GetCaptureValue(HW_BIKESPD_CAD_CAP, CAP_CH(3));
             bikespeed_stFreGetOut.uwCaputureOverflowCntLast = ((ULONG)3000 * 1000 / bikespeed_stFreGetCof.uwTimerUnit);
         }
-        else if ((bikespeed_stFreGetOut.uwCaputureNumCnt == 1)/* && (tmp_OverflowCnt > 25)*/)
+        else if (bikespeed_stFreGetOut.uwCaputureNumCnt == 1)
         {
             tmpCnt --;
             bikespeed_stFreGetOut.uwCaputureNumCnt = 2;

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

@@ -774,7 +774,7 @@ void Can_voMC_Run_200ms(void)
             (((SQWORD)bikespeed_stFreGetOut.uwLPFFrequencyPu * FBASE * ass_ParaCong.uwWheelPerimeter * 36 >> 20) * 1048 * 10) >> 20;
 //        MC_RunInfoToCDL.BikeSpeed =  MC_RunInfoToCDL.MotorSpeed /10;
         MC_RunInfoToCDL.IqCurrent = ((SLONG)scm_swIqRefPu * cof_uwIbAp * 100) >> 14;
-        MC_RunInfoToCDL.AlarmCode = MC_ErrorCode.Code && 0x00FF;
+        MC_RunInfoToCDL.AlarmCode = MC_ErrorCode.Code & 0x00FF;
         //SendData(ID_MC_TO_CDL, MODE_REPORT, 0xF112, (uint8_t *)&MC_RunInfoToCDL.Torque);
     }
 

+ 18 - 16
4.BasicHardwSoftwLayer/1.BasicHardwLayer/Include/UserGpio_Config.h

@@ -22,14 +22,9 @@
 
 #define Get_POWER_SWSTATE_PORT()       1// DL_GPIO_readPins(INPUT_ACC_KEY_PORT, INPUT_ACC_KEY_PIN)// (GPIO_PINS_7 & GPIOF->idt)   //寮�鏈烘寜閿�
 
-    
-
 #define Set_POWER_LOCK_PORT()            DL_GPIO_setPins(OUTPUT_PORT, OUTPUT_POWER_EN_PIN)// (  GPIOB->scr = GPIO_PINS_3 )   //  电源自锁
 #define Reset_POWER_LOCK_PORT()         DL_GPIO_clearPins(OUTPUT_PORT, OUTPUT_POWER_EN_PIN)//   (GPIOB->clr = GPIO_PINS_3 )   //
 
-
-
-
 #define Get_CAD_DIR_PORT()              DL_GPIO_readPins(INPUT_Cadence_Dir_PORT, INPUT_Cadence_Dir_PIN)//  (GPIOB->idt &GPIO_PINS_9) // CAD
 #define Get_CAD_FRE_PORT()              DL_GPIO_readPins(INPUT_Cadence_Speed_PORT, INPUT_Cadence_Speed_PIN)//  (GPIOB->idt &GPIO_PINS_9) // CAD
 
@@ -39,21 +34,28 @@
 #define IO_FORWARDLED_ON()       1 // DL_GPIO_setPins(LIGHT_DETECT_FRONT_PORT, LIGHT_DETECT_FRONT_PIN)//   ( GPIOC->scr = GPIO_PINS_15 )  //PC15 璐熸帶
 #define IO_FORWARDLED_OFF()       1// DL_GPIO_clearPins(LIGHT_DETECT_FRONT_PORT, LIGHT_DETECT_FRONT_PIN)//   (GPIOC->clr = GPIO_PINS_15 )
 
+#define IO_CHECKIO_H()      DL_GPIO_setPins(CHECKIO_PORT, CHECKIO_PIN_0_PIN)
+#define IO_CHECKIO_L()      DL_GPIO_clearPins(CHECKIO_PORT, CHECKIO_PIN_0_PIN)
+
+#define IO_FTESTLED_ON()      DL_GPIO_setPins(OUTPUT_PORT, OUTPUT_LED_F_PIN)
+#define IO_FTESTLED_OFF()     DL_GPIO_clearPins(OUTPUT_PORT, OUTPUT_LED_F_PIN)
 
- #define IO_CHECKIO_H()      DL_GPIO_setPins(CHECKIO_PORT, CHECKIO_PIN_0_PIN)
- #define IO_CHECKIO_L()      DL_GPIO_clearPins(CHECKIO_PORT, CHECKIO_PIN_0_PIN)
 
- #define IO_FTESTLED_ON()      DL_GPIO_setPins(OUTPUT_PORT, OUTPUT_LED_F_PIN)
- #define IO_FTESTLED_OFF()     DL_GPIO_clearPins(OUTPUT_PORT, OUTPUT_LED_F_PIN)
+//DC1灯
+#define IO_LED1_6or12V_EN_H()          1//DL_GPIO_setPins(GPIO_12V6_PORT, GPIO_12V6_PIN_EN_PIN)//
+#define IO_LED1_6or12V_EN_L()          1//DL_GPIO_clearPins(GPIO_12V6_PORT, GPIO_12V6_PIN_EN_PIN)//
+#define IO_LED1_6or12V_Choise_H()      1//DL_GPIO_setPins(GPIO_12V6_PORT, GPIO_12V6_PIN_SEL_PIN)//
+#define IO_LED1_6or12V_Choise_L()      1//DL_GPIO_clearPins(GPIO_12V6_PORT, GPIO_12V6_PIN_SEL_PIN)//
 
-#define IO_LED_6or12V_EN_H()          1// DL_GPIO_setPins(GPIO_12V6_PORT, GPIO_12V6_PIN_EN_PIN)//
-#define IO_LED_6or12V_EN_L()          1//DL_GPIO_clearPins(GPIO_12V6_PORT, GPIO_12V6_PIN_EN_PIN)//
-#define IO_LED_6or12V_Choise_H()     1// DL_GPIO_setPins(GPIO_12V6_PORT, GPIO_12V6_PIN_SEL_PIN)//
-#define IO_LED_6or12V_Choise_L()     1//   DL_GPIO_clearPins(GPIO_12V6_PORT, GPIO_12V6_PIN_SEL_PIN)//
+//DC2灯
+#define IO_LED2_6or12V_EN_H()          DL_GPIO_setPins(GPIO_B_LED_PORT, GPIO_B_LED_PIN_EN_PIN)//
+#define IO_LED2_6or12V_EN_L()          DL_GPIO_clearPins(GPIO_B_LED_PORT, GPIO_B_LED_PIN_EN_PIN)//
+#define IO_LED2_6or12V_Choise_H()      DL_GPIO_setPins(GPIO_B_LED_PORT, GPIO_B_LED_PIN_SEL_PIN)//
+#define IO_LED2_6or12V_Choise_L()      DL_GPIO_clearPins(GPIO_B_LED_PORT, GPIO_B_LED_PIN_SEL_PIN)//
 
-#define IO_FORWARDLEDCHECK_PORT()   1// DL_GPIO_readPins(LIGHT_DETECT_FRONT_PORT, LIGHT_DETECT_FRONT_PIN)// (GPIO_PINS_0 & GPIOF->idt)  //PF0 杩囨祦妫�娴�
-#define Get_F_LEDCHECK_PORT()         DL_GPIO_readPins(GPIO_COMP_FLEDCHECK_IN0P_PORT, GPIO_COMP_FLEDCHECK_IN0P_PIN)
-#define Get_B_LEDCHECK_PORT()         DL_GPIO_readPins(LIGHT_DETECT_BACK_PORT, LIGHT_DETECT_BACK_PIN)
+#define IO_FORWARDLEDCHECK_PORT()      1// DL_GPIO_readPins(LIGHT_DETECT_FRONT_PORT, LIGHT_DETECT_FRONT_PIN)// (GPIO_PINS_0 & GPIOF->idt)  //PF0 杩囨祦妫�娴�
+#define Get_F_LEDCHECK_PORT()          DL_GPIO_readPins(GPIO_COMP_FLEDCHECK_IN0P_PORT, GPIO_COMP_FLEDCHECK_IN0P_PIN)
+#define Get_B_LEDCHECK_PORT()          DL_GPIO_readPins(LIGHT_DETECT_BACK_PORT, LIGHT_DETECT_BACK_PIN)
 
 /* 尾灯IO on/off */
 #define IO_BACKLED_ON()            1// DL_GPIO_setPins(LIGHT_DETECT_PORT, LIGHT_DETECT_B_LIGHT_OFF_PIN)//  (GPIOC->scr = GPIO_PINS_13 )   //PC13

+ 5 - 5
4.BasicHardwSoftwLayer/2.BasicSoftwLayer/Include/syspar.h

@@ -27,7 +27,7 @@ Update Time
 /*======================================================================*
    Bike Riding Parameter Config
 *=======================================================================*/
-#define IPM_POWER_250W_6G          0x0
+#define IPM_POWER_250W_6G          0x00
 #define IPM_POWER_350W_6G          0x01
 #define IPM_POWER_350W_9G          0x02
 #define IPM_POWER_500W_9G          0x03
@@ -38,12 +38,12 @@ Update Time
 #define IPM_POWER_1000W_MINI_12G   0x08
 #define IPM_POWER_350W_MINI_12G    0x09
 
-#define IPM_POWER_SEL       IPM_POWER_250W_6G// IPM_POWER_250W_6G// IPM_POWER_250W_6G// IPM_POWER_250W_6G//IPM_POWER_350W_MINI_12G
+#define IPM_POWER_SEL           IPM_POWER_250W_6G
 
 
 #define IPM_VOLTAGE_36V         0x0
 #define IPM_VOLTAGE_48V         0x1
-#define IPM_VOLTAGE_SEL         IPM_VOLTAGE_48V
+#define IPM_VOLTAGE_SEL         IPM_VOLTAGE_36V
 
 #define BIKE_TYPE_R219          0x0
 #define BIKE_TYPE_R168          0x01
@@ -54,12 +54,12 @@ Update Time
 #define BIKE_SPEED_LIMIT_25     0x0 
 #define BIKE_SPEED_LIMIT_32     0x1 
 #define BIKE_SPEED_LIMIT_45     0x2 
-#define BIKE_SPEED_LIMIT_SEL    BIKE_SPEED_LIMIT_32
+#define BIKE_SPEED_LIMIT_SEL    BIKE_SPEED_LIMIT_25
 
 #define BIKE_THROTTLE_SPEED_LIMIT_25  0x0 
 #define BIKE_THROTTLE_SPEED_LIMIT_32  0x1 
 #define BIKE_THROTTLE_SPEED_LIMIT_45  0x2 
-#define BIKE_THROTTLE_SPEED_LIMIT_SEL    BIKE_THROTTLE_SPEED_LIMIT_32
+#define BIKE_THROTTLE_SPEED_LIMIT_SEL    BIKE_THROTTLE_SPEED_LIMIT_25
 /*======================================================================*
     uart2关闭与打开
     0-打开LED12v电源  1- 关闭关闭 可仿真

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

@@ -62,6 +62,11 @@ Update Time
 #define MOTOR_LUNGU_WELLING_HAL_POLE8_750W          0x60
 #define MOTOR_LUNGU_WELLING_HAL_POLE8_1000W         0x70
 
+#define MOTOR_VOLANS                                0x80
+#define MOTOR_VOLANS_PLUS                           0x81
+#define MOTOR_PEGASI                                0x82
+#define MOTOR_PEGASI_PLUS                           0x83
+
 /* Select Motor */
 #if( (IPM_POWER_SEL == IPM_POWER_1000W_12G) ||(IPM_POWER_SEL ==IPM_POWER_1000W_MINI_12G))
 #define MOTOR_ID_SEL MOTOR_LUNGU_WELLING_HAL_POLE8_1000W
@@ -71,15 +76,14 @@ Update Time
 #define MOTOR_ID_SEL  MOTOR_LUNGU_WELLING_HAL_POLE8_500W
 #elif(IPM_POWER_SEL ==IPM_POWER_350W_MINI_12G)
 #define MOTOR_ID_SEL  MOTOR_LUNGU_WELLING_HAL_POLE8_350W_958Ratio
-
 #elif (IPM_POWER_SEL == IPM_POWER_500W_9G)
 #define MOTOR_ID_SEL   MOTOR_LUNGU_WELLING_HAL_POLE8_500W//MOTOR_LUNGU_WELLING_HAL_POLE8_500W_958Ratio
 #elif (IPM_POWER_SEL == IPM_POWER_350W_9G)
 #define MOTOR_ID_SEL   MOTOR_LUNGU_WELLING_HAL_POLE8_350W_958Ratio
 #elif ((IPM_POWER_SEL == IPM_POWER_250W_6G)||(IPM_POWER_SEL == IPM_POWER_350W_6G))
-#define MOTOR_ID_SEL  MOTOR_LUNGU_WELLING_HAL_POLE8_500W//
+#define MOTOR_ID_SEL  MOTOR_VOLANS_PLUS
 #else
-#define MOTOR_ID_SEL MOTOR_LUNGU_WELLING_HAL_POLE8_250W
+#define MOTOR_ID_SEL MOTOR_VOLANS_PLUS
 #endif
 
 /*======================================================================*
@@ -476,35 +480,125 @@ Update Time
 #define M_MAX_TOR_NM        50             // unit: 0.1Nm, Max tor
 #endif
 
-//#if (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_1000W)     //嘉宏1000W电机参数
-//#define M_POLE_PAIRS        8              // unit:Null,Pole pairs
-//#define M_RS_OHM            195            // unit: 0.1mOhm, Phase resistance
-//#define M_MATERIAL          Al             // unit:Null
-//#define M_LD_NOLOAD_MH      6250           // unit: 0.01uH, D axis inductance
-//#define M_LQ_NOLOAD_MH      6750           // unit: 0.01uH, Q axis inductance
-//#define M_LD_TURN1_ID_AP    200            // unit: 0.01A,
-//#define M_LD_TURN1_LD_MH    M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
-//#define M_LD_TURN2_ID_AP    700            // unit: 0.01A,
-//#define M_LD_TURN2_LD_MH    M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
-//#define M_LD_MIN_MH         M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
-//#define M_LQ_TURN1_IQ_AP    200            // unit: 0.01A,
-//#define M_LQ_TURN1_LQ_MH    M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
-//#define M_LQ_TURN2_IQ_AP    700            // unit: 0.01A,
-//#define M_LQ_TURN2_LQ_MH    M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
-//#define M_LQ_MIN_MH         M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
-//#define M_JD                1000           // unit: 10-7Kg*m2, Rotational inertia
-//#define M_MAGNETIC_MATERIAL Ferrite        // unit:Null
-//#define M_FLUX_WB           7332           // unit: 0.001mWb, Flux linkage
-//#define M_ID_MAX_AP         0              // unit: 0.01A, Max d axis current
-//#define M_ID_MIN_AP         -1500           // unit: 0.01A, Min d axis current
-//#define M_IS_PEAK_MAX_AP    7500           // unit: 0.01A, Max phase current(below base speed)
-//#define M_POWER_MAX_WT      1200           // unit: W, Max power
-//#define M_R_SPD_RPM         3978           // unit: r/min, rate spd
-//#define M_R_PWR_WT          1000           // unit: W, rate power
-//#define M_R_IRMS_A          2500           // unit: 0.01A, rate Irms
-//#define M_R_UDC_v           480            // unit: 0.1V, rate Udc
-//#define M_MAX_TOR_NM        50             // unit: 0.1Nm, Max tor
-//#endif
+#if (MOTOR_ID_SEL == MOTOR_VOLANS)
+#define M_POLE_PAIRS        8              // unit:Null,Pole pairs
+#define M_RS_OHM            1160            // unit: 0.1mOhm, Phase resistance
+#define M_MATERIAL          Al             // unit:Null
+#define M_LD_NOLOAD_MH      32500           // unit: 0.01uH, D axis inductance
+#define M_LQ_NOLOAD_MH      38000           // unit: 0.01uH, Q axis inductance
+#define M_LD_TURN1_ID_AP    200            // unit: 0.01A,
+#define M_LD_TURN1_LD_MH    M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
+#define M_LD_TURN2_ID_AP    700            // unit: 0.01A,
+#define M_LD_TURN2_LD_MH    M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
+#define M_LD_MIN_MH         M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
+#define M_LQ_TURN1_IQ_AP    200            // unit: 0.01A,
+#define M_LQ_TURN1_LQ_MH    M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
+#define M_LQ_TURN2_IQ_AP    700            // unit: 0.01A,
+#define M_LQ_TURN2_LQ_MH    M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
+#define M_LQ_MIN_MH         M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
+#define M_JD                1000           // unit: 10-7Kg*m2, Rotational inertia
+#define M_MAGNETIC_MATERIAL Ferrite        // unit:Null
+#define M_FLUX_WB           17035          // unit: 0.001mWb, Flux linkage
+#define M_ID_MAX_AP         0              // unit: 0.01A, Max d axis current
+#define M_ID_MIN_AP         -157           // unit: 0.01A, Min d axis current
+#define M_IS_PEAK_MAX_AP    3500           // unit: 0.01A, Max phase current(below base speed)
+#define M_POWER_MAX_WT      4680           // unit: W, Max power
+#define M_R_SPD_RPM         1200           // unit: r/min, rate spd
+#define M_R_PWR_WT          250            // unit: W, rate power
+#define M_R_IRMS_A          2500           // unit: 0.01A, rate Irms
+#define M_R_UDC_v           360            // unit: 0.1V, rate Udc
+#define M_MAX_TOR_NM        50             // unit: 0.1Nm, Max tor
+#endif
+
+#if (MOTOR_ID_SEL == MOTOR_VOLANS_PLUS)
+#define M_POLE_PAIRS        8              // unit:Null,Pole pairs
+#define M_RS_OHM            1235            // unit: 0.1mOhm, Phase resistance
+#define M_MATERIAL          Al             // unit:Null
+#define M_LD_NOLOAD_MH      26500           // unit: 0.01uH, D axis inductance
+#define M_LQ_NOLOAD_MH      34400           // unit: 0.01uH, Q axis inductance
+#define M_LD_TURN1_ID_AP    200            // unit: 0.01A,
+#define M_LD_TURN1_LD_MH    M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
+#define M_LD_TURN2_ID_AP    700            // unit: 0.01A,
+#define M_LD_TURN2_LD_MH    M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
+#define M_LD_MIN_MH         M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
+#define M_LQ_TURN1_IQ_AP    200            // unit: 0.01A,
+#define M_LQ_TURN1_LQ_MH    M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
+#define M_LQ_TURN2_IQ_AP    700            // unit: 0.01A,
+#define M_LQ_TURN2_LQ_MH    M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
+#define M_LQ_MIN_MH         M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
+#define M_JD                1000           // unit: 10-7Kg*m2, Rotational inertia
+#define M_MAGNETIC_MATERIAL Ferrite        // unit:Null
+#define M_FLUX_WB           20727          // unit: 0.001mWb, Flux linkage
+#define M_ID_MAX_AP         0              // unit: 0.01A, Max d axis current
+#define M_ID_MIN_AP         -157           // unit: 0.01A, Min d axis current
+#define M_IS_PEAK_MAX_AP    3500           // unit: 0.01A, Max phase current(below base speed)
+#define M_POWER_MAX_WT      4680           // unit: W, Max power
+#define M_R_SPD_RPM         1200           // unit: r/min, rate spd
+#define M_R_PWR_WT          250            // unit: W, rate power
+#define M_R_IRMS_A          2500           // unit: 0.01A, rate Irms
+#define M_R_UDC_v           360            // unit: 0.1V, rate Udc
+#define M_MAX_TOR_NM        50             // unit: 0.1Nm, Max tor
+#endif
+
+#if (MOTOR_ID_SEL == MOTOR_PEGASI)
+#define M_POLE_PAIRS        8              // unit:Null,Pole pairs
+#define M_RS_OHM            1235            // unit: 0.1mOhm, Phase resistance
+#define M_MATERIAL          Al             // unit:Null
+#define M_LD_NOLOAD_MH      26500           // unit: 0.01uH, D axis inductance
+#define M_LQ_NOLOAD_MH      34400           // unit: 0.01uH, Q axis inductance
+#define M_LD_TURN1_ID_AP    200            // unit: 0.01A,
+#define M_LD_TURN1_LD_MH    M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
+#define M_LD_TURN2_ID_AP    700            // unit: 0.01A,
+#define M_LD_TURN2_LD_MH    M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
+#define M_LD_MIN_MH         M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
+#define M_LQ_TURN1_IQ_AP    200            // unit: 0.01A,
+#define M_LQ_TURN1_LQ_MH    M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
+#define M_LQ_TURN2_IQ_AP    700            // unit: 0.01A,
+#define M_LQ_TURN2_LQ_MH    M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
+#define M_LQ_MIN_MH         M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
+#define M_JD                1000           // unit: 10-7Kg*m2, Rotational inertia
+#define M_MAGNETIC_MATERIAL Ferrite        // unit:Null
+#define M_FLUX_WB           20727          // unit: 0.001mWb, Flux linkage
+#define M_ID_MAX_AP         0              // unit: 0.01A, Max d axis current
+#define M_ID_MIN_AP         -157           // unit: 0.01A, Min d axis current
+#define M_IS_PEAK_MAX_AP    3500           // unit: 0.01A, Max phase current(below base speed)
+#define M_POWER_MAX_WT      5400           // unit: W, Max power
+#define M_R_SPD_RPM         1200           // unit: r/min, rate spd
+#define M_R_PWR_WT          250            // unit: W, rate power
+#define M_R_IRMS_A          2500           // unit: 0.01A, rate Irms
+#define M_R_UDC_v           360            // unit: 0.1V, rate Udc
+#define M_MAX_TOR_NM        50             // unit: 0.1Nm, Max tor
+#endif
+
+#if (MOTOR_ID_SEL == MOTOR_PEGASI_PLUS)
+#define M_POLE_PAIRS        8              // unit:Null,Pole pairs
+#define M_RS_OHM            820            // unit: 0.1mOhm, Phase resistance
+#define M_MATERIAL          Al             // unit:Null
+#define M_LD_NOLOAD_MH      18900           // unit: 0.01uH, D axis inductance
+#define M_LQ_NOLOAD_MH      24300           // unit: 0.01uH, Q axis inductance
+#define M_LD_TURN1_ID_AP    200            // unit: 0.01A,
+#define M_LD_TURN1_LD_MH    M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
+#define M_LD_TURN2_ID_AP    700            // unit: 0.01A,
+#define M_LD_TURN2_LD_MH    M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
+#define M_LD_MIN_MH         M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
+#define M_LQ_TURN1_IQ_AP    200            // unit: 0.01A,
+#define M_LQ_TURN1_LQ_MH    M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
+#define M_LQ_TURN2_IQ_AP    700            // unit: 0.01A,
+#define M_LQ_TURN2_LQ_MH    M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
+#define M_LQ_MIN_MH         M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
+#define M_JD                1000           // unit: 10-7Kg*m2, Rotational inertia
+#define M_MAGNETIC_MATERIAL Ferrite        // unit:Null
+#define M_FLUX_WB           19939          // unit: 0.001mWb, Flux linkage
+#define M_ID_MAX_AP         0              // unit: 0.01A, Max d axis current
+#define M_ID_MIN_AP         -157           // unit: 0.01A, Min d axis current
+#define M_IS_PEAK_MAX_AP    3500           // unit: 0.01A, Max phase current(below base speed)
+#define M_POWER_MAX_WT      8160           // unit: W, Max power
+#define M_R_SPD_RPM         1500           // unit: r/min, rate spd
+#define M_R_PWR_WT          500            // unit: W, rate power
+#define M_R_IRMS_A          2500           // unit: 0.01A, rate Irms
+#define M_R_UDC_v           360            // unit: 0.1V, rate Udc
+#define M_MAX_TOR_NM        50             // unit: 0.1Nm, Max tor
+#endif
 
 /*======================================================================*
    Alarm threshold value & time of duration define
@@ -601,7 +695,7 @@ Update Time
 #endif
 
 /* Over speed */
-#define ALM_OVR_SPD_VAL 6000 // unit: rpm, Threshold value
+#define ALM_OVR_SPD_VAL 2500 // unit: rpm, Threshold value
 #define ALM_OVR_SPD_TM  100  // unit: ms, Time of duration(TBS)
 
 /* ADC self detecting */

+ 1 - 1
4.BasicHardwSoftwLayer/2.BasicSoftwLayer/Source/CodePara.c

@@ -46,7 +46,7 @@ void CodeParaInit(void)
     cp_stFlg.RunModelSelect = CadAssist; //ClZLOOP; //IFContorl; //CadAssist;
 #endif
     cp_stFlg.ThetaGetModelSelect = ANG_SWITCHHALL;//ANG_SWITCHHALL;//ANG_OBSERVER; //ANG_SWITCHHALL; //ANG_SWITCHHALL;
-    cp_stFlg.RotateDirectionSelect = BackwardRotate; //ForwardRotate  0  BackwardRotate  1
+    cp_stFlg.RotateDirectionSelect = ForwardRotate; //ForwardRotate  0  BackwardRotate  1
   
 #if(SampleModelSelect == DOUBLERESISTANCE) 
     cp_stFlg.CurrentSampleModelSelect = DOUBLERESISTANCE;

+ 31 - 177
m0g3507_int.c

@@ -1030,197 +1030,51 @@ void MOTOR_PWM_INST_IRQHandler(void) //void TMR1_BRK_OVF_TRG_HALL_IRQHandler(voi
   */
 void GROUP1_IRQHandler(void) //void TMR3_GLOBAL_IRQHandler(void)
 {
+    uint32_t gpioA = DL_GPIO_getEnabledInterruptStatus(GPIOA, DL_GPIO_PIN_8 | DL_GPIO_PIN_26);
+    uint32_t gpioB = DL_GPIO_getEnabledInterruptStatus(GPIOB, DL_GPIO_PIN_3 | DL_GPIO_PIN_2);
 
-//    switch (DL_COMP_getPendingInterrupt(COMP_0_INST)) {  // over Cur
-//                 case DL_COMP_IIDX_OUTPUT_EDGE:
-//
-//                     hw_voPWMOff();
-//                //     IO_FTESTLED_ON();
-//
-//                     alm_unCode.bit.IPMFlt = TRUE;
-//
-//                     break;
-//                 case DL_COMP_IIDX_OUTPUT_EDGE_INV:
-//
-//                     break;
-//                 default:
-//                     break;
-//             }
-//F_LED
-//    switch (DL_COMP_getPendingInterrupt(COMP_FLEDCHECK_INST)) {
-//               case DL_COMP_IIDX_OUTPUT_EDGE:
-//                   if(BikeLedCheck_F.uwBike_OpenLedEn!=0)
-//                   {
-//                       DL_TimerG_setCaptureCompareValue(PWM_F_INST, 0, GPIO_PWM_F_C1_IDX);//max=2304
-//                   }
-//                   else
-//                   {
-//                       if (BikeLedCheck_F.blBike_LedSta == TRUE)
-//                       {
-//                           if(BikeLedCheck_F.uwBike_OpenPreTime<=2)
-//                           {
-//                               BikeLedCheck_F.uwBike_OpenPreTime=2;
-//                           //    CMPF++;
-//                               BikeLedCheck_F.uwBikeLight_PWM=LIGHT_SECTPWM;//LIGHT_SECTPWM;
-//                               DL_TimerG_setCaptureCompareValue(PWM_F_INST, BikeLedCheck_F.uwBikeLight_PWM, GPIO_PWM_F_C1_IDX);//max=2304
-//                           }
-//                       }
-//
-//                   }
-//                   if (BikeLedCheck_F.blBike_LedSta == TRUE)
-//                   {
-//                       BikeLedCheck_F.blBike_LedCurErr=TRUE;
-//                   }
-//
-//                     //  CHMPF++;
-//                   break;
-//               case DL_COMP_IIDX_OUTPUT_EDGE_INV:
-//                   if(BikeLedCheck_F.uwBike_OpenLedEn!=0)
-//                      {
-//                       DL_TimerG_stopCounter(PWM_F_INST);
-//                         BikeLedCheck_F.uwBikeLight_PWM=0;
-//                         DL_TimerG_setCaptureCompareValue(PWM_F_INST, 0, GPIO_PWM_F_C1_IDX);//max=2304
-//                      }
-//                  // CLMPF++;
-//                   break;
-//               default:
-//                   break;
-//           }
-    uint32_t gpioA = DL_GPIO_getEnabledInterruptStatus(
-            GPIOA,DL_GPIO_PIN_8 | DL_GPIO_PIN_3    );
-
-
-     uint32_t gpioB = DL_GPIO_getEnabledInterruptStatus(
-         GPIOB, DL_GPIO_PIN_3 | DL_GPIO_PIN_2| DL_GPIO_PIN_8| DL_GPIO_PIN_15);
-
-//B_LED
-    if ((gpioB & DL_GPIO_PIN_15) ==  DL_GPIO_PIN_15)
+    //BAT灯
+    if ((gpioA & DL_GPIO_PIN_15) ==  DL_GPIO_PIN_26)
     {
-        if(BikeLedCheck_B.uwBike_OpenLedEn!=0)
-         {
-            // DL_TimerG_stopCounter(PWM_B_L_INST);
-   //         DL_Timer_overrideCCPOut(PWM_B_L_INST, DL_TIMER_FORCE_OUT_LOW, DL_TIMER_FORCE_CMPL_OUT_LOW, GPIO_PWM_B_L_C1_IDX);
-            BikeLedCheck_B.uwBikeLight_PWM=0;
- //             DL_TimerG_setCaptureCompareValue(PWM_B_L_INST, 0, GPIO_PWM_B_L_C1_IDX);//max=2304
-               CLMPF++;
-         }
-         else
-         {
-             if( BikeLedCheck_B.blBike_LedSta==TRUE)
-             {
-             if(BikeLedCheck_B.uwBike_OpenPreTime<=2)
-             {
-                 BikeLedCheck_B.uwBike_OpenPreTime=2;
-                  CMPF++;
-                 BikeLedCheck_B.uwBikeLight_PWM=LIGHT_SECTPWM;//LIGHT_SECTPWM;
-   //              DL_TimerG_setCaptureCompareValue(PWM_B_L_INST, BikeLedCheck_B.uwBikeLight_PWM, GPIO_PWM_B_L_C1_IDX);//max=2304
-             }
-             }
-
-         }
-        if( BikeLedCheck_B.blBike_LedSta==TRUE)
-         BikeLedCheck_B.blBike_LedCurErr=TRUE;
-
-           CHMPF++;
-
-
-            DL_GPIO_clearInterruptStatus(GPIOB, DL_GPIO_PIN_15);
+        if(BikeLedCheck_F.uwBike_OpenLedEn!=0)
+        {
+            BikeLedCheck_F.uwBikeLight_PWM=0;
+            CLMPF++;
+        }
+        else
+        {
+            if( BikeLedCheck_F.blBike_LedSta==TRUE)
+            {
+                if(BikeLedCheck_F.uwBike_OpenPreTime<=2)
+                {
+                    BikeLedCheck_F.uwBike_OpenPreTime=2;
+                    CMPF++;
+                    BikeLedCheck_F.uwBikeLight_PWM=LIGHT_SECTPWM;//LIGHT_SECTPWM;
+                }
+            }
+        }
+        if( BikeLedCheck_F.blBike_LedSta==TRUE)
+            BikeLedCheck_F.blBike_LedCurErr=TRUE;
+        CHMPF++;
+        DL_GPIO_clearInterruptStatus(GPIOB, DL_GPIO_PIN_15);
     }
 
-//R_LED
-     if ((gpioB & DL_GPIO_PIN_8) ==  DL_GPIO_PIN_8)
-          {
-             if(BikeLedCheck_R.uwBike_OpenLedEn!=0)
-                  {
-  //                    DL_TimerG_stopCounter(PWM_R_INST);
-                      BikeLedCheck_R.uwBikeLight_PWM=0;
-  //                     DL_TimerG_setCaptureCompareValue(PWM_R_INST, 0, GPIO_PWM_R_C1_IDX);//max=2304
-                     //  CLMPF++;
-                  }
-                  else
-                  {
-                    if(BikeLedCheck_R.blBike_LedSta==TRUE)
-                    {
-                      if(BikeLedCheck_R.uwBike_OpenPreTime<=2)
-                      {
-                          BikeLedCheck_R.uwBike_OpenPreTime=2;
-                        //  CMPF++;
-                          BikeLedCheck_R.uwBikeLight_PWM=LIGHT_SECTPWM;//LIGHT_SECTPWM;
-    //                      DL_TimerG_setCaptureCompareValue(PWM_R_INST, BikeLedCheck_R.uwBikeLight_PWM, GPIO_PWM_R_C1_IDX);//max=2304
-                      }
-                    }
-
-                  }
-             if(BikeLedCheck_R.blBike_LedSta==TRUE)
-              BikeLedCheck_R.blBike_LedCurErr=TRUE;
-
-            //  CHMPF++;
-              DL_GPIO_clearInterruptStatus(GPIOB, DL_GPIO_PIN_8);
-          }
-//-L-LED
-     if ((gpioA & DL_GPIO_PIN_3) ==  DL_GPIO_PIN_3)
-         {
-             if(BikeLedCheck_L.uwBike_OpenLedEn!=0)
-              {
-                //  DL_TimerG_stopCounter(PWM_B_L_INST);
- //                DL_Timer_overrideCCPOut(PWM_B_L_INST, DL_TIMER_FORCE_OUT_LOW, DL_TIMER_FORCE_CMPL_OUT_LOW, GPIO_PWM_B_L_C0_IDX);
-                  BikeLedCheck_L.uwBikeLight_PWM=0;
-//                   DL_TimerG_setCaptureCompareValue(PWM_B_L_INST, 0, GPIO_PWM_B_L_C0_IDX);//max=2304
-                  // CLMPF++;
-              }
-              else
-              {
-                  if(BikeLedCheck_L.blBike_LedSta==TRUE)
-                  {
-                  if(BikeLedCheck_L.uwBike_OpenPreTime<=2)
-                  {
-                      BikeLedCheck_L.uwBike_OpenPreTime=2;
-                      CMPF++;
-                      BikeLedCheck_L.uwBikeLight_PWM=LIGHT_SECTPWM;//LIGHT_SECTPWM;
-//                      DL_TimerG_setCaptureCompareValue(PWM_B_L_INST, BikeLedCheck_L.uwBikeLight_PWM, GPIO_PWM_B_L_C0_IDX);//max=2304
-                  }
-                  }
-
-              }
-             if(BikeLedCheck_L.blBike_LedSta==TRUE)
-                 BikeLedCheck_L.blBike_LedCurErr=TRUE;
-
-        //  CHMPF++;
-
-             DL_GPIO_clearInterruptStatus(GPIOA, DL_GPIO_PIN_3);
-         }
-
-  /* add user code begin TMR3_GLOBAL_IRQ 0 */
- if( ((gpioA & DL_GPIO_PIN_8) ==  DL_GPIO_PIN_8) || ((gpioB & DL_GPIO_PIN_3) ==  DL_GPIO_PIN_3) ||((gpioB & DL_GPIO_PIN_2) ==  DL_GPIO_PIN_2))
+   /* add user code begin TMR3_GLOBAL_IRQ 0 */
+   if( ((gpioA & DL_GPIO_PIN_8) ==  DL_GPIO_PIN_8) || ((gpioB & DL_GPIO_PIN_3) ==  DL_GPIO_PIN_3) ||((gpioB & DL_GPIO_PIN_2) ==  DL_GPIO_PIN_2))
    {
        HGcnt++;
        switchhall_voTim3Int();
        DL_GPIO_clearInterruptStatus(GPIOA, DL_GPIO_PIN_8);
        DL_GPIO_clearInterruptStatus(GPIOB, DL_GPIO_PIN_3);
        DL_GPIO_clearInterruptStatus(GPIOB, DL_GPIO_PIN_2);
-
-
    }
 
+    /* add user code end TMR3_GLOBAL_IRQ 0 */
+    /* add user code begin TMR3_GLOBAL_IRQ 1 */
 
+    /* add user code end TMR3_GLOBAL_IRQ 1 */
 
-//      if ((gpioA & DL_GPIO_PIN_26) ==  DL_GPIO_PIN_26)
-//      {
-//          DL_GPIO_clearInterruptStatus(GPIOA, DL_GPIO_PIN_26);
-//      }
-
-
-
-
-
-
-
-  /* add user code end TMR3_GLOBAL_IRQ 0 */
-  /* add user code begin TMR3_GLOBAL_IRQ 1 */
-
-  /* add user code end TMR3_GLOBAL_IRQ 1 */
-
-   /*
+    /*
     * Get the pending interrupt for the GPIOA port and store for
     * comparisons later
     */