소스 검색

尾灯模式增加模式7、模式8、模式9,其中模式9按照新协议,即控制指令中灯控字节低4位按照位或方式。

dd 1 개월 전
부모
커밋
c7ba7214d3
6개의 변경된 파일1705개의 추가작업 그리고 1667개의 파일을 삭제
  1. 1633 1633
      MDK-ARM/QD007A_CTL_APP/QD007A_CTL_APP_CRC.hex
  2. BIN
      MDK-ARM/bin/QD007A_CTL_APP.bin
  3. 6 3
      User/Inc/var.h
  4. 1 1
      User/Src/cadence_sensor.c
  5. 61 26
      User/Src/light_driver.c
  6. 4 4
      User/Src/motor_control.c

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1633 - 1633
MDK-ARM/QD007A_CTL_APP/QD007A_CTL_APP_CRC.hex


BIN
MDK-ARM/bin/QD007A_CTL_APP.bin


+ 6 - 3
User/Inc/var.h

@@ -179,10 +179,13 @@ typedef enum MC_TAIL_LIGHT_MODE
 {
   MC_TAIL_LIGHT_MODE1 = (uint8_t)0x01,  //模式1,连接尾灯,开灯时低亮,刹车时高亮
 	MC_TAIL_LIGHT_MODE2 = (uint8_t)0x02,  //模式2,连接尾灯,开灯时高亮,刹车时闪烁
-	MC_TAIL_LIGHT_MODE3 = (uint8_t)0x03,  //模式3,连接刹车灯,刹车时高亮
-	MC_TAIL_LIGHT_MODE4 = (uint8_t)0x04,  //模式4,连接刹车灯,刹车时闪烁
+	MC_TAIL_LIGHT_MODE3 = (uint8_t)0x03,  //模式3,连接刹车灯,刹车时高亮
+	MC_TAIL_LIGHT_MODE4 = (uint8_t)0x04,  //模式4,连接刹车灯,刹车时闪烁
 	MC_TAIL_LIGHT_MODE5 = (uint8_t)0x05,  //模式5,常亮
-	MC_TAIL_LIGHT_MODE6 = (uint8_t)0x06   //模式6,超速报警
+	MC_TAIL_LIGHT_MODE6 = (uint8_t)0x06,  //模式6,超速报警
+	MC_TAIL_LIGHT_MODE7 = (uint8_t)0x07,  //模式7,连接尾灯,开机自动低亮,刹车高亮
+	MC_TAIL_LIGHT_MODE8 = (uint8_t)0x08,  //模式8,连接尾灯,仅开灯高亮,与前灯指令一致
+	MC_TAIL_LIGHT_MODE9 = (uint8_t)0x09   //模式9,连接Logo灯,仅开灯高亮,与前灯指令不同
 }MC_TailLight_Mode_Struct_t;
 
 typedef enum MC_LIGHT_VOLTAGE

+ 1 - 1
User/Src/cadence_sensor.c

@@ -159,7 +159,7 @@ void CadenceSensor_Process1(MC_CadenceResult_Struct_t* p_MC_CadenceResult, uint1
 	/*
   n < 20rpm, k = 3
   n > 40rpm, k = 1
-  20rpm <= n <= 40rpm, k = -0.1 * n + 5,???k??100?
+  20rpm <= n <= 40rpm, k = -0.1 * n + 5
   */  
   uint16_t k = 100;
   k = (CadenceTemp < 20) ? 300 : ((CadenceTemp > 40) ? 100 : (500 - CadenceTemp * 10));

+ 61 - 26
User/Src/light_driver.c

@@ -14,11 +14,11 @@ MC_LightDriver_IO_Struct_t TailLightIO_Groups[3] =
   {GPIOA, GPIO_PIN_6}   //尾灯随电池电压
 };
 
-static void LightDriver_IO_Control(MC_LightDriver_IO_Struct_t* IO_Groups, uint8_t Len, uint8_t ID, MC_LightSwitch_Struct_t SwitchCode)
+static void LightDriver_IO_Control(MC_LightDriver_IO_Struct_t* IO_Groups, uint8_t Len, uint8_t ID, TrueOrFalse_Flag_Struct_t OnFlag)
 {
 	uint8_t i;
 	
-	if(SwitchCode == MC_LightSwitch_ON)//开灯时,仅打开配置的IO
+	if(OnFlag == TRUE)//开灯时,仅打开配置的IO
 	{
 		for(i=0; i<Len; i++)
 		{
@@ -61,15 +61,15 @@ void LightDriver_Init(void)
 	}
 }
 
-void LightDriver_Process(MC_TailLight_Mode_Struct_t Light_Mode, MC_LightVoltage_Struct_t HeadLightVol, MC_LightVoltage_Struct_t TailLightVol, TrueOrFalse_Flag_Struct_t IsBreakFlag, MC_LightSwitch_Struct_t LightSwitchCode)
+void LightDriver_Process(uint8_t Light_Mode, MC_LightVoltage_Struct_t HeadLightVol, MC_LightVoltage_Struct_t TailLightVol, TrueOrFalse_Flag_Struct_t IsBreakFlag, MC_LightSwitch_Struct_t LightSwitchCode)
 {	
 	uint8_t HeadLightIO_Groups_ID, TailLightIO_Groups_ID;
 	
 	//开机前2s不处理,关灯处理
 	if(HAL_GetTick() < 2000)
 	{
-	  LightDriver_IO_Control(HeadLightIO_Groups, sizeof(HeadLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), HeadLightIO_Groups_ID, MC_LightSwitch_OFF);
-	  LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, MC_LightSwitch_OFF);
+	  LightDriver_IO_Control(HeadLightIO_Groups, sizeof(HeadLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), HeadLightIO_Groups_ID, FALSE);
+	  LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, FALSE);
 		return;
 	}		
 	
