|
@@ -451,30 +451,56 @@ void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
|
|
|
static int32_t GasSensorFltSum = 0, HardwareVersionADFltSum=0;
|
|
|
static TrueOrFalse_Flag_Struct_t MOS_NTC_InitFinishedFlag = FALSE;
|
|
|
//更新PCB温度,绕组温度,MCU温度
|
|
|
- T_PCB_Sum += ADC1_Result[ADC1_RANK_NTC_PCB];
|
|
|
- T_Coil_Sum += ADC1_Result[ADC1_RANK_NTC_COIL];
|
|
|
- T_MCU_Sum += ADC1_Result[ADC1_RANK_TP_MCU];
|
|
|
- T_Filt_Cnt++;
|
|
|
- if(T_Filt_Cnt >= 3000)
|
|
|
+ if(VersionIdentifyFinishedFlag == FALSE) //硬件版本未识别前,温度默认为25度
|
|
|
{
|
|
|
- //计算PCB温度
|
|
|
- MC_RunInfo.T_PCB = GetNTCTempera(T_PCB_Sum / 3000);
|
|
|
- T_PCB_Sum = 0;
|
|
|
- //计算绕组温度
|
|
|
- MC_RunInfo.T_Coil = GetNTCTempera(T_Coil_Sum / 3000);
|
|
|
- T_Coil_Sum = 0;
|
|
|
- //MCU温度根据PCB初始温度进行校准
|
|
|
- if(T_MCU_Init_Flag == FALSE)
|
|
|
+ MC_RunInfo.T_PCB = 65;
|
|
|
+ MC_RunInfo.T_Coil = 65;
|
|
|
+ MC_RunInfo.T_MCU = 65;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if( MC_HallSensorData.InverterExistFlag == FALSE )
|
|
|
{
|
|
|
- T_MCU_Init = MC_RunInfo.T_PCB;//校准时温度
|
|
|
- T_MCU_Init_AD = T_MCU_Sum / 3000;//校准时AD值
|
|
|
- T_MCU_Init_Flag = TRUE;
|
|
|
+ if(MOS_NTC_InitFinishedFlag == FALSE)
|
|
|
+ {
|
|
|
+ MOS_NTC_InitFinishedFlag = TRUE;
|
|
|
+ MOS_NTC_Init();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ T_PCB_Sum += ADC1_Result[ADC1_RANK_NTC_PCB];
|
|
|
+ T_Coil_Sum += ADC1_Result[ADC1_RANK_NTC_COIL];
|
|
|
+ T_MCU_Sum += ADC1_Result[ADC1_RANK_TP_MCU];
|
|
|
+ T_Filt_Cnt++;
|
|
|
+ if(T_Filt_Cnt >= 3000)
|
|
|
+ {
|
|
|
+ if( MC_HallSensorData.InverterExistFlag == FALSE )
|
|
|
+ {
|
|
|
+ MC_RunInfo.T_PCB = GetNTCTempera_20K(T_PCB_Sum / 3000);
|
|
|
+ MC_RunInfo.T_Coil = GetNTCTempera_20K(T_Coil_Sum / 3000);
|
|
|
+ MC_RunInfo.T_MCU = GetNTCTempera_20K(T_MCU_Sum / 3000); //MOS管NTC温度
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //计算PCB温度
|
|
|
+ MC_RunInfo.T_PCB = GetNTCTempera(T_PCB_Sum / 3000);
|
|
|
+ //计算绕组温度
|
|
|
+ MC_RunInfo.T_Coil = GetNTCTempera(T_Coil_Sum / 3000);
|
|
|
+ //MCU温度根据PCB初始温度进行校准
|
|
|
+ if(T_MCU_Init_Flag == FALSE)
|
|
|
+ {
|
|
|
+ T_MCU_Init = MC_RunInfo.T_PCB;//校准时温度
|
|
|
+ T_MCU_Init_AD = T_MCU_Sum / 3000;//校准时AD值
|
|
|
+ T_MCU_Init_Flag = TRUE;
|
|
|
+ }
|
|
|
+ //计算MCU温度
|
|
|
+ MC_RunInfo.T_MCU = T_MCU_Init + ((int16_t)(T_MCU_Init_AD - T_MCU_Sum / 3000) * 192 >> 10);//4.3mV/度, 3300 / 4095 / 4.3 * 1024 = 192
|
|
|
+
|
|
|
+ }
|
|
|
+ T_Filt_Cnt = 0;
|
|
|
+ T_PCB_Sum = 0;
|
|
|
+ T_Coil_Sum = 0;
|
|
|
+ T_MCU_Sum = 0;
|
|
|
}
|
|
|
- //计算MCU温度
|
|
|
- MC_RunInfo.T_MCU = T_MCU_Init + ((int16_t)(T_MCU_Init_AD - T_MCU_Sum / 3000) * 192 >> 10);//4.3mV/度, 3300 / 4095 / 4.3 * 1024 = 192
|
|
|
- T_MCU_Sum = 0;
|
|
|
-
|
|
|
- T_Filt_Cnt = 0;
|
|
|
}
|
|
|
|
|
|
//更新母线电压
|
|
@@ -487,7 +513,14 @@ void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
|
|
|
}
|
|
|
|
|
|
//更新母线电流
|
|
|
- Temp_32 = (ADC1_Result[ADC1_RANK_CURRENT] - uw_current_offset) * 50000 >> 11;
|
|
|
+ if( MC_HallSensorData.InverterExistFlag == FALSE )
|
|
|
+ {
|
|
|
+ Temp_32 = (ADC1_Result[ADC1_RANK_CURRENT] - uw_current_offset) * 39449 >> 10; //3300/4095* 0.98/8.2 /0.0025
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Temp_32 = (ADC1_Result[ADC1_RANK_CURRENT] - uw_current_offset) * 50000 >> 11; //3300/4095* 0.98/13 /0.0025
|
|
|
+ }
|
|
|
Temp_32 = (Temp_32 <= 0) ? 0 : ((Temp_32 >= 50000) ? 50000 : Temp_32);
|
|
|
IdcFltSum += ((Temp_32 << 10) - IdcFltSum) >> 9;
|
|
|
MC_RunInfo.BusCurrent = IdcFltSum >> 10;
|