#include "hardware_check.h" #include "adc.h" #include "hall_sensor.h" #include "main.h" const uint16_t Hardware_ADTable[9]={ 620, //0.50V 930, //0.75V 1241,//1.00V 1551,//1.25V 2544,//2.05V 2854,//2.30V 3164,//2.55V 3474,//2.80V 4096 //3.30V }; const char Hardware_VersionTable[9]={ '-', 'A', 'B', 'C', '*', 'D', 'E', 'F', '+' }; void GetHardware_Versin(uint16_t VolaVal) { uint8_t Count; static uint16_t timecount = 0; static TrueOrFalse_Flag_Struct_t FirstExecuteFlag = FALSE; if(FirstExecuteFlag == FALSE) { FirstExecuteFlag = TRUE; if( HAL_GetTick()>1800 ) timecount=HAL_GetTick()+200; //若初始化时间太长,硬件版本识别时间延后200ms else timecount=2000; } if(HAL_GetTick() > timecount) //2s后开始识别 { if(VersionIdentifyFinishedFlag == FALSE) { // strncpy(MC_VerInfo.FW_Version, (char*)" ", 16); // sprintf(&MC_VerInfo.FW_Version[0], "%4u", VolaVal); // if( IsComOK_TE.IsOK_Flag == TRUE ) MC_VerInfo.FW_Version[4] = 'Y'; // else MC_VerInfo.FW_Version[4] = 'N'; // sprintf(&MC_VerInfo.FW_Version[5], "%4u", MC_TE_SyncClockFreqScan); // MC_VerInfo.FW_Version[9] = ' '; // sprintf(&MC_VerInfo.FW_Version[10], "%5u", timecount); if( (IsComOK_TE.IsOK_Flag == TRUE)||(MC_TE_SyncClockFreqScan>200)||((VolaVal>1986)&&(VolaVal<2110)) ) //有反相器和TE的电路板 { MC_HallSensorData.InverterExistFlag = TRUE; } else //无反相器和TE的电路板 { MC_HallSensorData.InverterExistFlag = FALSE; for(Count=0; Count<9; Count++) { if(VolaVal <= Hardware_ADTable[Count]) { strncpy(MC_VerInfo.HW_Version, (char*)"TTKZ019A.", 9); MC_VerInfo.HW_Version[7] =Hardware_VersionTable[Count]; VersionIdentifyFinishedFlag = TRUE; return ; } } } VersionIdentifyFinishedFlag = TRUE; } } }