@@ -126,12 +126,12 @@ void LightDriver_Process(MC_TailLight_Mode_Struct_t Light_Mode, MC_LightVoltage_
 	{
 	  case MC_FRONT_LIGHT_MODE1: //常亮
 		{
-		  LightDriver_IO_Control(HeadLightIO_Groups, sizeof(HeadLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), HeadLightIO_Groups_ID, MC_LightSwitch_ON);
+		  LightDriver_IO_Control(HeadLightIO_Groups, sizeof(HeadLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), HeadLightIO_Groups_ID, TRUE);
 			break;
 		}
 		case MC_FRONT_LIGHT_MODE2: default: //仪表控制开关
 		{
-		  LightDriver_IO_Control(HeadLightIO_Groups, sizeof(HeadLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), HeadLightIO_Groups_ID, LightSwitchCode);
+		  LightDriver_IO_Control(HeadLightIO_Groups, sizeof(HeadLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), HeadLightIO_Groups_ID, (LightSwitchCode & 0x01) ? TRUE : FALSE);
 			break;
 		}
 		
@@ -145,20 +145,20 @@ void LightDriver_Process(MC_TailLight_Mode_Struct_t Light_Mode, MC_LightVoltage_
 		{
 			if(IsBreakFlag == TRUE)//刹车时,高亮
 			{
-				LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, MC_LightSwitch_ON);
+				LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, TRUE);
 				FlashTimeCnt = 0;
 			}
 			else//无刹车时,开灯低亮
 			{
-				if(LightSwitchCode == MC_LightSwitch_ON)
+				if(LightSwitchCode & 0x01)
 				{
 					if(FlashTimeCnt < MC_ConfigParam2.u16EffectVal) //尾灯亮起有效值
 					{
-						LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, MC_LightSwitch_ON);
+						LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, TRUE);
 					}
 					else if(FlashTimeCnt < MC_ConfigParam2.u16Prediv) //控制周期:15K / Period  尾灯亮起的频率
 					{
-						LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, MC_LightSwitch_OFF);
+						LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, FALSE);
 					}
 					else
 					{
@@ -166,9 +166,9 @@ void LightDriver_Process(MC_TailLight_Mode_Struct_t Light_Mode, MC_LightVoltage_
 					}
 					FlashTimeCnt++;
 				}
-				else if(LightSwitchCode == MC_LightSwitch_OFF)
+				else
 				{
-					LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, MC_LightSwitch_OFF);
+					LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, FALSE);
 					FlashTimeCnt = 0;
 				}
 			}
@@ -180,11 +180,11 @@ void LightDriver_Process(MC_TailLight_Mode_Struct_t Light_Mode, MC_LightVoltage_
 			{
 				if(FlashTimeCnt < 600)
 				{
-					LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, MC_LightSwitch_ON);
+					LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, TRUE);
 				}
 				else if(FlashTimeCnt < 1200) //闪烁频率:15K / 1200 = 12.5Hz
 				{
-					LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, MC_LightSwitch_OFF);
+					LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, FALSE);
 				}
 				else
 				{
@@ -194,14 +194,14 @@ void LightDriver_Process(MC_TailLight_Mode_Struct_t Light_Mode, MC_LightVoltage_
 			}
 			else//无刹车时,开灯亮
 			{
-				LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, LightSwitchCode);
+				LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, (LightSwitchCode & 0x01) ? TRUE : FALSE);
 				FlashTimeCnt = 0;
 			}	
 			break;
 		}
 		case MC_TAIL_LIGHT_MODE3://连接刹车灯,刹车高亮
 		{
-			LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, (IsBreakFlag == TRUE) ? MC_LightSwitch_ON : MC_LightSwitch_OFF);
+			LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, (IsBreakFlag == TRUE) ? TRUE : FALSE);
 			break;
 		}
 		case MC_TAIL_LIGHT_MODE4://连接刹车灯,刹车闪烁
@@ -210,11 +210,11 @@ void LightDriver_Process(MC_TailLight_Mode_Struct_t Light_Mode, MC_LightVoltage_
 			{
 				if(FlashTimeCnt < 600)
 				{
-					LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, MC_LightSwitch_ON);
+					LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, TRUE);
 				}
 				else if(FlashTimeCnt < 1200) //闪烁频率:15K / 1200 = 12.5Hz
 				{
-					LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, MC_LightSwitch_OFF);
+					LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, FALSE);
 				}
 				else
 				{
@@ -224,27 +224,27 @@ void LightDriver_Process(MC_TailLight_Mode_Struct_t Light_Mode, MC_LightVoltage_
 			}
 			else//无刹车时,关闭
 			{
-				LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, MC_LightSwitch_OFF);
+				LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, FALSE);
 				FlashTimeCnt = 0;
 			}	
 			break;
 		}
 		case MC_TAIL_LIGHT_MODE5://模式5,常亮
 		{
-			LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, MC_LightSwitch_ON);
+			LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, TRUE);
 			break;
 		}
-		case MC_TAIL_LIGHT_MODE6://超速报警
+		case MC_TAIL_LIGHT_MODE6://模式6,超速报警
 		{
 			if(MC_SpeedSensorData.Speed_Data >= MC_ConfigParam2.u16OverspeedWarnVal)
 			{
 				if(FlashTimeCnt < MC_ConfigParam2.u16EffectVal)
 				{
-					LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, MC_LightSwitch_ON);
+					LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, TRUE);
 				}
-				else if(FlashTimeCnt < MC_ConfigParam2.u16Prediv) //
+				else if(FlashTimeCnt < MC_ConfigParam2.u16Prediv)
 				{
-					LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, MC_LightSwitch_OFF);
+					LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, FALSE);
 				}
 				else
 				{
@@ -255,10 +255,45 @@ void LightDriver_Process(MC_TailLight_Mode_Struct_t Light_Mode, MC_LightVoltage_
 			else
 			{
 				FlashTimeCnt = 0;
-				LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, MC_LightSwitch_OFF);
+				LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, FALSE);
 			}
 			break;
 		}
+		case MC_TAIL_LIGHT_MODE7://模式7,开机自动低亮,刹车高亮
+		{
+			if(IsBreakFlag == TRUE)//刹车时,高亮
+			{
+				LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, TRUE);
+				FlashTimeCnt = 0;
+			}
+			else//无刹车时,低亮
+			{
+				if(FlashTimeCnt < MC_ConfigParam2.u16EffectVal) //尾灯亮起有效值
+				{
+					LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, TRUE);
+				}
+				else if(FlashTimeCnt < MC_ConfigParam2.u16Prediv) //控制周期:15K / Period  尾灯亮起的频率
+				{
+					LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, FALSE);
+				}
+				else
+				{
+					FlashTimeCnt = 0;
+				}
+				FlashTimeCnt++;
+			}
+			break;
+		}
+		case MC_TAIL_LIGHT_MODE8://模式8,仅开灯高亮,与前灯指令一致
+		{
+			LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, (LightSwitchCode & 0x01) ? TRUE : FALSE);
+			break;
+		}
+		case MC_TAIL_LIGHT_MODE9://模式9,仅开灯高亮,与前灯指令不同
+		{
+			LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, (LightSwitchCode & 0x02) ? TRUE : FALSE);
+			break;
+		}
 	}
 }
 

+ 4 - 4
User/Src/motor_control.c

@@ -1026,16 +1026,16 @@ MC_CalParam_Struct_t MC_AssistRunMode_Torque_Process(uint16_t SenorData, MC_Gear
 	}
 	else
 	{
-		if(MC_RunInfo.MotorSpeed > 200)
+		if(MC_RunInfo.MotorSpeed > 250)
 		{
-		  TorqueStopDelayTime = 218400 / MC_RunInfo.MotorSpeed; //60s / (电机转速 / 4.55 / 2.4) / 3,曲柄1/3
+		  TorqueStopDelayTime = 327600 / MC_RunInfo.MotorSpeed; //60s / (电机转速 / 4.55 / 2.4) / 3,曲柄1/2
 		}
 		else
 		{
 		  TorqueStopDelayTime = 1200;
 		}
 		TorqueStopDelayTime= (TorqueStopDelayTime < 500) ? 500 : TorqueStopDelayTime;
-		if((HAL_GetTick() - TorqueStopDelayTimeCnt) > TorqueStopDelayTime)//超时1200ms
+		if((HAL_GetTick() - TorqueStopDelayTimeCnt) > TorqueStopDelayTime)
 		{
 			MC_TorqueProcess_Param.MotorStopLock_Flag = SET;
 		}
@@ -1046,7 +1046,7 @@ MC_CalParam_Struct_t MC_AssistRunMode_Torque_Process(uint16_t SenorData, MC_Gear
 	{
 		TorqueStartData =  (MC_TorqueCorrectParam.StarData < 200 ? 150 \
 																														 : (MC_TorqueCorrectParam.StarData > 700 ? 525 \
-																																																		 : (MC_TorqueCorrectParam.StarData  >> 1)));
+																																																		 : (MC_TorqueCorrectParam.StarData >> 1)));
 	}
 	else
 	{

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.