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

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

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