Commit f7f09de2 authored by 高士达's avatar 高士达

Merge branch 'liang_buf' into '依维柯216变更后'

Liang buf

See merge request !41
parents b7155f76 57722702
...@@ -12,7 +12,7 @@ typedef unsigned int CAN_1939_uint32_t; ...@@ -12,7 +12,7 @@ typedef unsigned int CAN_1939_uint32_t;
typedef unsigned long long CAN_1939_uint64_t; typedef unsigned long long CAN_1939_uint64_t;
#endif #endif
/*每个多包信息最长的数据长度*/ /*每个多包信息最长的数据长度*/
#define CAN1939_MESSAGE_LEN 42UL /*需要根据实际项目需求进行相关调整*/ #define CAN1939_MESSAGE_LEN 210UL /*需要根据实际项目需求进行相关调整*/
typedef union { typedef union {
CAN_1939_uint8_t data[4]; CAN_1939_uint8_t data[4];
struct struct
...@@ -26,8 +26,8 @@ typedef union { ...@@ -26,8 +26,8 @@ typedef union {
} BIT; } BIT;
} DTC_1939; } DTC_1939;
typedef union { typedef union {
DTC_1939 DtcDefine[10]; /*需要根据实际项目需求进行相关调整*/ DTC_1939 DtcDefine[52]; /*需要根据实际项目需求进行相关调整*/
CAN_1939_uint8_t Data[40]; /*需要根据实际项目需求进行相关调整*/ CAN_1939_uint8_t Data[52 * 4]; /*需要根据实际项目需求进行相关调整*/
} DtcData_un_t; } DtcData_un_t;
typedef struct typedef struct
{ {
......
...@@ -2,8 +2,11 @@ ...@@ -2,8 +2,11 @@
#include "CAN_1939.h" #include "CAN_1939.h"
#include "CAN_1939_user.h" #include "CAN_1939_user.h"
CAN_1939_uint16_t g_u1618ECFF03TimeoutCount = 0U;
CAN_1939_uint16_t g_u1618ECFF00TimeoutCount = 0U;
const CAN1939_Attribute_st_t stCAN1939Attribute [ CAN1939_SA_MAX ] = { const CAN1939_Attribute_st_t stCAN1939Attribute [ CAN1939_SA_MAX ] = {
{0x18ECFF03, 0x18EBFF03, 5000}, {0x1CECFF03, 0x1CEBFF03, 5000},
{0x18ECFF00, 0x18EBFF00, 5000}, {0x18ECFF00, 0x18EBFF00, 5000},
}; };
CAN_1939_uint8_t u8CAN1939RamData [ CAN1939_RAM_DATA_LEN ]; CAN_1939_uint8_t u8CAN1939RamData [ CAN1939_RAM_DATA_LEN ];
...@@ -53,6 +56,8 @@ void CAN_1939_Process(void) ...@@ -53,6 +56,8 @@ void CAN_1939_Process(void)
if ( CAN_J1939_Get_Timeout_Flag(CAN1939_SA_03) ) if ( CAN_J1939_Get_Timeout_Flag(CAN1939_SA_03) )
{ {
if ( CAN_J1939_Get_Update_Flag(CAN1939_SA_03) == 2UL ) if ( CAN_J1939_Get_Update_Flag(CAN1939_SA_03) == 2UL )
{
if(0xFECA == CAN_J1939_Get_Message_PGN(CAN1939_SA_03))
{ {
CAN_1939_uint8_t u8DataLenBuf = CAN_J1939_Get_Message_Len(CAN1939_SA_03); CAN_1939_uint8_t u8DataLenBuf = CAN_J1939_Get_Message_Len(CAN1939_SA_03);
CAN_1939_uint8_t *pu8CAN1939DataBuf = CAN_J1939_Get_Message_Content(CAN1939_SA_03); CAN_1939_uint8_t *pu8CAN1939DataBuf = CAN_J1939_Get_Message_Content(CAN1939_SA_03);
...@@ -76,6 +81,12 @@ void CAN_1939_Process(void) ...@@ -76,6 +81,12 @@ void CAN_1939_Process(void)
{ {
u8DataLenBuf = 0; u8DataLenBuf = 0;
} }
g_u1618ECFF03TimeoutCount = 0;
}
else
{
CAN_J1939_18ECFF03_Timeout();
}
CAN_J1939_Clear_Update_Flag(CAN1939_SA_03); CAN_J1939_Clear_Update_Flag(CAN1939_SA_03);
} }
...@@ -96,6 +107,8 @@ void CAN_1939_Process(void) ...@@ -96,6 +107,8 @@ void CAN_1939_Process(void)
if ( CAN_J1939_Get_Timeout_Flag(CAN1939_SA_00) ) if ( CAN_J1939_Get_Timeout_Flag(CAN1939_SA_00) )
{ {
if ( CAN_J1939_Get_Update_Flag(CAN1939_SA_00) == 2UL ) if ( CAN_J1939_Get_Update_Flag(CAN1939_SA_00) == 2UL )
{
if(0xFECA == CAN_J1939_Get_Message_PGN(CAN1939_SA_00))
{ {
CAN_1939_uint8_t u8DataLenBuf = CAN_J1939_Get_Message_Len(CAN1939_SA_00); CAN_1939_uint8_t u8DataLenBuf = CAN_J1939_Get_Message_Len(CAN1939_SA_00);
CAN_1939_uint8_t *pu8CAN1939DataBuf = CAN_J1939_Get_Message_Content(CAN1939_SA_00); CAN_1939_uint8_t *pu8CAN1939DataBuf = CAN_J1939_Get_Message_Content(CAN1939_SA_00);
...@@ -112,6 +125,12 @@ void CAN_1939_Process(void) ...@@ -112,6 +125,12 @@ void CAN_1939_Process(void)
u8DataLenBuf = 0; u8DataLenBuf = 0;
} }
g_u1618ECFF00TimeoutCount = 0;
}
else
{
CAN_J1939_18ECFF00_Timeout();
}
CAN_J1939_Clear_Update_Flag(CAN1939_SA_00); CAN_J1939_Clear_Update_Flag(CAN1939_SA_00);
} }
} }
...@@ -124,12 +143,12 @@ void CAN_1939_Process(void) ...@@ -124,12 +143,12 @@ void CAN_1939_Process(void)
void CAN_1939_0X18ECFF03_MSG_CKB_ON_RECEIVE(unsigned char CopyData []) void CAN_1939_0X18ECFF03_MSG_CKB_ON_RECEIVE(unsigned char CopyData [])
{ {
CAN_1939_Receive_Data(CAN1939_SA_03, 0x18ECFF03, CopyData); CAN_1939_Receive_Data(CAN1939_SA_03, 0x1CECFF03, CopyData);
CAN_J1939_Multipacket_Service(CAN1939_SA_03); CAN_J1939_Multipacket_Service(CAN1939_SA_03);
} }
void CAN_1939_0X18EBFF03_MSG_CKB_ON_RECEIVE(unsigned char CopyData []) void CAN_1939_0X18EBFF03_MSG_CKB_ON_RECEIVE(unsigned char CopyData [])
{ {
CAN_1939_Receive_Data(CAN1939_SA_03, 0x18EBFF03, CopyData); CAN_1939_Receive_Data(CAN1939_SA_03, 0x1CEBFF03, CopyData);
CAN_J1939_Multipacket_Service(CAN1939_SA_03); CAN_J1939_Multipacket_Service(CAN1939_SA_03);
} }
void CAN_1939_0X18FECA03_MSG_CKB_ON_RECEIVE(unsigned char CopyData []) void CAN_1939_0X18FECA03_MSG_CKB_ON_RECEIVE(unsigned char CopyData [])
...@@ -182,3 +201,53 @@ CAN_1939_uint8_t Get_CAN_CH0_ID_18EBFF00_Sig_AmberWarnLamp(void) ...@@ -182,3 +201,53 @@ CAN_1939_uint8_t Get_CAN_CH0_ID_18EBFF00_Sig_AmberWarnLamp(void)
{ {
return ((u8RecDataLamp00 [ 0 ] >> 2) & 0X03U); return ((u8RecDataLamp00 [ 0 ] >> 2) & 0X03U);
} }
void CAN_J1939_FECA_Timeout_Count(CAN_1939_uint8_t taskTime)
{
if (g_u1618ECFF03TimeoutCount <= (0xFFFF - taskTime))
{
g_u1618ECFF03TimeoutCount += taskTime;
}
if (g_u1618ECFF00TimeoutCount <= (0xFFFF - taskTime))
{
g_u1618ECFF00TimeoutCount += taskTime;
}
}
/*返回值:0--报文超时,1--报文在线*/
CAN_1939_uint8_t CAN_J1939_18ECFF03_Timeout(void)
{
CAN_1939_uint8_t u8Timeout = 1U;
if (g_u1618ECFF03TimeoutCount >= 5000U)
{
u8Timeout = 0U;
//添加掉线处理
u8RecDataLamp03[0] = 0UL;
u8RecDataLamp03[1] = 0UL;
u8DTC0XCEF0E0xx = 0UL;
u8DTC0XB9F0E0xx = 0UL;
u8DTC0XC1F0E0xx = 0UL;
u8DTC0X66F1E0xx = 0UL;
u8DTC0XB8F0E0xx = 0UL;
u8DTC0XCCF0E0xx = 0UL;
u8DTC0XCD160Bxx = 0UL;
}
return u8Timeout;
}
CAN_1939_uint8_t CAN_J1939_18ECFF00_Timeout(void)
{
CAN_1939_uint8_t u8Timeout = 1U;
if (g_u1618ECFF00TimeoutCount >= 5000U)
{
u8Timeout = 0U;
//添加掉线处理
u8RecDataLamp00[0] = 0UL;
u8RecDataLamp00[1] = 0UL;
}
return u8Timeout;
}
...@@ -28,5 +28,10 @@ extern CAN_1939_uint8_t Get_CAN_CH0_ID_18EBFF03_Sig_AT_RedStopLamp(void); ...@@ -28,5 +28,10 @@ extern CAN_1939_uint8_t Get_CAN_CH0_ID_18EBFF03_Sig_AT_RedStopLamp(void);
extern CAN_1939_uint8_t Get_CAN_CH0_ID_18EBFF00_Sig_RedStopLamp(void); extern CAN_1939_uint8_t Get_CAN_CH0_ID_18EBFF00_Sig_RedStopLamp(void);
extern CAN_1939_uint8_t Get_CAN_CH0_ID_18EBFF00_Sig_AmberWarnLamp(void); extern CAN_1939_uint8_t Get_CAN_CH0_ID_18EBFF00_Sig_AmberWarnLamp(void);
extern void CAN_J1939_FECA_Timeout_Count(CAN_1939_uint8_t taskTime);
extern CAN_1939_uint8_t CAN_J1939_18ECFF03_Timeout(void);
extern CAN_1939_uint8_t CAN_J1939_18ECFF00_Timeout(void);
#endif #endif
...@@ -249,7 +249,7 @@ const st_CANMsgAttribute CAN_CH0_CAN_MSG_CONST_ARRAY[CAN_CH0_ID_TOTAL_MAX] = ...@@ -249,7 +249,7 @@ const st_CANMsgAttribute CAN_CH0_CAN_MSG_CONST_ARRAY[CAN_CH0_ID_TOTAL_MAX] =
{0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u}, {0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u},
{0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u}, {0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u},
5000ul, 5000ul,
0x18ECFF03ul, 0x1CECFF03ul,
(( void * )0), (( void * )0),
(( void * )CAN_1939_0X18ECFF03_MSG_CKB_ON_RECEIVE), (( void * )CAN_1939_0X18ECFF03_MSG_CKB_ON_RECEIVE),
(( void * )0), (( void * )0),
...@@ -259,7 +259,7 @@ const st_CANMsgAttribute CAN_CH0_CAN_MSG_CONST_ARRAY[CAN_CH0_ID_TOTAL_MAX] = ...@@ -259,7 +259,7 @@ const st_CANMsgAttribute CAN_CH0_CAN_MSG_CONST_ARRAY[CAN_CH0_ID_TOTAL_MAX] =
{0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u}, {0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u},
{0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u}, {0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u},
5000ul, 5000ul,
0x18EBFF03ul, 0x1CEBFF03ul,
(( void * )0), (( void * )0),
(( void * )CAN_1939_0X18EBFF03_MSG_CKB_ON_RECEIVE), (( void * )CAN_1939_0X18EBFF03_MSG_CKB_ON_RECEIVE),
(( void * )0), (( void * )0),
...@@ -1174,12 +1174,12 @@ uint8_t Get_CAN_CH0_ID_18FF9DF1_Sig_Sec_TBOX(void) ...@@ -1174,12 +1174,12 @@ uint8_t Get_CAN_CH0_ID_18FF9DF1_Sig_Sec_TBOX(void)
uint8_t Get_CAN_CH0_ID_18ECFF03_Sig_test(void) uint8_t Get_CAN_CH0_ID_18ECFF03_Sig_test(void)
{ {
return (((uint8_t)((uint8_t)CAN_MSG_Read(CAN_CH0,CAN_CH0_ID_can18ECFF03_Msg_Count, 0u) >> 0u) & 0x01u)); return (((uint8_t)((uint8_t)CAN_MSG_Read(CAN_CH0,CAN_CH0_ID_can1CECFF03_Msg_Count, 0u) >> 0u) & 0x01u));
} }
uint8_t Get_CAN_CH0_ID_18EBFF03_Sig_test(void) uint8_t Get_CAN_CH0_ID_18EBFF03_Sig_test(void)
{ {
return (((uint8_t)((uint8_t)CAN_MSG_Read(CAN_CH0,CAN_CH0_ID_can18EBFF03_Msg_Count, 0u) >> 0u) & 0x01u)); return (((uint8_t)((uint8_t)CAN_MSG_Read(CAN_CH0,CAN_CH0_ID_can1CEBFF03_Msg_Count, 0u) >> 0u) & 0x01u));
} }
uint8_t Get_CAN_CH0_ID_18EBFF00_Sig_test(void) uint8_t Get_CAN_CH0_ID_18EBFF00_Sig_test(void)
...@@ -1293,11 +1293,11 @@ uint8_t Co_Can_ConvertSubID_CAN_CH0(uint32_t MsgID) ...@@ -1293,11 +1293,11 @@ uint8_t Co_Can_ConvertSubID_CAN_CH0(uint32_t MsgID)
//case CAN_CH0_ID_NM18FFA000_Msg: //case CAN_CH0_ID_NM18FFA000_Msg:
//u8Result = CAN_CH0_ID_NM18FFA000_Msg_Count; //u8Result = CAN_CH0_ID_NM18FFA000_Msg_Count;
break; break;
case CAN_CH0_ID_can18ECFF03_Msg: case CAN_CH0_ID_can1CECFF03_Msg:
u8Result = CAN_CH0_ID_can18ECFF03_Msg_Count; u8Result = CAN_CH0_ID_can1CECFF03_Msg_Count;
break; break;
case CAN_CH0_ID_can18EBFF03_Msg: case CAN_CH0_ID_can1CEBFF03_Msg:
u8Result = CAN_CH0_ID_can18EBFF03_Msg_Count; u8Result = CAN_CH0_ID_can1CEBFF03_Msg_Count;
break; break;
case CAN_CH0_ID_can18EBFF00_Msg: case CAN_CH0_ID_can18EBFF00_Msg:
u8Result = CAN_CH0_ID_can18EBFF00_Msg_Count; u8Result = CAN_CH0_ID_can18EBFF00_Msg_Count;
......
...@@ -36,8 +36,8 @@ typedef enum ...@@ -36,8 +36,8 @@ typedef enum
CAN_CH0_ID_can18F00503_Msg_Count, CAN_CH0_ID_can18F00503_Msg_Count,
CAN_CH0_ID_can18FF9DF1_Msg_Count, CAN_CH0_ID_can18FF9DF1_Msg_Count,
//CAN_CH0_ID_NM18FFA000_Msg_Count, //CAN_CH0_ID_NM18FFA000_Msg_Count,
CAN_CH0_ID_can18ECFF03_Msg_Count, CAN_CH0_ID_can1CECFF03_Msg_Count,
CAN_CH0_ID_can18EBFF03_Msg_Count, CAN_CH0_ID_can1CEBFF03_Msg_Count,
CAN_CH0_ID_can18EBFF00_Msg_Count, CAN_CH0_ID_can18EBFF00_Msg_Count,
CAN_CH0_ID_can18ECFF00_Msg_Count, CAN_CH0_ID_can18ECFF00_Msg_Count,
CAN_CH0_ID_can18FE5BE8_Msg_Count, CAN_CH0_ID_can18FE5BE8_Msg_Count,
...@@ -79,8 +79,8 @@ extern const st_CANMsgAttribute CAN_CH0_CAN_MSG_CONST_ARRAY[CAN_CH0_ID_TOTAL_MAX ...@@ -79,8 +79,8 @@ extern const st_CANMsgAttribute CAN_CH0_CAN_MSG_CONST_ARRAY[CAN_CH0_ID_TOTAL_MAX
#define CAN_CH0_ID_can18F00503_Msg 0x18F00503ul #define CAN_CH0_ID_can18F00503_Msg 0x18F00503ul
#define CAN_CH0_ID_can18FF9DF1_Msg 0x18FF9DF1ul #define CAN_CH0_ID_can18FF9DF1_Msg 0x18FF9DF1ul
//#define CAN_CH0_ID_NM18FFA000_Msg 0x18FFA000ul //#define CAN_CH0_ID_NM18FFA000_Msg 0x18FFA000ul
#define CAN_CH0_ID_can18ECFF03_Msg 0x18ECFF03ul #define CAN_CH0_ID_can1CECFF03_Msg 0x1CECFF03ul
#define CAN_CH0_ID_can18EBFF03_Msg 0x18EBFF03ul #define CAN_CH0_ID_can1CEBFF03_Msg 0x1CEBFF03ul
#define CAN_CH0_ID_can18EBFF00_Msg 0x18EBFF00ul #define CAN_CH0_ID_can18EBFF00_Msg 0x18EBFF00ul
#define CAN_CH0_ID_can18ECFF00_Msg 0x18ECFF00ul #define CAN_CH0_ID_can18ECFF00_Msg 0x18ECFF00ul
#define CAN_CH0_ID_can18FE5BE8_Msg 0x18FE5BE8ul #define CAN_CH0_ID_can18FE5BE8_Msg 0x18FE5BE8ul
......
...@@ -137,6 +137,7 @@ void Sys_Run_Mode_20ms_Tasks_Group0(void) ...@@ -137,6 +137,7 @@ void Sys_Run_Mode_20ms_Tasks_Group0(void)
Data_Vehicle_Speed_Processing_Service(); Data_Vehicle_Speed_Processing_Service();
CAN_J1939_Time_Handle(20U); CAN_J1939_Time_Handle(20U);
CAN_1939_Process(); CAN_1939_Process();
CAN_J1939_FECA_Timeout_Count(20u);
} }
......
...@@ -13,7 +13,7 @@ const uint8_t DID_22_F193[8] = {'V','1','.','1',0x20,0x20,0x20,0x20}; ...@@ -13,7 +13,7 @@ const uint8_t DID_22_F193[8] = {'V','1','.','1',0x20,0x20,0x20,0x20};
/*ECUHardwareVersionNumberDataIdentifier(软件号)*/ /*ECUHardwareVersionNumberDataIdentifier(软件号)*/
const uint8_t DID_22_F194[16] = {'5','8','0','3','3','1','0','8','1','7',0x20,0x20,0x20,0x20,0x20,0x20}; const uint8_t DID_22_F194[16] = {'5','8','0','3','3','1','0','8','1','7',0x20,0x20,0x20,0x20,0x20,0x20};
/*ECUSoftwareVersionNumberDataIdentifier(软件版本号)*/ /*ECUSoftwareVersionNumberDataIdentifier(软件版本号)*/
const uint8_t DID_22_F195[8] = {'V','1','.','6',0x20,0x20,0x20,0x20}; const uint8_t DID_22_F195[8] = {'V','1','.','7',0x20,0x20,0x20,0x20};
/*SystemNameDataIdentifier(ECU名称)*/ /*SystemNameDataIdentifier(ECU名称)*/
const uint8_t DID_22_F197[10] = {'I','C','-','N','S','2','0','8','-','2'}; const uint8_t DID_22_F197[10] = {'I','C','-','N','S','2','0','8','-','2'};
/*EOLProgrammingDate*/ /*EOLProgrammingDate*/
......
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