Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
R
RT_RMR42E
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
时昊
RT_RMR42E
Commits
bd7e2b42
Commit
bd7e2b42
authored
Feb 24, 2025
by
李冠华
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
✨
feat:混动车型增加外发相关逻辑
parent
69bb0ea8
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
202 additions
and
63 deletions
+202
-63
CAN_CH0_CAN_Communication_Matrix.c
...ce/Application/CAN_APP/CAN_CH0_CAN_Communication_Matrix.c
+2
-3
CAN_CH0_CAN_Communication_Matrix.h
...ce/Application/CAN_APP/CAN_CH0_CAN_Communication_Matrix.h
+1
-2
Can_App.c
Firmware/Source/Application/CAN_User/Can_App.c
+78
-29
Can_App.h
Firmware/Source/Application/CAN_User/Can_App.h
+76
-28
Can_User.c
Firmware/Source/Application/CAN_User/Can_User.c
+44
-0
Sys_Task_List.c
Firmware/Source/System/Sys_Task_List.c
+1
-1
No files found.
Firmware/Source/Application/CAN_APP/CAN_CH0_CAN_Communication_Matrix.c
View file @
bd7e2b42
...
...
@@ -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
]
=
...
...
Firmware/Source/Application/CAN_APP/CAN_CH0_CAN_Communication_Matrix.h
View file @
bd7e2b42
...
...
@@ -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
;
...
...
Firmware/Source/Application/CAN_User/Can_App.c
View file @
bd7e2b42
...
...
@@ -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
}
Firmware/Source/Application/CAN_User/Can_App.h
View file @
bd7e2b42
...
...
@@ -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
Firmware/Source/Application/CAN_User/Can_User.c
View file @
bd7e2b42
...
...
@@ -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
}
Firmware/Source/System/Sys_Task_List.c
View file @
bd7e2b42
...
...
@@ -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
++
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment