#include "Application.h" #include "Data_TPMS\Data_TPMS.h" _TPMS_Display TPMS; uint32_t Front_LearnTime_Count0 = 0; uint32_t Front_LearnTime_Count1 = 0; uint32_t Rear_LearnTime_Count0 = 0; uint32_t Rear_LearnTime_Count1 = 0; uint8_t Can_341_Flg = 0; void Data_TPMS_KL30_Init ( void ) { uint8_t TPMS_L[2] = {0,0}; //Data_User_EEPROM_Read(EM_MenuData_TPMS_LEARN, (uint32_t*)TPMS_L, 1u); eeprom_ReadRecord(EEPROM_BLOCK_09, TPMS_L , 2); MenuData.TPMS_Front_Learn = TPMS_L[0]; MenuData.TPMS_Rear_Learn = TPMS_L[1]; //MenuData.TPMS_Front_FirstLearn_Flag = TPMS_L[2]; //MenuData.TPMS_Rear_FirstLearn_Flag = TPMS_L[3]; TPMS.Front_Press_Value = 0; TPMS.Rear_Press_Value = 0; TPMS.Front_TPMS_Valid = 0; TPMS.Rear_TPMS_Valid = 0; TPMS.TPMS_Warning = 0; //TPMS.TPMS_Unit = Get_Dis_Tpms_Unit(); TPMS.TPMS_Front_Learn = MenuData.TPMS_Front_Learn; TPMS.TPMS_Rear_Learn = MenuData.TPMS_Rear_Learn; TPMS.TPMS_Front_FirstLearn_Flag = MenuData.TPMS_Front_FirstLearn_Flag; TPMS.TPMS_Rear_FirstLearn_Flag = MenuData.TPMS_Rear_FirstLearn_Flag; TPMS.TPMS_LOST = 0; Front_LearnTime_Count0 = 0; Front_LearnTime_Count1 = 0; Rear_LearnTime_Count0 = 0; Rear_LearnTime_Count1 = 0; Can_341_Flg = 0; } void Data_TPMS_KL15_WAKE_UP_Init ( void ) { uint8_t TPMS_L[2] = {0,0}; //Data_User_EEPROM_Read(EM_MenuData_TPMS_LEARN, (uint32_t*)TPMS_L, 1); eeprom_ReadRecord(EEPROM_BLOCK_09, TPMS_L , 2); MenuData.TPMS_Front_Learn = TPMS_L[0]; MenuData.TPMS_Rear_Learn = TPMS_L[1]; //MenuData.TPMS_Front_FirstLearn_Flag = TPMS_L[2]; //MenuData.TPMS_Rear_FirstLearn_Flag = TPMS_L[3]; TPMS.TPMS_Front_Learn = MenuData.TPMS_Front_Learn; TPMS.TPMS_Rear_Learn = MenuData.TPMS_Rear_Learn; TPMS.TPMS_Front_FirstLearn_Flag = MenuData.TPMS_Front_FirstLearn_Flag; TPMS.TPMS_Rear_FirstLearn_Flag = MenuData.TPMS_Rear_FirstLearn_Flag; TPMS.TPMS_LOST = 0; Front_LearnTime_Count0 = 0; Front_LearnTime_Count1 = 0; Rear_LearnTime_Count0 = 0; Rear_LearnTime_Count1 = 0; Can_341_Flg = 0; } void Can_341_Receive(void) { Can_341_Flg = 1; } uint32_t Relaying_Rear_Press_Value = 0; uint32_t Relaying_Front_Press_Value = 0; void Data_TPMS_Processing_Service ( void ) { uint16_t Front_TPMS = 0; uint16_t Rear_TPMS = 0; uint8_t TPMS_L[2] = {0,0}; if(CAN_MSG_Status(&CAN_CH0_CanMsgOp, CAN_CH0_ID_CAN_0x341_Msg_Count) != CAN_SIG_LOST) { TPMS.TPMS_Front_Learn = Get_CAN_CH0_ID_341_Sig_Front_LearningStatus(); TPMS.TPMS_Rear_Learn = Get_CAN_CH0_ID_341_Sig_Rear_LearningStatus(); TPMS.TPMS_LOST = 1; } else { TPMS.TPMS_Front_Learn = MenuData.TPMS_Front_Learn; TPMS.TPMS_Rear_Learn = MenuData.TPMS_Rear_Learn; TPMS.TPMS_LOST = 0; } if(CAN_MSG_Status(&CAN_CH0_CanMsgOp, CAN_CH0_ID_CAN_0x373_Msg_Count) != CAN_SIG_LOST) { if((Get_CAN_CH0_ID_373_Sig_Rear_id() != 0) && (Get_CAN_CH0_ID_373_Sig_Rear_id() != 0xFFFFFFFF)) { TPMS.TPMS_Rear_ID_Value = 1; //TPMS.TPMS_Rear_Learn = LearningCompletion; } else { TPMS.TPMS_Rear_ID_Value = 0; } if((Get_CAN_CH0_ID_373_Sig_Front_id() != 0) && (Get_CAN_CH0_ID_373_Sig_Front_id() != 0xFFFFFFFF)) { TPMS.TPMS_Front_ID_Value = 1; } else { TPMS.TPMS_Front_ID_Value = 0; } if((Get_CAN_CH0_ID_373_Sig_Rear_id() != 0) && (Get_CAN_CH0_ID_373_Sig_Rear_id() != 0xFFFFFFFF)) { TPMS.TPMS_Rear_ID_Value = 1; } else { TPMS.TPMS_Rear_ID_Value = 0; } } else { TPMS.TPMS_Front_ID_Value = 0; TPMS.TPMS_Rear_ID_Value = 0; } if(TPMS.TPMS_Front_Learn == 0x0) { //if(TPMS.TPMS_Front_Timeclean == 0) //{ // LearnTime_Count = 0; //} //TPMS.TPMS_Front_Timeclean = 1; Front_LearnTime_Count1 = 0; if(Front_LearnTime_Count0 <= 6000) { Front_LearnTime_Count0++; TPMS.TPMS_Front_Learn = Unstudied; //LearnTime_Count = 0; } else { if ((MenuData.TPMS_Front_Learn != 0x2) && (MenuData.TPMS_Front_Learn != 0x3) ) { if(CAN_MSG_Status(&CAN_CH0_CanMsgOp, CAN_CH0_ID_CAN_0x341_Msg_Count) != CAN_SIG_LOST) { TPMS.TPMS_Front_Learn = LearningFailure; } else { TPMS.TPMS_Front_Learn = MenuData.TPMS_Front_Learn; } } else { TPMS.TPMS_Front_Learn = MenuData.TPMS_Front_Learn; } } } else if(TPMS.TPMS_Front_Learn == 0x1) { //if((Get_CAN_CH0_ID_373_Sig_Front_id() != 0) && (Get_CAN_CH0_ID_373_Sig_Front_id() != 0xFFFFFFFF)) //{ // TPMS.TPMS_Front_ID_Value = 1; // //TPMS.TPMS_Front_Learn = LearningCompletion; //} //else //{ // TPMS.TPMS_Front_ID_Value = 0; //} //if(TPMS.TPMS_Front_Timeclean == 0) //{ // LearnTime_Count = 0; //} //TPMS.TPMS_Front_Timeclean = 1; Front_LearnTime_Count0 = 0; if(Front_LearnTime_Count1 <= 6000) { Front_LearnTime_Count1++; TPMS.TPMS_Front_Learn = Learning; } else { if ((MenuData.TPMS_Front_Learn != 0x2) && (MenuData.TPMS_Front_Learn != 0x3) ) { if(CAN_MSG_Status(&CAN_CH0_CanMsgOp, CAN_CH0_ID_CAN_0x341_Msg_Count) != CAN_SIG_LOST) { TPMS.TPMS_Front_Learn = LearningFailure; } else { TPMS.TPMS_Front_Learn = MenuData.TPMS_Front_Learn; } } else { TPMS.TPMS_Front_Learn = MenuData.TPMS_Front_Learn; } } } else if (TPMS.TPMS_Front_Learn == 0x2) { Front_LearnTime_Count0 = 0; Front_LearnTime_Count1 = 0; //if((Get_CAN_CH0_ID_373_Sig_Front_id() != 0) && (Get_CAN_CH0_ID_373_Sig_Front_id() != 0xFFFFFFFF)) //{ // TPMS.TPMS_Front_ID_Value = 1; // //TPMS.TPMS_Front_Learn = LearningCompletion; //} //else //{ // TPMS.TPMS_Front_ID_Value = 0; //} } else if (TPMS.TPMS_Front_Learn == 0x3) { Front_LearnTime_Count0 = 0; Front_LearnTime_Count1 = 0; TPMS.TPMS_Front_Learn = LearningFailure; } else { Front_LearnTime_Count0 = 0; Front_LearnTime_Count1 = 0; TPMS.TPMS_Front_Learn = MenuData.TPMS_Front_Learn; } if(TPMS.TPMS_Rear_Learn == 0x0) { //if(TPMS.TPMS_Rear_Timeclean == 0) //{ // LearnTime_Count1 = 0; //} //TPMS.TPMS_Rear_Timeclean = 1; Rear_LearnTime_Count1 = 0; if(Rear_LearnTime_Count0 <= 6000) { Rear_LearnTime_Count0++;// = 0; TPMS.TPMS_Rear_Learn = Unstudied; } else { if ((MenuData.TPMS_Rear_Learn != 0x2) && (MenuData.TPMS_Rear_Learn != 0x3) ) { if(CAN_MSG_Status(&CAN_CH0_CanMsgOp, CAN_CH0_ID_CAN_0x341_Msg_Count) != CAN_SIG_LOST) { TPMS.TPMS_Rear_Learn = LearningFailure; } else { TPMS.TPMS_Rear_Learn = MenuData.TPMS_Rear_Learn; } } else { TPMS.TPMS_Rear_Learn = MenuData.TPMS_Rear_Learn; } } } else if(TPMS.TPMS_Rear_Learn == 0x1) { //if(TPMS.TPMS_Rear_Timeclean == 0) //{ // LearnTime_Count1 = 0; //} //TPMS.TPMS_Rear_Timeclean = 1; Rear_LearnTime_Count0 = 0; if(Rear_LearnTime_Count1 <= 6000) { Rear_LearnTime_Count1++; TPMS.TPMS_Rear_Learn = Learning; } else { if ((MenuData.TPMS_Rear_Learn != 0x2) && (MenuData.TPMS_Rear_Learn != 0x3) ) { if(CAN_MSG_Status(&CAN_CH0_CanMsgOp, CAN_CH0_ID_CAN_0x341_Msg_Count) != CAN_SIG_LOST) { TPMS.TPMS_Rear_Learn = LearningFailure; } else { TPMS.TPMS_Rear_Learn = MenuData.TPMS_Rear_Learn; } } else { TPMS.TPMS_Rear_Learn = MenuData.TPMS_Rear_Learn; } } } else if (TPMS.TPMS_Rear_Learn == 0x2) { Rear_LearnTime_Count0 = 0; Rear_LearnTime_Count1 = 0; } else if (TPMS.TPMS_Rear_Learn == 0x3) { Rear_LearnTime_Count0 = 0; Rear_LearnTime_Count1 = 0; TPMS.TPMS_Rear_Learn = LearningFailure; } else { Rear_LearnTime_Count0 = 0; Rear_LearnTime_Count1 = 0; TPMS.TPMS_Rear_Learn = MenuData.TPMS_Front_Learn; } if((TPMS.TPMS_Front_Learn != MenuData.TPMS_Front_Learn) || (TPMS.TPMS_Rear_Learn != MenuData.TPMS_Rear_Learn)) { if(TPMS.TPMS_Front_Learn != MenuData.TPMS_Front_Learn) { TPMS.TPMS_Front_FirstLearn_Flag = 1; } if(TPMS.TPMS_Rear_Learn != MenuData.TPMS_Rear_Learn) { TPMS.TPMS_Rear_FirstLearn_Flag = 1; } //if((TPMS.TPMS_Front_Learn == 0x2) || (TPMS.TPMS_Front_Learn == 0x3)) //{ // MenuData.TPMS_Front_Learn = TPMS.TPMS_Front_Learn; //} //if((TPMS.TPMS_Rear_Learn == 0x2) || (TPMS.TPMS_Rear_Learn == 0x3)) //{ // MenuData.TPMS_Rear_Learn = TPMS.TPMS_Rear_Learn; //} if(((TPMS.TPMS_Front_Learn == 0x2) || (TPMS.TPMS_Front_Learn == 0x3)) && (TPMS.TPMS_Front_Learn != MenuData.TPMS_Front_Learn)) { MenuData.TPMS_Front_Learn = TPMS.TPMS_Front_Learn; TPMS_L[0] = MenuData.TPMS_Front_Learn; TPMS_L[1] = MenuData.TPMS_Rear_Learn; //Data_User_EEPROM_Write(EM_MenuData_TPMS_LEARN, (uint32_t*)TPMS_L, 1u); eeprom_WriteRecord(EEPROM_BLOCK_09, TPMS_L, 2); } if( ((TPMS.TPMS_Rear_Learn == 0x2) || (TPMS.TPMS_Rear_Learn == 0x3)) && (TPMS.TPMS_Rear_Learn != MenuData.TPMS_Rear_Learn)) { MenuData.TPMS_Rear_Learn = TPMS.TPMS_Rear_Learn; TPMS_L[0] = MenuData.TPMS_Front_Learn; TPMS_L[1] = MenuData.TPMS_Rear_Learn; //Data_User_EEPROM_Write(EM_MenuData_TPMS_LEARN, (uint32_t*)TPMS_L, 1u); eeprom_WriteRecord(EEPROM_BLOCK_09, TPMS_L, 2); } } //TPMS.TPMS_Unit = Get_Dis_Tpms_Unit(); Front_TPMS = Get_CAN_CH0_ID_341_Sig_Front_Pressure(); Rear_TPMS = Get_CAN_CH0_ID_341_Sig_Rear_Pressure(); if ( 1 ) { if(CAN_MSG_Status(&CAN_CH0_CanMsgOp, CAN_CH0_ID_CAN_0x341_Msg_Count) == CAN_SIG_LOST) { TPMS.Front_TPMS_Valid = 0; //信号掉线,显示-- TPMS.Rear_TPMS_Valid = 0; //信号掉线,显示-- TPMS.Front_Press_Value = 0; TPMS.Rear_Press_Value = 0; TPMS.TPMS_Warning = 0; //白灯 } else { if((Front_TPMS == 0xFF) || (Rear_TPMS == 0xFF)) { if((Front_TPMS == 0xFF) && (Rear_TPMS != 0xFF)) { TPMS.Front_TPMS_Valid = 0; TPMS.Rear_TPMS_Valid = 1; TPMS.Front_Press_Value = 990; TPMS.Rear_Press_Value = Rear_TPMS * 2750; TPMS.Rear_Press_Value /= 102 ; if(TPMS.Rear_Press_Value > 9900) { TPMS.Rear_Press_Value = 9900; } //if(((TPMS.Rear_Press_Value + 50)< 1700) || ((TPMS.Rear_Press_Value + 50) > 2500)) if((Get_Rear_TPMS_Sig_Value() < 17) || (Get_Rear_TPMS_Sig_Value() > 25)) { TPMS.TPMS_Warning = 1; } else { TPMS.TPMS_Warning = 0; } } else if ((Front_TPMS != 0xFF) && (Rear_TPMS == 0xFF)) { TPMS.Front_TPMS_Valid = 1; TPMS.Rear_TPMS_Valid = 0; TPMS.Rear_Press_Value = 990; TPMS.Front_Press_Value = Front_TPMS *2750 ; TPMS.Front_Press_Value /= 102 ; if(TPMS.Front_Press_Value > 9900) { TPMS.Front_Press_Value = 9900; } //if(((TPMS.Front_Press_Value + 50) < 1700) || ((TPMS.Front_Press_Value + 50) > 2300)) if((Get_Front_TPMS_Sig_Value() < 17) || (Get_Front_TPMS_Sig_Value() > 23)) { TPMS.TPMS_Warning = 1; } else { TPMS.TPMS_Warning = 0; } } else { TPMS.Front_Press_Value = 9900; TPMS.Rear_Press_Value = 9900; TPMS.TPMS_Warning = 0; TPMS.Front_TPMS_Valid = 0; TPMS.Rear_TPMS_Valid = 0; } } else { TPMS.Front_TPMS_Valid = 1; TPMS.Rear_TPMS_Valid = 1; TPMS.Front_Press_Value = Front_TPMS * 2750 ; TPMS.Front_Press_Value /= 102 ; if(TPMS.Front_Press_Value > 9900) { TPMS.Front_Press_Value = 9900; } TPMS.Rear_Press_Value = Rear_TPMS * 2750; TPMS.Rear_Press_Value /= 102 ; if(TPMS.Rear_Press_Value > 9900) { TPMS.Rear_Press_Value = 9900; } //if (((TPMS.Front_Press_Value + 50) < 1700) || ((TPMS.Front_Press_Value + 50) > 2300) || ((TPMS.Rear_Press_Value + 50) < 1700) || ((TPMS.Rear_Press_Value + 50) > 2500)) if ((Get_Front_TPMS_Sig_Value() < 17) || (Get_Front_TPMS_Sig_Value() > 23) || (Get_Rear_TPMS_Sig_Value() < 17) || (Get_Rear_TPMS_Sig_Value() > 25)) { TPMS.TPMS_Warning = 1; } else { TPMS.TPMS_Warning = 0; } } } if(TPMS.TPMS_Front_Learn == Unstudied) { TPMS.TPMS_Front_FirstLearn_Flag = Unstudied; } else if(TPMS.TPMS_Front_Learn == Learning) { TPMS.TPMS_Front_FirstLearn_Flag = Learning; } else if(TPMS.TPMS_Front_Learn == LearningCompletion) { TPMS.TPMS_Front_FirstLearn_Flag = LearningCompletion; } else if(TPMS.TPMS_Front_Learn == LearningFailure) { TPMS.TPMS_Front_FirstLearn_Flag = LearningFailure; TPMS.Front_Press_Value = 9900; } else { ; } if(TPMS.TPMS_Rear_Learn == Unstudied) { TPMS.TPMS_Rear_FirstLearn_Flag = Unstudied; } else if(TPMS.TPMS_Rear_Learn == Learning) { TPMS.TPMS_Rear_FirstLearn_Flag = Learning; } else if(TPMS.TPMS_Rear_Learn == LearningCompletion) { TPMS.TPMS_Rear_FirstLearn_Flag = LearningCompletion; } else if(TPMS.TPMS_Rear_Learn == LearningFailure) { TPMS.TPMS_Rear_FirstLearn_Flag = LearningFailure; TPMS.Rear_Press_Value = 9900; } else { ; } //if ((MenuData.TPMS_Rear_Learn != LearningCompletion) && (MenuData.TPMS_Front_Learn != LearningCompletion)) //{ // TPMS.TPMS_Warning = 0; //} } else { TPMS.Front_TPMS_Valid = 0; TPMS.Rear_TPMS_Valid = 0; TPMS.Front_Press_Value = 0; TPMS.Rear_Press_Value = 0; TPMS.TPMS_Warning = 0; } Relaying_Rear_Press_Value = TPMS.Rear_Press_Value; Relaying_Front_Press_Value = TPMS.Front_Press_Value; } uint32_t Data_Bar_To_Psi (uint32_t bar) { uint32_t Bar = 0; Bar = bar * 145; Bar /= 10; //Bar += 5; // bar *= 145; // bar /= 10; // bar += 5; return Bar; } /*指示灯报警信号 0:白色常亮 1:黄色常亮*/ uint8_t Get_Led_TPMS_Waring (void) { return TPMS.TPMS_Warning; } /*0:无效,常显-- 1:有效,按实际胎压数值显示 */ uint8_t Get_Front_TPMS_Sig_Vaild (void) { return TPMS.Front_TPMS_Valid; } uint8_t Get_Rear_TPMS_Sig_Vaild (void) { return TPMS.Rear_TPMS_Valid; } uint8_t Get_Front_TPMS_ID_Vaild (void) { return TPMS.TPMS_Front_ID_Value; } uint8_t Get_Rear_TPMS_ID_Vaild (void) { return TPMS.TPMS_Rear_ID_Value; } //10倍 uint16_t Get_Front_TPMS_Sig_Value (void) { uint16_t value = 0; //if (TPMS.TPMS_Unit == 1) //{ // value = (Data_Bar_To_Psi(TPMS.Front_Press_Value) + 500) / 1000; // if(value > 99) // { // value = 99; // } //} //else { //value = TPMS.Front_Press_Value + 50; value = (uint16_t)((Relaying_Front_Press_Value + 50) / 100); } return value; } uint16_t Get_Rear_TPMS_Sig_Value (void) { uint16_t value = 0; //if (TPMS.TPMS_Unit == 1) //{ // value = (Data_Bar_To_Psi(TPMS.Rear_Press_Value) + 500) / 1000; // if(value > 99) // { // value = 99; // } // //} //else { //value = TPMS.Rear_Press_Value + 50; value = (uint8_t)((Relaying_Rear_Press_Value + 50) / 100); } return value; } uint16_t Get_Rear_TPMS_TX (void) { uint16_t value = 0; value = (uint16_t)(Data_Bar_To_Psi(Relaying_Rear_Press_Value) / 100); if(value > 990) { value = 990; } return value; } uint16_t Get_Front_TPMS_TX (void) { uint16_t value = 0; value = (uint16_t)(Data_Bar_To_Psi(Relaying_Front_Press_Value) / 100); if(value > 990) { value = 990; } return value; } /*前轮胎压学习结果 0-未学习“--”常显 1-学习中“--”闪烁 2-学习成功,正常显示数值 3-学习失败,闪烁显示最大值99*/ uint8_t Get_Front_FirstLearn_Flag (void) { return TPMS.TPMS_Front_FirstLearn_Flag; } /*后轮胎压学习结果 0-未学习“--”常显 1-学习中“--”闪烁 2-学习成功,正常显示数值 3-学习失败,闪烁显示最大值99*/ uint8_t Get_Rear_FirstLearn_Flag (void) { return TPMS.TPMS_Rear_FirstLearn_Flag; } uint8_t Get_TPMS_Front_Learn(void) { return TPMS.TPMS_Front_Learn; } uint8_t Get_TPMS_Rear_Learn(void) { return TPMS.TPMS_Rear_Learn; } /*获取0x341是否掉线 0-掉线 “--”闪烁 1-在线 获取学习结果进行显示*/ uint8_t Get_TPMS_CAN_LOST (void) { return TPMS.TPMS_LOST ; }