Commit 1cc2bf0b authored by 张金硕's avatar 张金硕

Merge branch 'jinshuo' into 'dev'

Jinshuo

See merge request !94
parents bbf1d175 1aa1c506
...@@ -738,6 +738,16 @@ ...@@ -738,6 +738,16 @@
<FileType>5</FileType> <FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\BlueTooth.h</FilePath> <FilePath>..\..\..\..\Source\Application\BlueTooth.h</FilePath>
</File> </File>
<File>
<FileName>Hysteresis.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\Hysteresis.h</FilePath>
</File>
<File>
<FileName>Hysteresis_V10_239.lib</FileName>
<FileType>4</FileType>
<FilePath>..\..\..\..\Source\Application\Hysteresis_V10_239.lib</FilePath>
</File>
</Files> </Files>
</Group> </Group>
<Group> <Group>
...@@ -978,16 +988,6 @@ ...@@ -978,16 +988,6 @@
<FileType>5</FileType> <FileType>5</FileType>
<FilePath>..\..\..\..\Source\Component\AMT630H\PicBin.h</FilePath> <FilePath>..\..\..\..\Source\Component\AMT630H\PicBin.h</FilePath>
</File> </File>
<File>
<FileName>kei_S1.0.6_20240827.lib</FileName>
<FileType>4</FileType>
<FilePath>..\..\..\..\Source\Component\AMT630H\kei_S1.0.6_20240827.lib</FilePath>
</File>
<File>
<FileName>UartProtocol.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Component\AMT630H\UartProtocol.h</FilePath>
</File>
<File> <File>
<FileName>AMT630H_Datas.c</FileName> <FileName>AMT630H_Datas.c</FileName>
<FileType>1</FileType> <FileType>1</FileType>
...@@ -1018,6 +1018,16 @@ ...@@ -1018,6 +1018,16 @@
<FileType>5</FileType> <FileType>5</FileType>
<FilePath>..\..\..\..\Source\Component\System_Monitor\System_Monitor_User.h</FilePath> <FilePath>..\..\..\..\Source\Component\System_Monitor\System_Monitor_User.h</FilePath>
</File> </File>
<File>
<FileName>keil_S1.0.8_20240924.lib</FileName>
<FileType>4</FileType>
<FilePath>..\..\..\..\Source\Component\AMT630H\keil_S1.0.8_20240924.lib</FilePath>
</File>
<File>
<FileName>UartProtocol.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Component\AMT630H\UartProtocol.h</FilePath>
</File>
</Files> </Files>
</Group> </Group>
<Group> <Group>
......
...@@ -11,8 +11,9 @@ uint16_t LastPhoneBookTotalCount = 0; ...@@ -11,8 +11,9 @@ uint16_t LastPhoneBookTotalCount = 0;
_PICID_Struct PicObj; _PICID_Struct PicObj;
_QRCODE_RECT QRCode_Rect; _QRCODE_RECT QRCode_Rect;
const uint8_t HJBlueToothName[9]= {"HJ750"}; const uint8_t HJBlueToothName[9]= {"HJ750"};
uint8_t UUIDConfigBuf[22] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00}; uint8_t UUIDConfigBuf[21] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
//"600032023120100000995" //007502024092400000002
//0x30,0x30,0x37,0x35,0x30,0x32,0x30,0x32,0x34,0x30,0x39,0x32,0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31
uint8_t SetBluetoothCloseCount = 0; uint8_t SetBluetoothCloseCount = 0;
uint8_t OSVersionASCLLList[20] = uint8_t OSVersionASCLLList[20] =
{ {
...@@ -97,7 +98,11 @@ void BlueToothService(void) ...@@ -97,7 +98,11 @@ void BlueToothService(void)
} }
} }
SetUUIDData((char *)UUIDConfigBuf, 22); for (uint8_t i = 0; i < 21; i++)
{
UUIDConfigBuf[i] = Diag_Write_Data.DID_5000[i];
}
SetUUIDData((char *)UUIDConfigBuf, 21);
if (OTA_Update_Flag == 1) if (OTA_Update_Flag == 1)
{ {
QRCode_Rect.x = 650; QRCode_Rect.x = 650;
...@@ -135,7 +140,7 @@ void BlueToothService(void) ...@@ -135,7 +140,7 @@ void BlueToothService(void)
} }
OTA_Update_Count_Open=0; OTA_Update_Count_Open=0;
} }
SetTaskbarHeight(150); SetTaskbarHeight(130);
SetBlueToothName((uint8_t *)HJBlueToothName, sizeof(HJBlueToothName)); SetBlueToothName((uint8_t *)HJBlueToothName, sizeof(HJBlueToothName));
TextService(); TextService();
} }
...@@ -157,7 +162,7 @@ TEXT_STRUCT TextPara[TEXT_NUM_TOTAL] = ...@@ -157,7 +162,7 @@ TEXT_STRUCT TextPara[TEXT_NUM_TOTAL] =
{TEXT_NUM_PHONE_NUMBER_TOTAL, 0x4011, 0}, {TEXT_NUM_PHONE_NUMBER_TOTAL, 0x4011, 0},
{TEXT_NUM_INFORMATION_MCUVER, 0x4012, 0}, {TEXT_NUM_INFORMATION_MCUVER, 0x4012, 0},
{TEXT_NUM_INFORMATION_SWVERSION, 0x4013, 0}, {TEXT_NUM_INFORMATION_SWVERSION, 0x4013, 0},
{TEXT_NUM_INFORMATION_HW, 0x4014, 0}, //23F 23E {TEXT_NUM_INFORMATION_UUID, 0x4014, 0},
{TEXT_NUM_INFORMATION_OS, 0x4015, 0}, {TEXT_NUM_INFORMATION_OS, 0x4015, 0},
{TEXT_NUM_INFORMATION_MCU, 0x4016, 0}, {TEXT_NUM_INFORMATION_MCU, 0x4016, 0},
{TEXT_NUM_FAUULT_CODE, 0x4022, 0}, {TEXT_NUM_FAUULT_CODE, 0x4022, 0},
...@@ -174,6 +179,8 @@ uint8_t PhoneNumberTotal[20]; ...@@ -174,6 +179,8 @@ uint8_t PhoneNumberTotal[20];
uint8_t InformationOSVersion[20]; uint8_t InformationOSVersion[20];
uint8_t InformationMCUVersion[26]; uint8_t InformationMCUVersion[26];
uint8_t TextFaultCodeNum[10]; uint8_t TextFaultCodeNum[10];
uint8_t UUIDDisplay[42];
uint8_t LastUUIDDisplay[21];
void TextService(void) void TextService(void)
{ {
...@@ -217,6 +224,8 @@ void TextService(void) ...@@ -217,6 +224,8 @@ void TextService(void)
memset(LastBlueToothName, 0, sizeof(LastBlueToothName)); memset(LastBlueToothName, 0, sizeof(LastBlueToothName));
memset(PhoneNumberTotal, 0, sizeof(PhoneNumberTotal)); memset(PhoneNumberTotal, 0, sizeof(PhoneNumberTotal));
memset(TextFaultCodeNum, 0, sizeof(TextFaultCodeNum)); memset(TextFaultCodeNum, 0, sizeof(TextFaultCodeNum));
memset(LastUUIDDisplay, 0, sizeof(LastUUIDDisplay));
memset(UUIDDisplay, 0, sizeof(UUIDDisplay));
for (uint8_t i = 0; i < sizeof(OSVersionASCLLList); i++) for (uint8_t i = 0; i < sizeof(OSVersionASCLLList); i++)
{ {
...@@ -342,7 +351,16 @@ void TextService(void) ...@@ -342,7 +351,16 @@ void TextService(void)
} }
TextPara[TEXT_NUM_FAUULT_CODE].Vaild = 0x01; TextPara[TEXT_NUM_FAUULT_CODE].Vaild = 0x01;
} }
if (((memcmp(LastUUIDDisplay, UUIDConfigBuf, sizeof(LastUUIDDisplay))) != 0))
{
for (uint8_t i = 0; i < (sizeof(UUIDConfigBuf)); i++)
{
UUIDDisplay[i * 2] = UUIDConfigBuf[i];
UUIDDisplay[(i * 2) + 1] = 0x00;
}
memcpy(LastUUIDDisplay, UUIDConfigBuf, sizeof(LastUUIDDisplay));
TextPara[TEXT_NUM_INFORMATION_UUID].Vaild = 0X01;
}
} }
...@@ -10,7 +10,7 @@ typedef enum { ...@@ -10,7 +10,7 @@ typedef enum {
TEXT_NUM_PHONE_NUMBER_TOTAL, TEXT_NUM_PHONE_NUMBER_TOTAL,
TEXT_NUM_INFORMATION_MCUVER, TEXT_NUM_INFORMATION_MCUVER,
TEXT_NUM_INFORMATION_SWVERSION, TEXT_NUM_INFORMATION_SWVERSION,
TEXT_NUM_INFORMATION_HW, TEXT_NUM_INFORMATION_UUID,
TEXT_NUM_INFORMATION_OS, TEXT_NUM_INFORMATION_OS,
TEXT_NUM_INFORMATION_MCU, TEXT_NUM_INFORMATION_MCU,
TEXT_NUM_FAUULT_CODE, TEXT_NUM_FAUULT_CODE,
...@@ -48,6 +48,7 @@ extern uint8_t PhoneNumberTotal[20]; ...@@ -48,6 +48,7 @@ extern uint8_t PhoneNumberTotal[20];
extern uint8_t InformationOSVersion[20]; extern uint8_t InformationOSVersion[20];
extern uint8_t InformationMCUVersion[26]; extern uint8_t InformationMCUVersion[26];
extern uint8_t TextFaultCodeNum[10]; extern uint8_t TextFaultCodeNum[10];
extern uint8_t UUIDDisplay[42];
extern TEXT_STRUCT TextPara[]; extern TEXT_STRUCT TextPara[];
#endif #endif
\ No newline at end of file
...@@ -188,7 +188,7 @@ void COM_CAN_Init(void) ...@@ -188,7 +188,7 @@ void COM_CAN_Init(void)
// CAN_TX_SetEnable(&CAN_CH0_CanMsgTxOp, CAN_N_TX_Enable); // CAN_TX_SetEnable(&CAN_CH0_CanMsgTxOp, CAN_N_TX_Enable);
} }
uint8_t u8BusoffRecoverFlag = 0U;
/** /**
* @brief Buff恢复函数 * @brief Buff恢复函数
* @param deltaTime 调用时间 单位ms 10MS调用 * @param deltaTime 调用时间 单位ms 10MS调用
...@@ -197,6 +197,7 @@ void Can_BusOff_Recover(uint8_t deltaTime) ...@@ -197,6 +197,7 @@ void Can_BusOff_Recover(uint8_t deltaTime)
{ {
if (get_can_busoff(CAN_CH_0) == 2) if (get_can_busoff(CAN_CH_0) == 2)
{ {
u8BusoffRecoverFlag = 1U;
if (RSCAN0Busoff.Status == RSCAN0_BUS_STABLE) if (RSCAN0Busoff.Status == RSCAN0_BUS_STABLE)
{ {
RSCAN0Busoff.Status = RSCAN0_BUS_OFF_LV1; RSCAN0Busoff.Status = RSCAN0_BUS_OFF_LV1;
...@@ -236,6 +237,11 @@ void Can_BusOff_Recover(uint8_t deltaTime) ...@@ -236,6 +237,11 @@ void Can_BusOff_Recover(uint8_t deltaTime)
} }
else /* 总线正常,没有Bus-off发生*/ else /* 总线正常,没有Bus-off发生*/
{ {
if(u8BusoffRecoverFlag == 1U)//从bussoff恢复后,只调用一次Can_RX_Apply_Buff
{
u8BusoffRecoverFlag = 0U;
Can_RX_Apply_Buff();
}
} }
} }
......
#include "Data_Coolant.h" #include "Data_Coolant.h"
#include "Components.h" #include "Components.h"
#include "Hysteresis.h"
#define FAST_TIME 15 //20*20 400ms变化一格
#define NORMAL_TIME 500 //500*20 10s变化一格
#define Disconnected_TIME 25 //掉线时间
#pragma ghs section bss = ".myNonInitArea"
//_Data_Cng Data_Cng_Percent;
//_Data_Cng Data_Cng_Pressure;
Hys_uint8_t u8HysRamData[HYS_RAM_DATA_LEN];
#pragma ghs section bss = default
#define Coolant_DATA_TIME 25u /*这里填写多长时间采集一个数据,单位ms*/ DataCoolantTempStruct DataCoolantTemp ;
#define Coolant_DATA_NUM 20u /*燃油电阻采集数据总数 最大255*/ DataCoolantTempDisStruct DataCoolantTemp_Dis;
#define Coolant_CAL_START 5u /*数据排序后取中间部分计算平均:起始*/
#define Coolant_CAL_END 15u /*数据排序后取中间部分计算平均:结束*/ DataCoolantTempSamplerStruct DataResCoolantTempSampler ;
#define RETURN_DIFFERENCE 25u /*判断上升或下降的回差,精度0.1*/ uint8_t u8SelfCheckTime;
uint8_t u8SelfCheckTime_Finish;
#define Coolant_SEG_UP 0u #define SelfCheckTime 60
#define Coolant_SEG_DOWN 1u uint16_t TEMP_SPEED;
uint16_t time_temp;
uint16_t g_u16CoolantData[Coolant_DATA_NUM]; uint16_t time_power_on = 0;
uint8_t g_u8CoolantDataCount = 0u; uint16_t time_lost = 0;
uint16_t CoolantR = 0u; /*滤波后的燃油电阻,精度0.1*/ const HYS_Seg_Table_st_t stHYSSegTableCng[9] =
static uint16_t CoolantRBak = 0; {
{0,529},
uint8_t g_u8DesCoolantSetp = 0u; {550, 609},
uint8_t g_u8CurCoolantSetp = 0u; {630, 689},
uint8_t g_u8CoolantInitFlag = 0u; {710, 859},
uint8_t g_u8CoolantStateInitFlag = 0u; {880, 939},
uint8_t g_u8CoolantDir = Coolant_SEG_UP; {960, 1019},
CoolantSensorSts_t CoolantSensorState = CoolantSensorNormal; {1040, 1099},
uint16_t g_u16CoolantSensorNormalTime = 0u; {1120, 1179},
uint16_t g_u16CoolantSensorShortTime = 0u; {1200,0xFFFF},
uint16_t g_u16CoolantSensorOpenTime = 0u; };
uint8_t g_u8CoolantADCompleteFlg = 0u;
/*为了过QAC用的,实际完全不会使用*/
void Coolant_KL30_Init(void) const HYS_Seg_Table_st_t stHYSSegTablePWM[3] =
{ {
g_u8DesCoolantSetp = 0u; {0U, 40U},
g_u8CurCoolantSetp = 0u; {50U, 60U},
g_u8CoolantInitFlag = 1u; {70U, 100U},
g_u8CoolantStateInitFlag = 1u; };
g_u8CoolantDir = Coolant_SEG_UP;
CoolantSensorState = CoolantSensorNormal; const HYS_Attribute_st_t stHysAttribute[HYS_NUM_MAX] =
g_u16CoolantSensorNormalTime = 0u; {
g_u16CoolantSensorShortTime = 0u; {stHYSSegTableCng, 0U, 9U, 1U},
g_u16CoolantSensorOpenTime = 0u; {stHYSSegTablePWM, 0U, 3U, 1U}, /*为了过QAC用的,实际完全不会使用*/
g_u8CoolantADCompleteFlg = 0u; };
}
uint16_t Coolant_Res[Coolant_LEN] =
{
3000,
1540,
1510,
1130,
1100,
990,
960,
850,
820,
680,
650,
500,
470,
410,
380,
230,
200,
};
uint16_t Coolant_Temp[Coolant_LEN] =
{
0,
52,
55,
60,
63,
68,
71,
85,
88,
93,
96,
101,
104,
109,
112,
117,
120,
} ;
/*
* DataCoolantTemp.Temp_Value 当前温度值
* DataCoolantTemp.u8Res_Valid AD采集的数据是否有效
* DataCoolantTemp.u8Res_ADValid AD采集是否有效
* DataCoolantTemp.TEMPMode 此时水温表所在状态
* DataCoolantTemp_Dis.u8_CurSeg 当前格数
* DataCoolantTemp.TEMPSetp 目标个数
*/
void TEMP_KL30_Init ( void )
{
DataCoolantTemp.Temp_Value = 0;
DataCoolantTemp.u8Can_Valid = 0;
DataCoolantTemp.u16Can_Actual = 0;
DataCoolantTemp.u8Res_Valid = 0 ;
DataCoolantTemp.u16Res_ADValue = 0;
DataCoolantTemp.u8Res_ADValid = 0;
void Coolant_KL15_Init(void) DataResCoolantTempSampler.Cnt = 0;
{ DataCoolantTemp.TEMPMode = 0;
g_u8DesCoolantSetp = 0u; DataCoolantTemp_Dis.u8_CurSeg = 0;
g_u8CurCoolantSetp = 0u; DataCoolantTemp.TEMPSetp = 0;
g_u8CoolantInitFlag = 1u; DataCoolantTemp.u8_ResStatus = 0;
g_u8CoolantStateInitFlag = 1u; TEMP_SPEED = 0;
g_u8CoolantDir = Coolant_SEG_UP; time_power_on = 0;
CoolantSensorState = CoolantSensorNormal; time_lost = 0;
g_u16CoolantSensorNormalTime = 0u; time_temp = 0;
g_u16CoolantSensorShortTime = 0u; HYS_Init_st_t stHYSInit;
g_u16CoolantSensorOpenTime = 0u; stHYSInit.u8HYSNum = HYS_NUM_MAX;
g_u8CoolantADCompleteFlg = 0u; HYS_KL30_Init(&u8HysRamData[0], stHysAttribute, &stHYSInit);
} }
void Coolant_R_Cal(uint8_t deltaTime) void TEMP_KL15_Init ( void )
{ {
uint16_t CoolantRes = 0;
uint8_t i, j;
uint32_t temp32;
static uint16_t timeCount = 0;
if (g_u8CoolantStateInitFlag) DataCoolantTemp.Temp_Value = 0;
{ DataCoolantTemp.u8Can_Valid = 0;
CoolantR = ADC_Read_Signal(ADC_CH_COOLANT_TEMP1_R); DataCoolantTemp.u16Can_Actual = 0;
} DataCoolantTemp.u8Res_Valid = 0 ;
DataCoolantTemp.u16Res_ADValue = 0;
DataCoolantTemp.u8Res_ADValid = 0;
DataCoolantTemp.u8_ResStatus = 0;
DataCoolantTemp_Dis.u8_CurSeg = 0;
DataResCoolantTempSampler.Cnt = 0;
DataCoolantTemp.TEMPMode = 0;
TEMP_SPEED = 0;
time_power_on = 0;
time_lost = 0;
time_temp = 0;
}
if (timeCount >= Coolant_DATA_TIME) void Data_Coolant_Temp_Processing_Service ( void )
{ {
timeCount = 0; uint16_t Coolant_Temperature;
if (g_u8CoolantDataCount < Coolant_DATA_NUM) uint32_t Temp;
uint8_t i;
Coolant_Temperature = Get_CAN_CH0_ID_101_Sig_ECU_Engine_Temperature();
//can
if (SYS_OPR_STAT_IGN_ON )
{
//can
if( (CAN_MSG_Status(&CAN_CH0_CanMsgOp, CAN_CH0_ID_CH0_101_Msg_Count) == CAN_SIG_LOST))
{ {
/*获取燃油电阻*/ DataCoolantTemp.u8Can_Valid = 0;
CoolantRes = ADC_Read_Signal(ADC_CH_COOLANT_TEMP1_R); DataCoolantTemp.u16Can_Actual = 0;
}
/*四舍五入*/ else
if (CoolantRes < 3100) {
if(Coolant_Temperature >= 0x6338)
{
DataCoolantTemp.u8Can_Valid = 0;
DataCoolantTemp.u16Can_Actual = 0;
}
else
{ {
if (CoolantRes % 10 >= 5) DataCoolantTemp.u8Can_Valid = 1;
if(Coolant_Temperature >= 2730)
{ {
CoolantRes += 5; Coolant_Temperature -= 2730;
} }
else if(Coolant_Temperature <= 2430)
{
Coolant_Temperature =0;
DataCoolantTemp.u8Can_Valid = 0;
}
else
{
Coolant_Temperature =0;
}
DataCoolantTemp.u16Can_Actual = Coolant_Temperature;
} }
else }
}
else
{
DataCoolantTemp.u8Can_Valid = 0;
DataCoolantTemp.u16Can_Actual = 0;
}
//Res
if(ADC_Read_Signal_Valid(ADC_CH_COOLANT_TEMP1_R) == 0)
{
DataCoolantTemp.u8Res_ADValid = 0;
DataResCoolantTempSampler.Cnt = 0;
DataCoolantTemp.u16Res_ADValue = 65535;
DataCoolantTemp.u8Res_Flashtimer = 0;
}
else
{
DataCoolantTemp.u8Res_Flashtimer ++;
if(DataCoolantTemp.u8Res_Flashtimer >= 5)
{
DataCoolantTemp.u8Res_Flashtimer = 5;
if(DataCoolantTemp.u8Res_ADValid == 0)
{ {
CoolantRes = 0xFFFF; DataCoolantTemp.u16Res_ADValue = ADC_Read_Signal(ADC_CH_COOLANT_TEMP1_R);
DataCoolantTemp.u8Res_ADValid = 1;
} }
/*由小到大插入数据*/ else
for (i = 0; i < g_u8CoolantDataCount; i++)
{ {
if (CoolantRes < g_u16CoolantData[i]) DataResCoolantTempSampler.Buffer[DataResCoolantTempSampler.Cnt] = ADC_Read_Signal(ADC_CH_COOLANT_TEMP1_R);
i = DataResCoolantTempSampler.Cnt;
while ((i > 0) && (DataResCoolantTempSampler.Buffer[i] < DataResCoolantTempSampler.Buffer[i - 1]))
{ {
break; Temp = DataResCoolantTempSampler.Buffer[i];
DataResCoolantTempSampler.Buffer[i] = DataResCoolantTempSampler.Buffer[i - 1];
DataResCoolantTempSampler.Buffer[i - 1] = Temp;
i--;
} }
}
for (j = g_u8CoolantDataCount; j > i; j--) DataResCoolantTempSampler.Cnt++;
if (DataResCoolantTempSampler.Cnt >= 5)
{
DataResCoolantTempSampler.Cnt = 0;
Temp = (DataResCoolantTempSampler.Buffer[1]+DataResCoolantTempSampler.Buffer[2]+DataResCoolantTempSampler.Buffer[3])/3;
DataCoolantTemp.u16Res_ADValue = (uint16_t)(Temp);
}
}
}
}
if((ADC_Read_Signal_Valid(ADC_CH_COOLANT_TEMP1_R) == 0)||(DataCoolantTemp.u8Res_Flashtimer < 5))
{
DataCoolantTemp.u8Res_Valid = 0 ;
DataCoolantTemp.u16Res_Actual = 0;
DataResCoolantTempSampler.ResOpen_ActTimer = 10;
DataResCoolantTempSampler.ResOpen_InActTimer = 25;
}
else
{
if((DataCoolantTemp.u8Res_ADValid)&&(DataCoolantTemp.u16Res_ADValue >= 3000))
{
if(DataResCoolantTempSampler.ResOpen_ActTimer < 10)
{ {
g_u16CoolantData[j] = g_u16CoolantData[j - 1]; DataResCoolantTempSampler.ResOpen_ActTimer++;
} }
g_u16CoolantData[i] = CoolantRes; else
g_u8CoolantDataCount++; {
DataCoolantTemp.u8_ResStatus = 3;//当前状态为开路
DataCoolantTemp.u8Res_Valid = 0 ;
DataCoolantTemp.u16Res_Actual = 0 ;
DataResCoolantTempSampler.ResOpen_InActTimer = 0;
}
} }
else else
{ {
/*一组数据采集完毕,取中间部分计算平均值*/ if(DataResCoolantTempSampler.ResOpen_InActTimer < 5)
temp32 = 0;
for (i = Coolant_CAL_START; i < Coolant_CAL_END; i++)
{ {
temp32 += g_u16CoolantData[i]; DataResCoolantTempSampler.ResOpen_InActTimer++;
} }
CoolantR = temp32 / (Coolant_CAL_END - Coolant_CAL_START); else
g_u8CoolantDataCount = 0; {
g_u8CoolantADCompleteFlg = 1; DataCoolantTemp.u8Res_Valid = 1 ;
DataResCoolantTempSampler.ResOpen_ActTimer = 0;
if(DataCoolantTemp.u16Res_ADValue < 3000)
{
DataCoolantTemp.u16Res_Actual = Get_Coolant_Res_To_Temp(DataCoolantTemp.u16Res_ADValue);
}
}
}
}
if(DataCoolantTemp.u8Can_Valid || DataCoolantTemp.u8Res_Valid )
{
DataCoolantTemp.u8_ResStatus = 1;//当前状态正常
}
if (DataCoolantTemp.u8Can_Valid == 1)
{
DataCoolantTemp.Temp_Value = DataCoolantTemp.u16Can_Actual;
}
else if( DataCoolantTemp.u8Res_Valid == 1)
{
DataCoolantTemp.Temp_Value = DataCoolantTemp.u16Res_Actual;
if(DataCoolantTemp.u16Res_ADValue < 40)
{
DataCoolantTemp.u8_ResStatus = 2;//当前状态为短路
} }
} }
timeCount += deltaTime; else
} {
if(DataCoolantTemp.u8_ResStatus != 3)
{
DataCoolantTemp.u8_ResStatus = 0;
}
DataCoolantTemp.Temp_Value = 0;
}
TEMP_Gauges_Cal();
time_power_on++;
if(time_power_on >= 100)//上电延时获取数据
{
time_power_on = 100;
void Coolant_State_Check(uint8_t deltaTime) if(DataCoolantTemp.u8Can_Valid||DataCoolantTemp.u8Res_Valid)
{
// if (CoolantR < 30)
// { /*短路3*/
// g_u16CoolantSensorOpenTime = 0;
// g_u16CoolantSensorNormalTime = 0;
// if ((g_u16CoolantSensorShortTime > 3000) || ((g_u8CoolantStateInitFlag) && (g_u16CoolantSensorShortTime > 3000)))
// {
// CoolantSensorState = CoolantSensorShortCircuit;
// g_u8DesCoolantSetp = 0;
// g_u8CurCoolantSetp = 6;
// g_u8CoolantStateInitFlag = 0;
// g_u8CoolantInitFlag = 1;
// g_u8CoolantDir = Coolant_SEG_UP;
// }
// else
// {
// g_u16CoolantSensorShortTime += deltaTime;
// }
// }
if (CoolantR > 3000)
{ /*开路 300*/
g_u16CoolantSensorShortTime = 0;
g_u16CoolantSensorNormalTime = 0;
if ((g_u16CoolantSensorOpenTime > 3000) || ((g_u8CoolantStateInitFlag) && (g_u16CoolantSensorOpenTime > 3000)))
{ {
CoolantSensorState = CoolantSensorOpenCircuit; time_lost = 0;
g_u8DesCoolantSetp = 0; if(DataCoolantTemp.TEMPMode == 3)//掉线
g_u8CurCoolantSetp = 0; {
g_u8CoolantStateInitFlag = 0; TEMP_SPEED = FAST_TIME;
g_u8CoolantInitFlag = 1; }
g_u8CoolantDir = Coolant_SEG_UP; else if(DataCoolantTemp.TEMPMode == 0)//自检
{
DataCoolantTemp_Dis.u8_CurSeg = DataCoolantTemp.TEMPSetp;
}
if(DataCoolantTemp.TEMPMode == 3)
{
DataCoolantTemp.TEMP_Fastime = 100;
}
DataCoolantTemp.TEMPMode = 1;
} }
else else
{ {
g_u16CoolantSensorOpenTime += deltaTime; time_lost++;
if(time_lost >= Disconnected_TIME)
{
time_lost = Disconnected_TIME;
if(DataCoolantTemp.TEMPMode != 3)
{
DataCoolantTemp.TEMPMode = 3;
TEMP_SPEED = NORMAL_TIME;
}
DataCoolantTemp.TEMPSetp = 0;
}
} }
} }
else
time_temp ++;
if(DataCoolantTemp.TEMP_Fastime>0)
{
DataCoolantTemp.TEMP_Fastime--;
}
if(DataCoolantTemp.TEMP_Fastime==0)
{ {
g_u16CoolantSensorShortTime = 0; if(DataCoolantTemp.TEMPSetp == DataCoolantTemp_Dis.u8_CurSeg)
g_u16CoolantSensorOpenTime = 0;
if (g_u16CoolantSensorNormalTime > 3000)
{ {
CoolantSensorState = CoolantSensorNormal; TEMP_SPEED = NORMAL_TIME;
g_u8CoolantStateInitFlag = 0; time_temp = 0;
} }
else
}
if(time_temp>=TEMP_SPEED)
{
time_temp = 0;
if(DataCoolantTemp.TEMPSetp > DataCoolantTemp_Dis.u8_CurSeg)
{ {
g_u16CoolantSensorNormalTime += deltaTime; DataCoolantTemp_Dis.u8_CurSeg++;
} }
else if(DataCoolantTemp.TEMPSetp < DataCoolantTemp_Dis.u8_CurSeg)
{
DataCoolantTemp_Dis.u8_CurSeg--;
}
}
}
//硬线数据
uint16_t Get_Coolant_Res_To_Temp(uint16_t Temp_Res)
{
uint16_t TempValue = 0;
TempValue = Get_Res_To_Temp(Coolant_Res, Coolant_Temp, Coolant_LEN, Temp_Res) ;
return TempValue*10;
}
void TEMP_Gauges_Cal(void)//计算目标格数
{
DataCoolantTemp.TEMPSetp = 0;
HYS_Physical_Quantity_Input(HYS_TEMP, DataCoolantTemp.Temp_Value);
DataCoolantTemp.TEMPSetp = HYS_Get_Seg(HYS_TEMP);
if(DataCoolantTemp.TEMPSetp > 9 )
{
DataCoolantTemp.TEMPSetp = 0;
} }
DataCoolantTemp.TEMPSetp = DataCoolantTemp.TEMPSetp - 1;
} }
void Coolant_Gauges_Cal(uint8_t deltaTime) uint16_t Get_Res_To_Temp(uint16_t *ResBoard, uint16_t *TempBoard, uint8_t Len, uint16_t input)
{ {
static uint16_t time = 0; uint8_t i = 0;
uint16_t ret = 0;
uint32_t temp = 0;
if(input >= ResBoard[0])
{
ret = TempBoard[0];
}
else if(input <= ResBoard[Len - 1])
{
ret = TempBoard[Len - 1];
}
else
{
for(i = 0; i < (Len - 1); i++)
{
if((input < ResBoard[i]) && (input >= ResBoard[i + 1]))
{
temp = TempBoard[i + 1] - TempBoard[i];
temp *= (ResBoard[i] - input);
temp /= (ResBoard[i] - ResBoard[i + 1]);
temp += TempBoard[i];
ret = (uint16_t)temp;
break;
}
}
}
return ret;
}
if ((CoolantSensorState == CoolantSensorNormal) && (CoolantR <= 3000)) // && (CoolantR >= 30) void Common_SelfCheckTime_Init(void)
{
u8SelfCheckTime = 0;
u8SelfCheckTime_Finish = 0;
}
void Common_SelfCheckTime(void)
{
if (SYS_OPR_STAT_IGN_ON)
{ {
if (CoolantR < 180) if (u8SelfCheckTime < SelfCheckTime)
{ {
g_u8DesCoolantSetp = 1; u8SelfCheckTime++;
u8SelfCheckTime_Finish = 0;
} }
else if(CoolantR > 220) else
{ {
g_u8DesCoolantSetp = 0; u8SelfCheckTime = SelfCheckTime;
u8SelfCheckTime_Finish = 1;
} }
} }
else
{
u8SelfCheckTime = SelfCheckTime;
u8SelfCheckTime_Finish = 1;
}
} }
void Coolant_Cal_Sevice(uint8_t deltaTime)
{
/*检测燃油电阻状态*/
Coolant_State_Check(deltaTime);
/*显示燃油格*/ uint8_t GET_DataCoolantTempSegDisp(void)
Coolant_Gauges_Cal(deltaTime); {
return DataCoolantTemp_Dis.u8_CurSeg;
} }
uint8_t Get_CurCoolantSetpState(void) uint16_t GET_DataCollantTempSegValid(void)
{ {
return g_u8DesCoolantSetp; return DataCoolantTemp.u16Res_ADValue;//DataCoolantTemp_Dis.Dis_Valid;
} }
uint16_t GET_DataCollantTempSegStatus(void)
CoolantSensorSts_t Get_Coolant_Sensor_State(void)
{ {
return CoolantSensorState; return DataCoolantTemp.u8_ResStatus;//DataCoolantTemp_Dis.Dis_Valid;
} }
#ifndef DATA_COOLANT_H #ifndef DATA_COOLANT_H
#define DATA_COOLANT_H #define DATA_COOLANT_H
#include "stdint.h" #include "Components.h"
typedef enum{ #define Coolant_LEN 17
CoolantSensorNormal = 0,
CoolantSensorShortCircuit, typedef unsigned int INT16U;
CoolantSensorOpenCircuit, /*** 控制结构 ***/
}CoolantSensorSts_t;
typedef struct
extern void Coolant_KL15_Init(void); {
extern void Coolant_KL30_Init(void); uint8_t u8_DestSeg;
extern void Coolant_Cal_Sevice(uint8_t deltaTime); uint8_t u8_CurSeg;
extern uint8_t Get_CurCoolantSetp(void); }DataCoolantTempDisStruct;
extern CoolantSensorSts_t Get_Coolant_Sensor_State(void);
void Coolant_R_Cal(uint8_t deltaTime); extern DataCoolantTempDisStruct DataCoolantTemp_Dis;
typedef struct
{
uint16_t Temp_Value;
uint8_t Symbol;
uint16_t u16Can_Actual;
uint8_t u8Can_Valid;
uint16_t u16Res_Actual;
uint16_t u16Res_ADValue;
uint8_t u8Res_Valid;
uint8_t u8Res_ADValid;
uint8_t u8Res_Flashtimer ;
uint8_t TEMPSetp;
uint8_t TEMPMode;
uint16_t TEMP_Fastime ;
uint8_t u8_ResStatus //
}DataCoolantTempStruct; //水温数据结构
typedef struct
{
uint32_t Buffer[5];
uint8_t Cnt;
uint8_t time;
uint16_t ResOpen_ActTimer;
uint16_t ResOpen_InActTimer;
}DataCoolantTempSamplerStruct;
void Common_SelfCheckTime_Init(void);
void Common_SelfCheckTime(void);
void Data_Coolant_Temp_Processing_Service(void);
uint16_t Get_Coolant_Res_To_Temp(uint16_t Temp_Res);
void Get_Coolant_Temp_Seg(uint16_t Temp_Value);
void Data_Coolant_Temp_Display ( void );
extern uint16_t GET_DataCollantTempSegValid(void);
extern uint16_t GET_DataCollantTempSegStatus(void);
extern void TEMP_KL30_Init ( void );
extern void TEMP_KL15_Init ( void );
extern uint8_t GET_DataCoolantTempSegDisp(void);
void TEMP_Gauges_Cal(void);
uint16_t Get_Res_To_Temp(uint16_t *ResBoard, uint16_t *TempBoard, uint8_t Len, uint16_t input);
extern DataCoolantTempStruct DataCoolantTemp ;
#endif #endif
...@@ -25,7 +25,7 @@ void Gpio_Init(_GpioUser_Enum InitMode) ...@@ -25,7 +25,7 @@ void Gpio_Init(_GpioUser_Enum InitMode)
RTE_GPIO_Config(RTE_GPIO_PORT01_PIN02, GpioOut_Low); //TXD-ESP-IN-MCU RTE_GPIO_Config(RTE_GPIO_PORT01_PIN02, GpioOut_Low); //TXD-ESP-IN-MCU
RTE_GPIO_Config(RTE_GPIO_PORT01_PIN03, RTE_GPIO_DIR_IN); RTE_GPIO_Config(RTE_GPIO_PORT01_PIN03, RTE_GPIO_DIR_IN);
RTE_GPIO_Config(RTE_GPIO_PORT01_PIN04, RTE_GPIO_DIR_IN); //SCL-IIC--- RTE_GPIO_Config(RTE_GPIO_PORT01_PIN04, RTE_GPIO_DIR_IN); //SCL-IIC---
RTE_GPIO_Config(RTE_GPIO_PORT01_PIN05, GpioOut_High); //SDA-IIC--- RTE_GPIO_Config(RTE_GPIO_PORT01_PIN05, GpioOut_Low); //SDA-IIC---
RTE_GPIO_Config(RTE_GPIO_PORT01_PIN06, RTE_GPIO_DIR_IN); RTE_GPIO_Config(RTE_GPIO_PORT01_PIN06, RTE_GPIO_DIR_IN);
RTE_GPIO_Config(RTE_GPIO_PORT01_PIN07, RTE_GPIO_DIR_IN); RTE_GPIO_Config(RTE_GPIO_PORT01_PIN07, RTE_GPIO_DIR_IN);
...@@ -53,8 +53,8 @@ void Gpio_Init(_GpioUser_Enum InitMode) ...@@ -53,8 +53,8 @@ void Gpio_Init(_GpioUser_Enum InitMode)
RTE_GPIO_Config(RTE_GPIO_PORT05_PIN04, GpioOut_High); RTE_GPIO_Config(RTE_GPIO_PORT05_PIN04, GpioOut_High);
RTE_GPIO_Config(RTE_GPIO_PORT05_PIN05, RTE_GPIO_DIR_IN); RTE_GPIO_Config(RTE_GPIO_PORT05_PIN05, RTE_GPIO_DIR_IN);
RTE_GPIO_Config(RTE_GPIO_PORT06_PIN00, GpioOut_Low); //存储SCL RTE_GPIO_Config(RTE_GPIO_PORT06_PIN00, RTE_GPIO_DIR_IN); //存储SCL
RTE_GPIO_Config(RTE_GPIO_PORT06_PIN01, GpioOut_Low); //存储SDA RTE_GPIO_Config(RTE_GPIO_PORT06_PIN01, RTE_GPIO_DIR_IN); //存储SDA
RTE_GPIO_Config(RTE_GPIO_PORT06_PIN02, GpioOut_Low); //SCL_MCU RTE_GPIO_Config(RTE_GPIO_PORT06_PIN02, GpioOut_Low); //SCL_MCU
RTE_GPIO_Config(RTE_GPIO_PORT06_PIN03, GpioOut_Low); //SDA_MCU RTE_GPIO_Config(RTE_GPIO_PORT06_PIN03, GpioOut_Low); //SDA_MCU
......
#ifndef HYSTERESIS_H__
#define HYSTERESIS_H__
// #define HYS_PLATFORM_16BIT
#ifdef HYS_PLATFORM_16BIT
typedef unsigned char Hys_uint8_t;
typedef unsigned int Hys_uint16_t;
typedef unsigned long Hys_uint32_t;
#else
typedef unsigned char Hys_uint8_t;
typedef unsigned short Hys_uint16_t;
typedef unsigned int Hys_uint32_t;
typedef unsigned long long Hys_uint64_t;
#endif
/*所有需要处理的物理量枚举*/
typedef enum
{
HYS_TEMP = 0U, /*水温*/
HYS_PWM, /*..*/
HYS_NUM_MAX,
} HYS_Num_en_t;
/***************************Do not modify the following*********************************/
/***************************Do not modify the following*********************************/
/***************************Do not modify the following*********************************/
/*当前文件版本号*/
#define HYS_VERSION_NUM 0X10U
#define HYS_RAM_DATA_LEN (HYS_NUM_MAX * 2U)
/*操作函数返回状态*/
typedef enum
{
HYS_OPERATE_SUCCESS = 0UL, /*函数操作成功*/
HYS_OPERATE_FAIL, /*函数操作失败*/
} HYS_Operate_Type_en_t;
typedef struct
{
/*该段的下限值*/
Hys_uint16_t u16HYSSegLow;
/*该段的上限值*/
Hys_uint16_t u16HYSSegHigh;
} HYS_Seg_Table_st_t;
typedef struct
{
/*参数分段属性表*/
const HYS_Seg_Table_st_t *pstHYSSegTable;
/*默认填0U即可*/
Hys_uint16_t u16HYSReserved;
/*分段属性表长度*/
Hys_uint8_t u8HYSSegTableLen;
/*1U:正序 0U:降序*/
Hys_uint8_t u8HYSSortBy;
} HYS_Attribute_st_t;
typedef struct
{
/*物理量数量,也就是 HYS_NUM_MAX */
Hys_uint8_t u8HYSNum;
} HYS_Init_st_t;
/************************************************************************/
/*30初始化,所有状态重新开始计算*/
void HYS_KL30_Init(Hys_uint8_t *pu8HYSRamData, const HYS_Attribute_st_t *pstHYSAttribute, HYS_Init_st_t *pstHYSInit);
/*唤醒初始化,会保持休眠唤醒前的状态*/
void HYS_Wakeup_Init(Hys_uint8_t *pu8HYSRamData, const HYS_Attribute_st_t *pstHYSAttribute, HYS_Init_st_t *pstHYSInit);
/*输入对应索引的物理量参数*/
HYS_Operate_Type_en_t HYS_Physical_Quantity_Input(HYS_Num_en_t enHYSIndex, Hys_uint16_t u16HYSPhysValue);
/*获取分段结果,返回0xFF表示无效*/
Hys_uint8_t HYS_Get_Seg(HYS_Num_en_t enHYSIndex);
/*复位某个物理量,重新判断计算*/
HYS_Operate_Type_en_t HYS_Reset_Physical_Quantity(HYS_Num_en_t enHYSIndex);
/*读取版本号*/
Hys_uint8_t HYS_Version_Read(void);
#endif
\ No newline at end of file
...@@ -254,12 +254,12 @@ void AMT630H_RstCtrl(void) ...@@ -254,12 +254,12 @@ void AMT630H_RstCtrl(void)
RTE_GPIO_Set_Level(VCC1V2_AMT_EN, 1); RTE_GPIO_Set_Level(VCC1V2_AMT_EN, 1);
Delay_Time_Ctrl(15); Delay_Time_Ctrl(15);
RTE_GPIO_Set_Level(VCC_33_EN_MCU, 1); RTE_GPIO_Set_Level(VCC_33_EN_MCU, 1);
Delay_Time_Ctrl(30); Delay_Time_Ctrl(45);
RTE_GPIO_Set_Level(x1530_EN_MCU, 1);//1530
Delay_Time_Ctrl(10);
RTE_GPIO_Set_Level(MCU_RSTB_LCD, 1); RTE_GPIO_Set_Level(MCU_RSTB_LCD, 1);
Delay_Time_Ctrl(15); Delay_Time_Ctrl(15);
RTE_GPIO_Set_Level(STBYB_LCD_MCU, 1); RTE_GPIO_Set_Level(STBYB_LCD_MCU, 1);
Delay_Time_Ctrl(10);
RTE_GPIO_Set_Level(x1530_EN_MCU, 1);//1530
} }
void Amt630hInit(void) void Amt630hInit(void)
......
...@@ -19,6 +19,8 @@ uint16_t g_u16espeednumberdown = 300; ...@@ -19,6 +19,8 @@ uint16_t g_u16espeednumberdown = 300;
uint16_t g_u16voltagenumberup = 0; uint16_t g_u16voltagenumberup = 0;
uint16_t g_u16voltagenumberdown = 160; uint16_t g_u16voltagenumberdown = 160;
uint8_t Voltage_Selfcheck = 1; uint8_t Voltage_Selfcheck = 1;
uint8_t TFT_SelfCheck = 0;
uint8_t CoolantOpenShortCirTimeCnt = 0;
//自检函数 //自检函数
void AMT630H_GUI_BACKGRAND_SelfCheck(void); void AMT630H_GUI_BACKGRAND_SelfCheck(void);
...@@ -47,6 +49,8 @@ void AMT630H_GUI_Language_Setting(Menu_Interface_en_t select); ...@@ -47,6 +49,8 @@ void AMT630H_GUI_Language_Setting(Menu_Interface_en_t select);
void AMT630H_GUI_Phone_Connect_Win(void); /*手机互联*/ void AMT630H_GUI_Phone_Connect_Win(void); /*手机互联*/
void AMT630H_GUI_ReadPosittion_Display(void); void AMT630H_GUI_ReadPosittion_Display(void);
/*投屏界面*/ /*投屏界面*/
void AMT630H_GUI_Display_Navigation_Area(void);
void AMT630H_GUI_PhoneConnect_Second_LowHalf(void);
static void AMT630H_GUI_PhoneConnect_Light(); static void AMT630H_GUI_PhoneConnect_Light();
static void AMT630H_GUI_PhoneConnect_TIME(uint16_t Hour ,uint16_t Minute); static void AMT630H_GUI_PhoneConnect_TIME(uint16_t Hour ,uint16_t Minute);
static void AMT630H_GUI_PhoneConnect_VSpeed(uint16_t VechileSpeed); static void AMT630H_GUI_PhoneConnect_VSpeed(uint16_t VechileSpeed);
...@@ -54,7 +58,8 @@ static void AMT630H_GUI_PhoneConnect_ESpeed(uint16_t ESpeed); ...@@ -54,7 +58,8 @@ static void AMT630H_GUI_PhoneConnect_ESpeed(uint16_t ESpeed);
static void AMT630H_GUI_PhoneConnect_Fuel(uint8_t Fuel); static void AMT630H_GUI_PhoneConnect_Fuel(uint8_t Fuel);
static void AMT630H_GUI_PhoneConnect_Telephone(); static void AMT630H_GUI_PhoneConnect_Telephone();
static void AMT630H_GUI_PhoneConnect_Voltage(uint16_t Voltage); static void AMT630H_GUI_PhoneConnect_Voltage(uint16_t Voltage);
/*OTA界面*/
void AMT630H_GUI_Display_OTA_Page_Information(void);
void AMT630H_GUI_Background() void AMT630H_GUI_Background()
{ {
...@@ -62,7 +67,44 @@ void AMT630H_GUI_Background() ...@@ -62,7 +67,44 @@ void AMT630H_GUI_Background()
{ {
if(g_u8SelfCheck == 1) if(g_u8SelfCheck == 1)
{ {
AMT630H_GUI_ReadPosittion_Display(); if(ClearODO_Flag == 1)
{
TFT_SelfCheck++;
if(TFT_SelfCheck < 60)
{
AMT630H_GUI_ReadPosittion_Display();
}
else if (TFT_SelfCheck < 80)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0382_0_0);
}
else if(TFT_SelfCheck < 100)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0001_0_0);
}
else if(TFT_SelfCheck < 120)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0755_0_0);
}
else if(TFT_SelfCheck < 140)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0945_0_0);
}
else if(TFT_SelfCheck < 160)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0757_0_0);
}
else
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0757_0_0);
TFT_SelfCheck = 60;
}
}
else
{
AMT630H_GUI_ReadPosittion_Display();
}
} }
else else
{ {
...@@ -2898,14 +2940,14 @@ static void AMT630H_GUI_PhoneConnect_Light() ...@@ -2898,14 +2940,14 @@ static void AMT630H_GUI_PhoneConnect_Light()
{ {
SetPagePic(GRAPHICS_PAGE_0, Pic_0468_819_486); SetPagePic(GRAPHICS_PAGE_0, Pic_0468_819_486);
} }
if(Get_TelltalesLedSts(em_LED_Coolant_Temperature)) // if(Get_TelltalesLedSts(em_LED_Coolant_Temperature))
{ // {
SetPagePic(GRAPHICS_PAGE_0, Pic_0436_981_528); // SetPagePic(GRAPHICS_PAGE_0, Pic_0436_981_528);
} // }
else // else
{ // {
SetPagePic(GRAPHICS_PAGE_0, Pic_0435_981_528); // SetPagePic(GRAPHICS_PAGE_0, Pic_0435_981_528);
} // }
} }
/* /*
*NAME : AMT630H_GUI_TIME() *NAME : AMT630H_GUI_TIME()
...@@ -3507,6 +3549,103 @@ static void AMT630H_GUI_PhoneConnect_Fuel(uint8_t Fuel) ...@@ -3507,6 +3549,103 @@ static void AMT630H_GUI_PhoneConnect_Fuel(uint8_t Fuel)
} }
} }
/*
*NAME : AMT630H_GUI_PhoneConnect_Fuel
*FUNCTION : 投屏界面水温显示
*PARAMETER : uint8_t Coolant-水温等级 0 - 红区一格 1 - 正常一格
*RETURN : NULL
*/
void AMT630H_GUI_PhoneConnect_Coolant(uint8_t Coolant)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0947_709_533);
SetPagePic(GRAPHICS_PAGE_0, Pic_0948_967_533);
SetPagePic(GRAPHICS_PAGE_0, Pic_0413_727_533);
if(GET_DataCollantTempSegStatus() == 1)//正常模式下
{
if((Coolant > 0)&&(Coolant <= 8))
{
for(uint8_t i=0;i<Coolant;i++)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0427_729_536+i);
}
}
if(Coolant < 8)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0435_981_528);//水温灯(黑)
}
else
{
if(FLASH_SYNC_1Hz)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0436_981_528);/*水温灯(红)报警闪烁1HZ*/
}
else
{
;
}
}
}
else if(GET_DataCollantTempSegStatus() == 2)//短路
{
if((Coolant > 0)&&(Coolant <= 8))
{
for(uint8_t i=0;i<Coolant;i++)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0427_729_536+i);
}
}
if(Coolant == 8)
{
CoolantOpenShortCirTimeCnt++;
if(CoolantOpenShortCirTimeCnt <= 15)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0436_981_528);/*水温灯(红)报警闪烁0.75ms*/
}
else if(CoolantOpenShortCirTimeCnt <= 20)
{
;
}
else
{
CoolantOpenShortCirTimeCnt = 0;
}
}
else
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0435_981_528);//水温灯(黑)
CoolantOpenShortCirTimeCnt = 0;
}
}
else if(GET_DataCollantTempSegStatus() == 3)//开路
{
if((Coolant > 0)&&(Coolant <= 8))
{
for(uint8_t i=0;i<Coolant;i++)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0427_729_536+i);
}
}
if(Coolant == 0)
{
if((FLASH_SYNC_1Hz))
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0436_981_528);/*水温灯(红)报警闪烁1HZ*/
}
else
{
;
}
}
else
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0435_981_528);//水温灯(黑)
}
}
}
/*电压显示函数*/ /*电压显示函数*/
static void AMT630H_GUI_Voltage(uint16_t Voltage) static void AMT630H_GUI_Voltage(uint16_t Voltage)
{ {
...@@ -3723,7 +3862,7 @@ static void AMT630H_GUI_ODO(uint32_t ODO, uint8_t Uint) ...@@ -3723,7 +3862,7 @@ static void AMT630H_GUI_ODO(uint32_t ODO, uint8_t Uint)
SetPagePic(GRAPHICS_PAGE_0, Pic_0578_55_296);/*ODO图标不动*/ SetPagePic(GRAPHICS_PAGE_0, Pic_0578_55_296);/*ODO图标不动*/
DISPLAY_NUM_ST DisplayNumPara; DISPLAY_NUM_ST DisplayNumPara;
uint16_t ODONumber; uint32_t ODONumber;
ODONumber = ODO; ODONumber = ODO;
DisplayNumPara.NumList = NumbeList_ODO_DAY; DisplayNumPara.NumList = NumbeList_ODO_DAY;
DisplayNumPara.NumInterval = GROUP_PIC_DIR_LEFT | 24; DisplayNumPara.NumInterval = GROUP_PIC_DIR_LEFT | 24;
...@@ -4669,6 +4808,101 @@ void AMT630H_GUI_SETTING() ...@@ -4669,6 +4808,101 @@ void AMT630H_GUI_SETTING()
} }
} }
} }
/*进入OTA界面执行刷图和发送图片id*/
void AMT630H_GUI_Display_OTA_Page_Information(void)
{
PicObj.qr_logo_id = 0;
PicObj.main_pic_id = Pic_0382;
PicObj.qr_pic_id = Pic_0316;
PicObj.update_pic_id = Pic_0233;
PicObj.second_menu = 0;
PicObj.navigation_task_id = 0;
SetPagePic(GRAPHICS_PAGE_0, Pic_0001_0_0);/*图层*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0932_124_85);/*\豪进750TFT(371000 - 7500 - 02TY0000)OTA升级*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0933_101_210);/*\SSID: TYW_DASHBOARD*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0934_102_260);/*\PASS: 88888888*/
//SetPagePic(GRAPHICS_PAGE_0, Pic_0935_36_367);/*\热点已连接到TYW_DASHBOARD*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0936_92_367);/*\请根据提示设置手机热点*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0937_564_521);/*\*请保持移动设备与仪表距离在半米内*/
PackedTransfer_DisplayPhoneMirrorQRcode(0, PicObj);
}
/*投屏区域*/
void AMT630H_GUI_Display_Navigation_Area(void)
{
PicObj.qr_logo_id = 0;//Pic_0234 小数字9 EA
PicObj.main_pic_id = Pic_0382; //大白背景图 17E
PicObj.qr_pic_id = Pic_0479;//小数字0 1DF
PicObj.update_pic_id = Pic_0233;//小数字8 E9
PicObj.second_menu = 0;
PicObj.navigation_task_id = Pic_0411;//红色小e 19B
if (GetPhoneMirrorst() == 0)
{ SetPagePic(GRAPHICS_PAGE_0, Pic_0001_0_0);
SetPagePic(GRAPHICS_PAGE_0, Pic_0476_0_0); /*上半屏*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0941_0_470); /*下半屏*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0478_188_310); /*版本*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0491_188_343); /*状态*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0494_410_144);
SetPagePic(GRAPHICS_PAGE_0, Pic_0495_655_197);
SetPagePic(GRAPHICS_PAGE_0, Pic_0496_410_197);
SetPagePic(GRAPHICS_PAGE_0, Pic_0498_411_252); /*UUID*/
// /*是否激活接口待补充*/
// /*!!!!!!!!!!!!别删!!!!!!!!!!!!*/
// if(/*已激活*/)
// {
// SetPagePic(GRAPHICS_PAGE_0, Pic_0492_243_344);
// }
// else
// {
// SetPagePic(GRAPHICS_PAGE_0, Pic_0493_242_344);
// }
// /*!!!!!!!!!!!!别删!!!!!!!!!!!!*/
PackedTransfer_DisplayPhoneMirrorQRcode(1, PicObj);
}
else
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0941_0_470); /*下半屏*/
PackedTransfer_DisplayPhoneMirrorQRcode(0, PicObj);
AMT630H_GUI_PhoneConnect_UPtele();
}
}
void AMT630H_GUI_PhoneConnect_Second_LowHalf(void)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0479_242_313);
// SetPagePic(GRAPHICS_PAGE_0, Pic_0382_0_0);/*背景图*/
AMT630H_GUI_PhoneConnect_Light();
AMT630H_GUI_PhoneConnect_TIME(Get_Dis_Hour_Time(), Get_Dis_Minute_Time());
if(VechileSpeed_time < 4)
{
// VechileSpeed_time++;
}
else
{
VechileSpeed_time = 0;
VechileSpeed = Get_DispVechileSpeed() / 10;
}
AMT630H_GUI_PhoneConnect_VSpeed(VechileSpeed);
AMT630H_GUI_PhoneConnect_ESpeed(Get_DispEngineSpeed());
AMT630H_GUI_PhoneConnect_Fuel(Get_CurFuelSetp());
AMT630H_GUI_PhoneConnect_Coolant(GET_DataCoolantTempSegDisp());
AMT630H_GUI_PhoneConnect_Telephone();
if(KL30_VOLTAGE_time < 10)
{
KL30_VOLTAGE_time++;
}
else
{
KL30_VOLTAGE_time = 0;
KL30_VOLTAGE_Value = (ADC_Read_Signal(ADC_CH_KL30_VOLTAGE)) / 10;
}
AMT630H_GUI_PhoneConnect_Voltage(KL30_VOLTAGE_Value);
}
void AMT630H_GUI_DisplayProc(void) void AMT630H_GUI_DisplayProc(void)
{ {
...@@ -4819,20 +5053,7 @@ void AMT630H_GUI_ReadPosittion_Display(void) ...@@ -4819,20 +5053,7 @@ void AMT630H_GUI_ReadPosittion_Display(void)
} }
else else
{ {
PicObj.qr_logo_id = 0; AMT630H_GUI_Display_OTA_Page_Information();
PicObj.main_pic_id = Pic_0382;
PicObj.qr_pic_id = Pic_0316;
PicObj.update_pic_id = Pic_0233;
PicObj.second_menu = 0;
PicObj.navigation_task_id = 0;
SetPagePic(GRAPHICS_PAGE_0, Pic_0001_0_0);/*图层*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0932_124_85);/*\豪进750TFT(371000 - 7500 - 02TY0000)OTA升级*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0933_101_210);/*\SSID: TYW_DASHBOARD*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0934_102_260);/*\PASS: 88888888*/
//SetPagePic(GRAPHICS_PAGE_0, Pic_0935_36_367);/*\热点已连接到TYW_DASHBOARD*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0936_92_367);/*\请根据提示设置手机热点*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0937_564_521);/*\*请保持移动设备与仪表距离在半米内*/
PackedTransfer_DisplayPhoneMirrorQRcode(0, PicObj);
} }
break; break;
case MENU_ITEM_PHONE_CONNECT: /*28 手机互联*/ case MENU_ITEM_PHONE_CONNECT: /*28 手机互联*/
...@@ -4848,75 +5069,8 @@ void AMT630H_GUI_ReadPosittion_Display(void) ...@@ -4848,75 +5069,8 @@ void AMT630H_GUI_ReadPosittion_Display(void)
AMT630H_GUI_Phone_Connect_Win(); AMT630H_GUI_Phone_Connect_Win();
break; break;
case MENU_ITEM_PHONE_CONNECT_APP: case MENU_ITEM_PHONE_CONNECT_APP:
PicObj.qr_logo_id = 0;//Pic_0234 小数字9 EA AMT630H_GUI_Display_Navigation_Area();
PicObj.main_pic_id = Pic_0382; //大白背景图 17E AMT630H_GUI_PhoneConnect_Second_LowHalf();
PicObj.qr_pic_id = Pic_0479;//小数字0 1DF
PicObj.update_pic_id = Pic_0233;//小数字8 E9
PicObj.second_menu = 0;
PicObj.navigation_task_id = Pic_0411;//红色小e 19B
if (GetPhoneMirrorst() == 0)
{ SetPagePic(GRAPHICS_PAGE_0, Pic_0001_0_0);
SetPagePic(GRAPHICS_PAGE_0, Pic_0476_0_0); /*上半屏*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0941_0_470); /*下半屏*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0478_188_310); /*版本*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0491_188_343); /*状态*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0494_410_144);
SetPagePic(GRAPHICS_PAGE_0, Pic_0495_655_197);
SetPagePic(GRAPHICS_PAGE_0, Pic_0496_410_197);
SetPagePic(GRAPHICS_PAGE_0, Pic_0498_411_252); /*UUID*/
// /*是否激活接口待补充*/
// /*!!!!!!!!!!!!别删!!!!!!!!!!!!*/
// if(/*已激活*/)
// {
// SetPagePic(GRAPHICS_PAGE_0, Pic_0492_243_344);
// }
// else
// {
// SetPagePic(GRAPHICS_PAGE_0, Pic_0493_242_344);
// }
// /*!!!!!!!!!!!!别删!!!!!!!!!!!!*/
PackedTransfer_DisplayPhoneMirrorQRcode(1, PicObj);
}
else
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0941_0_470); /*下半屏*/
PackedTransfer_DisplayPhoneMirrorQRcode(0, PicObj);
AMT630H_GUI_PhoneConnect_UPtele();
}
SetPagePic(GRAPHICS_PAGE_0, Pic_0479_242_313);
// SetPagePic(GRAPHICS_PAGE_0, Pic_0382_0_0);/*背景图*/
AMT630H_GUI_PhoneConnect_Light();
AMT630H_GUI_PhoneConnect_TIME(Get_Dis_Hour_Time(), Get_Dis_Minute_Time());
if(VechileSpeed_time < 4)
{
// VechileSpeed_time++;
}
else
{
VechileSpeed_time = 0;
VechileSpeed = Get_DispVechileSpeed() / 10;
}
AMT630H_GUI_PhoneConnect_VSpeed(VechileSpeed);
AMT630H_GUI_PhoneConnect_ESpeed(Get_DispEngineSpeed());
AMT630H_GUI_PhoneConnect_Fuel(Get_CurFuelSetp());
AMT630H_GUI_PhoneConnect_Telephone();
if(KL30_VOLTAGE_time < 10)
{
KL30_VOLTAGE_time++;
}
else
{
KL30_VOLTAGE_time = 0;
KL30_VOLTAGE_Value = (ADC_Read_Signal(ADC_CH_KL30_VOLTAGE)) / 10;
}
AMT630H_GUI_PhoneConnect_Voltage(KL30_VOLTAGE_Value);
break; break;
default: default:
break; break;
......
...@@ -119,7 +119,7 @@ static const uint16_t PicIndexData[] = { ...@@ -119,7 +119,7 @@ static const uint16_t PicIndexData[] = {
Pic_0898, 14, 637, 293, Pic_0897, 15, 637, 292, Pic_0919, 11, 640, 293, Pic_0920, 12, 639, 293, Pic_0921, 14, 638, 293, Pic_0922, 14, 638, 292, Pic_0923, 14, 638, 293, Pic_0924, 15, 637, 293, Pic_0925, 221, 501, 160, Pic_0926, 50, 619, 240, Pic_0898, 14, 637, 293, Pic_0897, 15, 637, 292, Pic_0919, 11, 640, 293, Pic_0920, 12, 639, 293, Pic_0921, 14, 638, 293, Pic_0922, 14, 638, 292, Pic_0923, 14, 638, 293, Pic_0924, 15, 637, 293, Pic_0925, 221, 501, 160, Pic_0926, 50, 619, 240,
Pic_0926, 50, 619, 175, Pic_0927, 50, 619, 240, Pic_0927, 50, 619, 175, Pic_0928, 75, 894, 310, Pic_0929, 75, 894, 310, Pic_0930, 64, 612, 240, Pic_0930, 64, 612, 175, Pic_0931, 64, 612, 240, Pic_0931, 64, 612, 175, Pic_0932, 777, 124, 85, Pic_0926, 50, 619, 175, Pic_0927, 50, 619, 240, Pic_0927, 50, 619, 175, Pic_0928, 75, 894, 310, Pic_0929, 75, 894, 310, Pic_0930, 64, 612, 240, Pic_0930, 64, 612, 175, Pic_0931, 64, 612, 240, Pic_0931, 64, 612, 175, Pic_0932, 777, 124, 85,
Pic_0933, 317, 101, 210, Pic_0934, 209, 102, 260, Pic_0935, 461, 36, 367, Pic_0936, 350, 92, 367, Pic_0937, 323, 564, 521, Pic_0938, 41, 62, 399, Pic_0939, 41, 62, 401, Pic_0940, 155, 53, 498, Pic_0941, 1521, 0, 470, Pic_0942, 46, 634, 551, Pic_0933, 317, 101, 210, Pic_0934, 209, 102, 260, Pic_0935, 461, 36, 367, Pic_0936, 350, 92, 367, Pic_0937, 323, 564, 521, Pic_0938, 41, 62, 399, Pic_0939, 41, 62, 401, Pic_0940, 155, 53, 498, Pic_0941, 1521, 0, 470, Pic_0942, 46, 634, 551,
Pic_0943, 28, 751, 555, Pic_0943, 28, 751, 555, Pic_0944, 124, 53, 462, Pic_0945, 1024, 0, 0, Pic_0946, 52, 632, 551, Pic_0947, 12, 709, 533, Pic_0948, 12, 967, 533, Pic_0949, 133, 786, 561, Pic_0950, 228, 485, 251, Pic_0951, 78, 761, 50,
}; };
#define PicIndexData_LEN 14888 #define PicIndexData_LEN 14888
//uint32_t PicIndexDataLEN = 0; //uint32_t PicIndexDataLEN = 0;
......
#ifndef PICBIN_H #ifndef PICBIN_H
#define PICBIN_H #define PICBIN_H
/* Flash Bin Version:20240924 2024-09-24 11:37:38 Compression ratio:70.00% */ /* Flash Bin Version:20241010 2024-10-10 11:52:18 Compression ratio:70.00% */
#define Pic_0001 1 #define Pic_0001 1
#define Pic_0002 2 #define Pic_0002 2
#define Pic_0003 3 #define Pic_0003 3
...@@ -945,6 +945,14 @@ ...@@ -945,6 +945,14 @@
#define Pic_0941 941 #define Pic_0941 941
#define Pic_0942 942 #define Pic_0942 942
#define Pic_0943 943 #define Pic_0943 943
#define Pic_0944 944
#define Pic_0945 945
#define Pic_0946 946
#define Pic_0947 947
#define Pic_0948 948
#define Pic_0949 949
#define Pic_0950 950
#define Pic_0951 951
enum { enum {
Pic_0001_0_0 = 0, Pic_0001_0_0 = 0,
...@@ -2133,10 +2141,18 @@ enum { ...@@ -2133,10 +2141,18 @@ enum {
Pic_0941_0_470, Pic_0941_0_470,
Pic_0942_634_551, Pic_0942_634_551,
Pic_0943_751_555, Pic_0943_751_555,
Pic_0944_53_462,
Pic_0945_0_0,
Pic_0946_632_551,
Pic_0947_709_533,
Pic_0948_967_533,
Pic_0949_786_561,
Pic_0950_485_251,
Pic_0951_761_50,
}; };
#define PIC_INDEX_DATA_CRC 0x8509F1BE #define PIC_INDEX_DATA_CRC 0x982ED1B9
extern void User_PicIndexDataInit(void); extern void User_PicIndexDataInit(void);
#endif #endif
...@@ -458,7 +458,7 @@ typedef struct ...@@ -458,7 +458,7 @@ typedef struct
uint8_t BlueToothPhoneName[100]; uint8_t BlueToothPhoneName[100];
char PhoneNumber[20]; char PhoneNumber[20];
uint16_t PhoneBookTotalCount; uint16_t PhoneBookTotalCount;
char BlueToothName[20]; char BlueToothName[30];
}_BlueToothPhoneData; }_BlueToothPhoneData;
typedef struct typedef struct
...@@ -517,9 +517,9 @@ extern uint8_t GetPhoneMirrorst(void) ; ...@@ -517,9 +517,9 @@ extern uint8_t GetPhoneMirrorst(void) ;
extern void PackedTransfer_EasyNavigation(uint8_t data); extern void PackedTransfer_EasyNavigation(uint8_t data);
extern void GerProgramVer(uint8_t * bufdata); extern void GerProgramVer(uint8_t * bufdata);
extern uint8_t GetErrorInfo(); extern uint8_t GetErrorInfo(void);
extern uint8_t GetBACKUUIDSTATE(); extern uint8_t GetBACKUUIDSTATE(void);
extern uint8_t GetBlueToothPowerSTATE(); extern uint8_t GetBlueToothPowerSTATE(void);
extern void SetBluetoothTurnXX(uint8_t data); extern void SetBluetoothTurnXX(uint8_t data);
extern void SetScreenType(uint8_t ntype,_QRCODE_RECT rect_st); extern void SetScreenType(uint8_t ntype,_QRCODE_RECT rect_st);
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include "Data_VSpeed.h" #include "Data_VSpeed.h"
#include "Data_Coolant.h" #include "Data_Coolant.h"
#include "Data_Fuel.h" #include "Data_Fuel.h"
#include "Hysteresis.h"
#include "Mileage\Services_Mileage_User.h" #include "Mileage\Services_Mileage_User.h"
#include "BackLight.h" #include "BackLight.h"
#include "RTC\RTE_RTC.h" #include "RTC\RTE_RTC.h"
...@@ -37,6 +38,7 @@ ...@@ -37,6 +38,7 @@
#include "Telltales\Telltales_Lib.h" #include "Telltales\Telltales_Lib.h"
#include "Application\BlueTooth.h" #include "Application\BlueTooth.h"
#include "cgc.h" #include "cgc.h"
#include "UDS\UDS_ISO14229_Services.h"
#endif #endif
...@@ -352,7 +352,7 @@ void TYW_RESET_ODO(void) ...@@ -352,7 +352,7 @@ void TYW_RESET_ODO(void)
{ {
if(ClearODO_Flag < 1) if(ClearODO_Flag < 1)
{ {
if((Get_DispVechileSpeed() >= 1500)&&(Get_DispEngineSpeed() >= 12000)) if((Get_DispVechileSpeed() >= 1990)&&(Get_DispEngineSpeed() >= 12000))
{ {
ClearODO_Flag = 1; ClearODO_Flag = 1;
Data_Mileage_Clear(); Data_Mileage_Clear();
......
...@@ -7,12 +7,12 @@ const Line_In_Attribute_st g_stLineInAttribute[LINE_IN_MAX] = ...@@ -7,12 +7,12 @@ const Line_In_Attribute_st g_stLineInAttribute[LINE_IN_MAX] =
{ {
{LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Turn_Left, },/*P10*/ {LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Turn_Left, },/*P10*/
{LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Turn_Right, },/*P9*/ {LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Turn_Right, },/*P9*/
{LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 60U, 20U, Get_LINE_IN_High_Beam, },/*P18*/ {LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 40U, 20U, Get_LINE_IN_High_Beam, },/*P18*/
{LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 100U, 20U, Get_LINE_IN_Efi_Fault, },/*P15*/ {LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 125U, 20U, Get_LINE_IN_Efi_Fault, },/*P15*/
{LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_ABS, },/*P7*/ {LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 125U, 0U, Get_LINE_IN_ABS, },/*P7*/
{LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Auto_Start_Stop, },/*P12*/ {LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 125U, 20U, Get_LINE_IN_Auto_Start_Stop, },/*P12*/
{LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Oil_Pressure_Alert, },/*P21*/ {LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 2000U, 20U, Get_LINE_IN_Oil_Pressure_Alert, },/*P21*/
{LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Coolant_Temperature }, /*P11*/ {LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 125U, 20U, Get_LINE_IN_Coolant_Temperature }, /*P11*/
}; };
Linelib_uint8_t Get_LINE_IN_Turn_Left(void) Linelib_uint8_t Get_LINE_IN_Turn_Left(void)
{ {
......
...@@ -72,6 +72,7 @@ static void Power_KL30_Init(void) ...@@ -72,6 +72,7 @@ static void Power_KL30_Init(void)
RTE_DEEPSLEEP_GPIO_Interrupt_Enable(KL15_AD_IN, Trigger_Rising); RTE_DEEPSLEEP_GPIO_Interrupt_Enable(KL15_AD_IN, Trigger_Rising);
FaultCode_Init(); FaultCode_Init();
TEMP_KL30_Init();
} }
static void Power_Wakeup_Init(void) static void Power_Wakeup_Init(void)
...@@ -106,6 +107,7 @@ static void Power_Wakeup_Init(void) ...@@ -106,6 +107,7 @@ static void Power_Wakeup_Init(void)
Protocol_KL30_Wakeup_Init(); Protocol_KL30_Wakeup_Init();
RTE_DEEPSLEEP_GPIO_Interrupt_Enable(KL15_AD_IN, Trigger_Rising); RTE_DEEPSLEEP_GPIO_Interrupt_Enable(KL15_AD_IN, Trigger_Rising);
FaultCode_Init(); FaultCode_Init();
TEMP_KL30_Init();
} }
static void Power_LVP_Init(void) static void Power_LVP_Init(void)
...@@ -129,8 +131,10 @@ static void Power_IG_ON_Init(void) ...@@ -129,8 +131,10 @@ static void Power_IG_ON_Init(void)
Line_In_KL15_ON_Init(); Line_In_KL15_ON_Init();
Telltales_KL15_Init(); Telltales_KL15_Init();
Fuel_KL15_Init(); Fuel_KL15_Init();
TEMP_KL15_Init();
//RTE_GPIO_Set_Level(Blacklight_PWM, 1); //RTE_GPIO_Set_Level(Blacklight_PWM, 1);
FaultCode_Init(); FaultCode_Init();
mwAmt630hUartSendDatainit();
AMT630H_Animation_IGON(); AMT630H_Animation_IGON();
// Amt630hInit(); // Amt630hInit();
AMT630H_GUI_SELFCHECK_STS_INIT(); AMT630H_GUI_SELFCHECK_STS_INIT();
...@@ -184,7 +188,7 @@ static Power_Status_em Power_Stay_OFF(void) ...@@ -184,7 +188,7 @@ static Power_Status_em Power_Stay_OFF(void)
} }
else else
{ {
if ((Common_GetIgnOffTime() < 3000)) if ((Common_GetIgnOffTime() < 5000))
{ {
u8PowerSts = EM_IGN_OFF; u8PowerSts = EM_IGN_OFF;
} }
......
...@@ -34,7 +34,7 @@ static void can_recv_handler(void) ...@@ -34,7 +34,7 @@ static void can_recv_handler(void)
CAN_Receive_IT(CAN0, &CanBufList); CAN_Receive_IT(CAN0, &CanBufList);
Read_RingBuff(&CAN_RecvMsg); Read_RingBuff(&CAN_RecvMsg);
CAN_Receive(CAN0,&CAN_RecvMsg,100); // CAN_Receive(CAN0,&CAN_RecvMsg,100);
if (can_rx_handler != NULL) if (can_rx_handler != NULL)
{ {
can_rx_handler(&CAN_RecvMsg); can_rx_handler(&CAN_RecvMsg);
...@@ -107,7 +107,7 @@ uint8_t rte_can_init(can_config_st_t *config) ...@@ -107,7 +107,7 @@ uint8_t rte_can_init(can_config_st_t *config)
// ISR_Register(CAN0TRX_IRQn, can_tx_handler); // ISR_Register(CAN0TRX_IRQn, can_tx_handler);
ISR_Register(CAN0ERR_IRQn, can_error_handler); // ISR_Register(CAN0ERR_IRQn, can_error_handler);/*进入bussoff后,不使用驱动给的错误中断*/
// ISR_DisRegister(CAN0REC_IRQn, can_recv_handler); // ISR_DisRegister(CAN0REC_IRQn, can_recv_handler);
......
...@@ -321,6 +321,15 @@ void mwAmt630hUartSendIsr(void) ...@@ -321,6 +321,15 @@ void mwAmt630hUartSendIsr(void)
mwAmt630hSerialSendValid = 0; mwAmt630hSerialSendValid = 0;
} }
} }
void mwAmt630hUartSendDatainit(void)
{
memset(mwAmt630hSerialSendBuffer,00,sizeof(mwAmt630hSerialSendBuffer));
mwAmt630hSerialDataIndex = 0;
mwAmt630hSerialSendCnts = 0;
mwAmt630hSerialSendFillCnts = 0;
mwAmt630hSerialSendValid = 0;
}
/* /*
Data:要发送数据的指针, Data:要发送数据的指针,
请确认是全局变量的指针,且指向的数据在发送完成之前不会被改变。 请确认是全局变量的指针,且指向的数据在发送完成之前不会被改变。
......
...@@ -59,5 +59,6 @@ extern uint32_t RTE_UART_Init(UART_Channel_en_t enUARTCh, UART_Channel_Config_st ...@@ -59,5 +59,6 @@ extern uint32_t RTE_UART_Init(UART_Channel_en_t enUARTCh, UART_Channel_Config_st
extern void RTE_UART_Sleep_Init(UART_Channel_en_t enUARTCh); extern void RTE_UART_Sleep_Init(UART_Channel_en_t enUARTCh);
extern void mwAmt630hUartSendData(uint8_t *data, uint32_t length); extern void mwAmt630hUartSendData(uint8_t *data, uint32_t length);
extern void mwAmt630hUartSendIsr(void); extern void mwAmt630hUartSendIsr(void);
extern void mwAmt630hUartSendDatainit(void);
#endif #endif
...@@ -20,7 +20,7 @@ void Sys_2ms_Tasks(void) ...@@ -20,7 +20,7 @@ void Sys_2ms_Tasks(void)
Sys_Status_Update_Service(); Sys_Status_Update_Service();
Analog_Signal_Conv_Service(); Analog_Signal_Conv_Service();
AMT630H_Main(); AMT630H_Main();
Check_MCU_Info_in_630H(); // Check_MCU_Info_in_630H();
DoCAN_Timer_Update(2000u); DoCAN_Timer_Update(2000u);
//Can_Write_Fun(&CAN_CH0_CanMsgTxOp, 2000u);无外发 //Can_Write_Fun(&CAN_CH0_CanMsgTxOp, 2000u);无外发
CanMSg_XMS_Analysis(&CAN_CH0_CanMsgOp, 2u); CanMSg_XMS_Analysis(&CAN_CH0_CanMsgOp, 2u);
...@@ -33,6 +33,7 @@ void Sys_5ms_Tasks(void) ...@@ -33,6 +33,7 @@ void Sys_5ms_Tasks(void)
void Sys_10ms_Tasks(void) void Sys_10ms_Tasks(void)
{ {
Can_BusOff_Recover(10);
FaultCode_Service(10u); FaultCode_Service(10u);
Line_In_Debounce_Service(10u); Line_In_Debounce_Service(10u);
My_Key_Service(); My_Key_Service();
...@@ -40,7 +41,6 @@ void Sys_10ms_Tasks(void) ...@@ -40,7 +41,6 @@ void Sys_10ms_Tasks(void)
Key_Clear_Time(); Key_Clear_Time();
Key_TimeOut_Service(); Key_TimeOut_Service();
Fuel_R_Cal(10u); Fuel_R_Cal(10u);
Coolant_R_Cal(10u);
Data_Light_Res_service(10); Data_Light_Res_service(10);
BackLight_Process(); BackLight_Process();
} }
...@@ -49,6 +49,7 @@ void Sys_20ms_Tasks(void) ...@@ -49,6 +49,7 @@ void Sys_20ms_Tasks(void)
{ {
Data_Vehicle_Speed_Processing_Service(); Data_Vehicle_Speed_Processing_Service();
Data_Engine_Speed_Processing_Service(); Data_Engine_Speed_Processing_Service();
Data_Coolant_Temp_Processing_Service();
} }
void Sys_50ms_Tasks(void) void Sys_50ms_Tasks(void)
...@@ -82,7 +83,6 @@ void Sys_100ms_Tasks(void) ...@@ -82,7 +83,6 @@ void Sys_100ms_Tasks(void)
S3_ServerCNTT(); S3_ServerCNTT();
Get_DisTime_Service(); Get_DisTime_Service();
Fuel_Cal_Sevice(100u); Fuel_Cal_Sevice(100u);
Coolant_Cal_Sevice(100u);
Services_Mileage_Callback(); Services_Mileage_Callback();
// Data_Mileage_Clear(); // Data_Mileage_Clear();
RTE_GPIO_Config(RTE_GPIO_PORT05_PIN04, GpioOut_High); RTE_GPIO_Config(RTE_GPIO_PORT05_PIN04, GpioOut_High);
......
...@@ -348,6 +348,7 @@ typedef struct ...@@ -348,6 +348,7 @@ typedef struct
// uint8_t fill_data[17]; /* 用于保证该结构体长度是4的倍数 */ // uint8_t fill_data[17]; /* 用于保证该结构体长度是4的倍数 */
} Diag_Write_Data_t; } Diag_Write_Data_t;
extern Diag_Write_Data_t Diag_Write_Data;
extern void UDS_Service_10_Indication(uint16_t A_TA_type, uint16_t A_Length, uint8_t *A_Data); extern void UDS_Service_10_Indication(uint16_t A_TA_type, uint16_t A_Length, uint8_t *A_Data);
extern void UDS_Service_11_Indication(uint16_t A_TA_type, uint16_t A_Length, uint8_t *A_Data); extern void UDS_Service_11_Indication(uint16_t A_TA_type, uint16_t A_Length, uint8_t *A_Data);
......
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment