Commit bd7e2b42 authored by 李冠华's avatar 李冠华

feat:混动车型增加外发相关逻辑

parent 69bb0ea8
......@@ -493,9 +493,8 @@ uint8_t Co_Can_ConvertSubID_CAN_CH0(uint32_t MsgID)
uint8_t System_Indicator_CANFlag = 0;
const st_CAN_SendAttribute CAN_CH0_CANSendAttr[CAN_CH0_ID_SEND_TOTAL] =
{
{0x3A2ul, 200ul * 1000ul, 0ul, 0u, MSG_STD, 1u, 8u, CAN_MSG_TX_CYCLE, Can_Set_Buff_3A2, (void *)0},
{0x3A7ul, 200ul * 1000ul, 0ul, 0u, MSG_STD, 1u, 8u, CAN_MSG_TX_CYCLE, Can_Set_Buff_3A7, (void *)0},
{0x393ul, 2000ul * 1000ul, 0ul, 0u, MSG_STD, 1u, 8u, CAN_MSG_TX_CYCLE, Can_Set_Buff_393, (void *)0},
{0x3A2ul, 200ul * 1000ul, 199ul * 1000ul, 0u, MSG_STD, 1u, 8u, CAN_MSG_TX_CYCLE, Can_Set_Buff_3A2, (void *)0},
{0x3D4ul, 200ul * 1000ul, 197ul * 1000ul, 0u, MSG_STD, 1u, 8u, CAN_MSG_TX_CYCLE, Can_Set_Buff_3D4, (void *)0},
};
const st_CANMsgAttribute CAN_CH0_CAN_MSG_CONST_ARRAY[CAN_CH0_ID_TOTAL_MAX] =
......
......@@ -163,8 +163,7 @@ typedef enum
typedef enum
{
CAN_CH0_ID_SEND_3A2_TOTAL,
CAN_CH0_ID_SEND_3A7_TOTAL,
CAN_CH0_ID_SEND_393_TOTAL,
CAN_CH0_ID_SEND_3D4_TOTAL,
CAN_CH0_ID_SEND_TOTAL,
} CAN_CH0_CAN_MSG_SEND_ID_t;
......
......@@ -12,37 +12,57 @@ void Can_Set_Buff_3A2(canlib_uint8_t CopyData[])
p3A2 = (CANMsg3A2Union *)CopyData;
if (p3A2 != (void *)0)
{
p3A2->Sig.ICU_POWERStateFB = Get_CAN_Power_State();
p3A2->Sig.ICU_KL15State = (Get_CAN_Power_State() != KEY_OFF);
p3A2->Sig.ICU_LEDLightState = Get_LINE_IN_BigLED();
p3A2->Sig.ICU_BuzzerState = BUZZER_ON;//蜂鸣器
p3A2->Sig.Res0 = 0;
p3A2->Sig.ICU_IndicatorLightState = Get_Interact_Light_State();
p3A2->Sig.ICU_IndicatorLightPowerState = 1;
p3A2->Sig.ICU_GrassFullState = Get_LINE_IN_GrassFull();
p3A2->Sig.Res1 = 0x0;
p3A2->Sig.Res2 = 0x00;
p3A2->Sig.Res3 = 0x00;
p3A2->Sig.Res4 = 0x00;
p3A2->Sig.Res5 = 0x00;
p3A2->Sig.Res6 = 0x00;
p3A2->Sig.Res7 = 0x00;
// p3A2->Sig.ICU_MasterBMSCommunicatlost = 1;
// p3A2->Sig.ICU_SlaveBMSCommunicatlost = (CAN_MSG_Status(&CAN_CH0_CanMsgOp, Co_Can_ConvertSubID_CAN_CH0(CAN_CH0_ID_CAN_0x18200A21_Msg)) == CAN_SIG_NORMAL);
// p3A2->Sig.ICU_MCUCommunicatlost = (CAN_MSG_Status(&CAN_CH0_CanMsgOp, Co_Can_ConvertSubID_CAN_CH0(CAN_CH0_ID_CAN_0x157_Msg)) == CAN_SIG_NORMAL);
// p3A2->Sig.ICU_VCUCommunicatlost = (CAN_MSG_Status(&CAN_CH0_CanMsgOp, Co_Can_ConvertSubID_CAN_CH0(CAN_CH0_ID_CAN_0x125_Msg)) == CAN_SIG_NORMAL);
// p3A2->Sig.Res0 = 0x0;
// p3A2->Sig.Res1 = 0x00;
// p3A2->Sig.Res2 = 0x00;
// p3A2->Sig.Res3 = 0x00;
// p3A2->Sig.Res4 = 0x00;
// p3A2->Sig.Res5 = 0x00;
// p3A2->Sig.Res6 = 0x00;
// p3A2->Sig.Res7 = 0x00;
#if (PART_NUMBER == RMR42E_60)
p3A2->Sig.ICU_POWERStateFB = Get_CAN_Power_State();
p3A2->Sig.ICU_KL15State = (Get_CAN_Power_State() != KEY_OFF);
p3A2->Sig.ICU_LEDLightState = Get_LINE_IN_BigLED();
p3A2->Sig.ICU_BuzzerState = BUZZER_ON;//蜂鸣器
p3A2->Sig.Res0 = 0;
p3A2->Sig.ICU_IndicatorLightState = Get_Interact_Light_State();
p3A2->Sig.ICU_IndicatorLightPowerState = 1;
p3A2->Sig.ICU_GrassFullState = Get_LINE_IN_GrassFull();
p3A2->Sig.Res1 = 0x0;
p3A2->Sig.Res2 = 0x00;
p3A2->Sig.Res3 = 0x00;
p3A2->Sig.Res4 = 0x00;
p3A2->Sig.Res5 = 0x00;
p3A2->Sig.Res6 = 0x00;
p3A2->Sig.Res7 = 0x00;
// p3A2->Sig.ICU_MasterBMSCommunicatlost = 1;
// p3A2->Sig.ICU_SlaveBMSCommunicatlost = (CAN_MSG_Status(&CAN_CH0_CanMsgOp, Co_Can_ConvertSubID_CAN_CH0(CAN_CH0_ID_CAN_0x18200A21_Msg)) == CAN_SIG_NORMAL);
// p3A2->Sig.ICU_MCUCommunicatlost = (CAN_MSG_Status(&CAN_CH0_CanMsgOp, Co_Can_ConvertSubID_CAN_CH0(CAN_CH0_ID_CAN_0x157_Msg)) == CAN_SIG_NORMAL);
// p3A2->Sig.ICU_VCUCommunicatlost = (CAN_MSG_Status(&CAN_CH0_CanMsgOp, Co_Can_ConvertSubID_CAN_CH0(CAN_CH0_ID_CAN_0x125_Msg)) == CAN_SIG_NORMAL);
// p3A2->Sig.Res0 = 0x0;
// p3A2->Sig.Res1 = 0x00;
// p3A2->Sig.Res2 = 0x00;
// p3A2->Sig.Res3 = 0x00;
// p3A2->Sig.Res4 = 0x00;
// p3A2->Sig.Res5 = 0x00;
// p3A2->Sig.Res6 = 0x00;
// p3A2->Sig.Res7 = 0x00;
#else
if (Get_CAN_Power_State() == KEY_ACC)
{
p3A2->Sig.ICU_PowerEnable = 0x1U;
}
else
{
p3A2->Sig.ICU_PowerEnable = 0x0U;
}
p3A2->Sig.ICU_LEDLightState = Get_TelltalesLedSts(em_LED_LED_Open_W);
p3A2->Sig.ICU_BuzzerState = 0;
p3A2->Sig.ICU_GrassFullState = Get_TelltalesLedSts(em_LED_Grass_Full_R);
#endif
}
}
void Can_Set_Buff_3A7(canlib_uint8_t CopyData[])
{
#if (PART_NUMBER == RMR42E_60)
CANMsg3A7Union *p3A7;
uint8_t i = 0;
for (i = 0; i < 8; i++)
......@@ -52,7 +72,6 @@ void Can_Set_Buff_3A7(canlib_uint8_t CopyData[])
p3A7 = (CANMsg3A7Union *)CopyData;
if (p3A7 != (void *)0)
{
#if (PART_NUMBER == RMR42E_60)
p3A7->Sig.ICU_MasterBMSCommunicatlost = (CAN_MSG_Status(&CAN_CH0_CanMsgOp, Co_Can_ConvertSubID_CAN_CH0(CAN_CH0_ID_CAN_0x18200A20_Msg)) == CAN_SIG_NORMAL);
p3A7->Sig.ICU_SlaveBMSCommunicatlost = (CAN_MSG_Status(&CAN_CH0_CanMsgOp, Co_Can_ConvertSubID_CAN_CH0(CAN_CH0_ID_CAN_0x18200A21_Msg)) == CAN_SIG_NORMAL);
p3A7->Sig.ICU_MCUCommunicatlost = (CAN_MSG_Status(&CAN_CH0_CanMsgOp, Co_Can_ConvertSubID_CAN_CH0(CAN_CH0_ID_CAN_0x157_Msg)) == CAN_SIG_NORMAL);
......@@ -65,12 +84,13 @@ void Can_Set_Buff_3A7(canlib_uint8_t CopyData[])
p3A7->Sig.Res5 = 0x00;
p3A7->Sig.Res6 = 0x00;
p3A7->Sig.Res7 = 0x00;
#endif
}
#endif
}
void Can_Set_Buff_393(canlib_uint8_t CopyData[])
{
#if (PART_NUMBER == RMR42E_60)
CANMsg393Union *p393;
uint8_t i = 0;
for (i = 0; i < 8; i++)
......@@ -90,4 +110,33 @@ void Can_Set_Buff_393(canlib_uint8_t CopyData[])
p393->Sig.ICU_ProtoSubVer = 7;
p393->Sig.Res1 = 0x00;
}
#endif
}
void Can_Set_Buff_3D4(canlib_uint8_t CopyData[])
{
#if (PART_NUMBER == G54_A01)
CANMsg3D4Union *p3D4;
uint8_t i = 0;
for (i = 0; i < 8; i++)
{
CopyData[i] = 0xFFU;
}
p3D4 = (CANMsg3D4Union *)CopyData;
if (p3D4 != (void *)0)
{
p3D4->Sig.ICU_MasterBMSCommunicatlost = 0;
p3D4->Sig.ICU_SlaveBMSCommunicatlost = 0;
p3D4->Sig.ICU_MCUCommunicatlost = 0;
p3D4->Sig.ICU_VCUCommunicatlost = 0;
p3D4->Sig.Res0 = 0x0;
p3D4->Sig.Res1 = 0x00;
p3D4->Sig.Res2 = 0x00;
p3D4->Sig.Res3 = 0x00;
p3D4->Sig.Res4 = 0x00;
p3D4->Sig.Res5 = 0x00;
p3D4->Sig.Res6 = 0x00;
p3D4->Sig.Res7 = 0x00;
}
#endif
}
......@@ -8,41 +8,67 @@
void Can_Set_Buff_3A2(canlib_uint8_t CopyData[]);
void Can_Set_Buff_3A7(canlib_uint8_t CopyData[]);
void Can_Set_Buff_393(canlib_uint8_t CopyData[]);
void Can_Set_Buff_3D4(canlib_uint8_t CopyData[]);
typedef union
{
uint8_t Msg [ 8 ];
struct
{
uint8_t ICU_POWERStateFB : 4;
uint8_t ICU_KL15State : 1;
uint8_t ICU_LEDLightState : 1;
uint8_t ICU_BuzzerState : 1;
uint8_t Res0: 1;
uint8_t ICU_IndicatorLightState : 3;
uint8_t ICU_IndicatorLightPowerState : 1;
uint8_t ICU_GrassFullState : 1;
uint8_t Res1: 3;
uint8_t Res2: 8;
uint8_t Res3: 8;
#if (PART_NUMBER == RMR42E_60)
uint8_t ICU_POWERStateFB : 4;
uint8_t ICU_KL15State : 1;
uint8_t ICU_LEDLightState : 1;
uint8_t ICU_BuzzerState : 1;
uint8_t Res0: 1;
uint8_t ICU_IndicatorLightState : 3;
uint8_t ICU_IndicatorLightPowerState : 1;
uint8_t ICU_GrassFullState : 1;
uint8_t Res1: 3;
uint8_t Res2: 8;
uint8_t Res3: 8;
uint8_t Res4: 8;
uint8_t Res5: 8;
uint8_t Res6 : 8;
uint8_t Res7 : 8;
// uint8_t ICU_MasterBMSCommunicatlost : 1;
// uint8_t ICU_SlaveBMSCommunicatlost : 1;
// uint8_t ICU_MCUCommunicatlost : 1;
// uint8_t ICU_VCUCommunicatlost : 1;
// uint8_t Res0: 4;
// uint8_t Res1: 8;
// uint8_t Res2: 8;
// uint8_t Res3: 8;
// uint8_t Res4: 8;
// uint8_t Res5: 8;
// uint8_t Res6 : 8;
// uint8_t Res7 : 8;
uint8_t Res4: 8;
uint8_t Res5: 8;
uint8_t Res6 : 8;
uint8_t Res7 : 8;
// uint8_t ICU_MasterBMSCommunicatlost : 1;
// uint8_t ICU_SlaveBMSCommunicatlost : 1;
// uint8_t ICU_MCUCommunicatlost : 1;
// uint8_t ICU_VCUCommunicatlost : 1;
// uint8_t Res0: 4;
// uint8_t Res1: 8;
// uint8_t Res2: 8;
// uint8_t Res3: 8;
// uint8_t Res4: 8;
// uint8_t Res5: 8;
// uint8_t Res6 : 8;
// uint8_t Res7 : 8;
#else
uint8_t Res0 : 4;
uint8_t ICU_PowerEnable : 1;
uint8_t ICU_LEDLightState : 1;
uint8_t ICU_BuzzerState : 1;
uint8_t Res1 : 1;
uint8_t Res2 : 4;
uint8_t ICU_GrassFullState : 1;
uint8_t Res3 : 3;
uint8_t Res4 : 8;
uint8_t Res5 : 8;
uint8_t Res6 : 8;
uint8_t Res7 : 8;
uint8_t Res8 : 8;
uint8_t Res9 : 8;
#endif
} Sig;
} CANMsg3A2Union;
......@@ -84,5 +110,27 @@ typedef union
} Sig;
} CANMsg393Union;
typedef union
{
uint8_t Msg [ 8 ];
struct
{
uint8_t ICU_MasterBMSCommunicatlost : 1;
uint8_t ICU_SlaveBMSCommunicatlost : 1;
uint8_t ICU_MCUCommunicatlost : 1;
uint8_t ICU_VCUCommunicatlost : 1;
uint8_t Res0: 4;
uint8_t Res1: 8;
uint8_t Res2: 8;
uint8_t Res3: 8;
uint8_t Res4: 8;
uint8_t Res5: 8;
uint8_t Res6 : 8;
uint8_t Res7 : 8;
} Sig;
} CANMsg3D4Union;
#endif
......@@ -211,6 +211,8 @@ void Can_Tx_Apply_Buff(void)
{
CanTxRxMsg CAN_SendMsg;
CanTxRxMsg CAN_SendMsg_Diag_Tx;
#if (PART_NUMBER == RMR42E_60)
CAN_SendMsg.Id = 0x3A2;
CAN_SendMsg.IDE = CAN_Id_Standard;
CAN_SendMsg.CacheType = CAN_CacheType_Tx;
......@@ -252,7 +254,35 @@ void Can_Tx_Apply_Buff(void)
CAN_MessageCache_DeInit(CAN0MSG14);
CAN_MessageCache_Init(CAN0MSG14, &CAN_SendMsg);
#else
CAN_SendMsg.Id = 0x3A2;
CAN_SendMsg.IDE = CAN_Id_Standard;
CAN_SendMsg.CacheType = CAN_CacheType_Tx;
CAN_SendMsg.RTR = CAN_RTR_Data;
CAN_SendMsg.Interrupt = DISABLE;
CAN_SendMsg.DLC = 8;
for (uint8_t i = 0; i < CAN_SendMsg.DLC; i++)
{
CAN_SendMsg.Data[i] = 0;
}
CAN_MessageCache_DeInit(CAN0MSG12);
CAN_MessageCache_Init(CAN0MSG12, &CAN_SendMsg);
CAN_SendMsg.Id = 0x3D4;
CAN_SendMsg.IDE = CAN_Id_Standard;
CAN_SendMsg.CacheType = CAN_CacheType_Tx;
CAN_SendMsg.RTR = CAN_RTR_Data;
CAN_SendMsg.Interrupt = DISABLE;
CAN_SendMsg.DLC = 8;
for (uint8_t i = 0; i < CAN_SendMsg.DLC; i++)
{
CAN_SendMsg.Data[i] = 0;
}
CAN_MessageCache_DeInit(CAN0MSG13);
CAN_MessageCache_Init(CAN0MSG13, &CAN_SendMsg);
#endif
CAN_SendMsg_Diag_Tx.Id = DIAG_ID_Tx;
......@@ -424,6 +454,7 @@ void Can_Write(st_CAN_Msg *Msg)
CAN_SendMsg.Data[i] = Msg->Msg[i];
}
#if (PART_NUMBER == RMR42E_60)
switch (CAN_SendMsg.Id)
{
case 0x3A2:
......@@ -438,4 +469,17 @@ void Can_Write(st_CAN_Msg *Msg)
default:
break;
}
#else
switch (CAN_SendMsg.Id)
{
case 0x3A2:
CAN_Transmit(CAN0MSG12, &CAN_SendMsg);
break;
case 0x3D4:
CAN_Transmit(CAN0MSG13, &CAN_SendMsg);
break;
default:
break;
}
#endif
}
......@@ -17,7 +17,6 @@ void Sys_Pseudo_Real_Time_Tasks(void)
void Sys_2ms_Tasks(void)
{
Common_Input_Para();
Can_Write_Fun(&CAN_CH0_CanMsgTxOp, 2000u);
Sys_Status_Update_Service();
Analog_Signal_Conv_Service();
CanMSg_XMS_Analysis(&CAN_CH0_CanMsgOp, 2u);
......@@ -95,6 +94,7 @@ void Sys_100ms_Tasks(void)
void Sys_Exact_50us_Tasks(void)
{
static uint32_t task_1ms = 0u;
Can_Write_Fun(&CAN_CH0_CanMsgTxOp, 50u);
DoCAN_Timer_Update(50u);
GenDelay_Tick();
task_1ms++;
......
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