Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jiancetai
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
陈家乐
jiancetai
Commits
4f21b111
Commit
4f21b111
authored
May 26, 2025
by
王佳伟
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
✨
feat:替换CAN库
parent
a712640a
Changes
19
Show whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
1396 additions
and
1979 deletions
+1396
-1979
CAN_APP.c
YueJin_test_bench/source/Appliciation/CAN_APP.c
+299
-119
CAN_APP.h
YueJin_test_bench/source/Appliciation/CAN_APP.h
+186
-43
CAN_Communication_Matrix.c
...test_bench/source/Appliciation/CAN_Communication_Matrix.c
+35
-205
CAN_Communication_Matrix.h
...test_bench/source/Appliciation/CAN_Communication_Matrix.h
+32
-59
CAN_Lib.h
YueJin_test_bench/source/Appliciation/CAN_Lib.h
+144
-64
CAN_Signal_Rx.c
YueJin_test_bench/source/Appliciation/CAN_Signal_Rx.c
+311
-109
CAN_Signal_Tx.c
YueJin_test_bench/source/Appliciation/CAN_Signal_Tx.c
+288
-147
COM_CAN.c
YueJin_test_bench/source/Appliciation/COM_CAN.c
+23
-232
COM_CAN.h
YueJin_test_bench/source/Appliciation/COM_CAN.h
+5
-7
Check_Ctrl.c
YueJin_test_bench/source/Appliciation/Check_Ctrl.c
+0
-498
Check_Ctrl.h
YueJin_test_bench/source/Appliciation/Check_Ctrl.h
+1
-1
RTE_CAN.c
YueJin_test_bench/source/Appliciation/RTE_CAN.c
+18
-38
RTE_GPIO.c
YueJin_test_bench/source/Appliciation/RTE_GPIO.c
+8
-0
RTE_GPIO.h
YueJin_test_bench/source/Appliciation/RTE_GPIO.h
+4
-4
TYW_stdint.h
YueJin_test_bench/source/Appliciation/TYW_stdint.h
+24
-3
Task.c
YueJin_test_bench/source/Appliciation/Task.c
+6
-446
RSCAN.h
YueJin_test_bench/source/Driver/CAN/RSCAN.h
+5
-1
init.c
YueJin_test_bench/source/System/init.c
+6
-3
main.c
YueJin_test_bench/source/System/main.c
+1
-0
No files found.
YueJin_test_bench/source/Appliciation/CAN_APP.c
View file @
4f21b111
...
@@ -3,7 +3,8 @@
...
@@ -3,7 +3,8 @@
#include "CAN_APP.h"
#include "CAN_APP.h"
#include "CAN_Communication_Matrix.h"
#include "CAN_Communication_Matrix.h"
#include "Analog_Signals.h"
#include "Analog_Signals.h"
#include "RSCAN.h"
#include "Key.h"
uint8_t
CrcCheckSum
(
uint8_t
*
data
,
uint8_t
len
)
uint8_t
CrcCheckSum
(
uint8_t
*
data
,
uint8_t
len
)
{
{
...
@@ -30,166 +31,345 @@ uint8_t CrcCheckSum(uint8_t *data, uint8_t len)
...
@@ -30,166 +31,345 @@ uint8_t CrcCheckSum(uint8_t *data, uint8_t len)
return
crc
;
return
crc
;
}
}
void
Can_Write_Fun_APP
(
void
)
{
}
void
Can_Abort_Confirm
(
uint32_t
Identifier
,
uint8_t
TransferStatus
)
{
}
void
CAN_QuickTimer_Init
(
void
)
{
}
void
NODE_26D_SET_Confirm
(
void
)
{
}
void
Can_BusOff_Fun
(
void
)
{
}
void
Can_BusOffRecover
(
void
)
{
}
void
Can_Set_Buff_260
(
uint8_t
CopyData
[])
{
}
void
Can_Set_Buff_280
(
uint8_t
CopyData
[])
{
}
void
C
an_Set_Buff_380
(
uint8_t
CopyData
[]
)
void
C
AN_MSG_COUNTER_PLUS
(
void
)
{
{
}
}
uint8_t
VSpeed
=
0
;
void
Can_Set_Buff_385
(
uint8_t
CopyData
[])
void
Can_Set_Buff_200
(
uint8_t
CopyData
[])
{
{
uint8_t
i
=
0u
;
uint32_t
wtemp
=
0u
;
VSpeed
=
0
;
CANMsg220Union
*
pCANMsg
;
}
pCANMsg
=
(
CANMsg220Union
*
)
CopyData
;
void
Can_Set_Buff_52E
(
uint8_t
CopyData
[])
if
(
pCANMsg
!=
(
void
*
)
0
)
{
{
for
(
i
=
0u
;
i
<
8u
;
i
++
)
}
{
pCANMsg
->
Msg
[
i
]
=
0u
;
void
Can_Set_Buff_69B
(
uint8_t
CopyData
[])
}
{
}
switch
(
Check_Steps
)
{
case
0
:
VSpeed
=
0
;
break
;
case
1
:
VSpeed
=
10
;
break
;
case
2
:
VSpeed
=
19
;
break
;
case
3
:
VSpeed
=
29
;
break
;
case
4
:
VSpeed
=
38
;
break
;
case
5
:
VSpeed
=
47
;
break
;
case
6
:
VSpeed
=
57
;
break
;
case
7
:
VSpeed
=
75
;
break
;
case
8
:
VSpeed
=
88
;
break
;
case
9
:
VSpeed
=
88
;
break
;
case
10
:
VSpeed
=
88
;
break
;
case
11
:
VSpeed
=
88
;
break
;
}
pCANMsg
->
Sig
.
Vspeeed
=
VSpeed
;
}
}
void
Can_Set_Buff_481
(
uint8_t
CopyData
[])
void
Can_Set_Buff_28A
(
uint8_t
CopyData
[])
{
{
uint8_t
i
=
0u
;
uint32_t
wtemp
=
0u
;
CANMsg481Union
*
pCANMsg
;
}
pCANMsg
=
(
CANMsg481Union
*
)
CopyData
;
void
Can_Set_Buff_2E1
(
uint8_t
CopyData
[])
{
}
if
(
pCANMsg
!=
(
void
*
)
0
)
void
Can_Set_Buff_228
(
uint8_t
CopyData
[])
{
{
for
(
i
=
0u
;
i
<
8u
;
i
++
)
{
pCANMsg
->
Msg
[
i
]
=
0u
;
}
}
pCANMsg
->
Sig
.
Year
=
1
;
pCANMsg
->
Sig
.
Month
=
1
;
pCANMsg
->
Sig
.
Day
=
1
;
pCANMsg
->
Sig
.
Minute
=
0
;
pCANMsg
->
Sig
.
Second
=
0
;
pCANMsg
->
Sig
.
Hour
=
Hour
;
}
}
void
Can_Set_Buff_211
(
uint8_t
CopyData
[])
void
Can_Set_Buff_020
(
uint8_t
CopyData
[])
{
{
uint8_t
i
=
0u
;
uint32_t
wtemp
=
0u
;
CANMsg020Union
*
pCANMsg
;
}
pCANMsg
=
(
CANMsg020Union
*
)
CopyData
;
void
Can_Set_Buff_341
(
uint8_t
CopyData
[])
{
}
if
(
pCANMsg
!=
(
void
*
)
0
)
void
Can_Set_Buff_128
(
uint8_t
CopyData
[])
{
{
for
(
i
=
0u
;
i
<
8u
;
i
++
)
{
pCANMsg
->
Msg
[
i
]
=
0u
;
}
}
switch
(
Check_Steps
)
{
case
0
:
pCANMsg
->
Sig
.
Eletricity_H
=
0
;
pCANMsg
->
Sig
.
Eletricity_L
=
0
;
break
;
case
1
:
pCANMsg
->
Sig
.
Eletricity_H
=
0
;
pCANMsg
->
Sig
.
Eletricity_L
=
0
;
break
;
case
2
:
pCANMsg
->
Sig
.
Eletricity_H
=
0
;
pCANMsg
->
Sig
.
Eletricity_L
=
0x96
;
break
;
case
3
:
pCANMsg
->
Sig
.
Eletricity_H
=
0x01
;
pCANMsg
->
Sig
.
Eletricity_L
=
0x5E
;
break
;
case
4
:
pCANMsg
->
Sig
.
Eletricity_H
=
0x02
;
pCANMsg
->
Sig
.
Eletricity_L
=
0x26
;
break
;
case
5
:
pCANMsg
->
Sig
.
Eletricity_H
=
0x02
;
pCANMsg
->
Sig
.
Eletricity_L
=
0xEE
;
break
;
case
6
:
pCANMsg
->
Sig
.
Eletricity_H
=
0x03
;
pCANMsg
->
Sig
.
Eletricity_L
=
0xE8
;
break
;
case
7
:
pCANMsg
->
Sig
.
Eletricity_H
=
0x02
;
pCANMsg
->
Sig
.
Eletricity_L
=
0xEE
;
break
;
case
8
:
pCANMsg
->
Sig
.
Eletricity_H
=
0x02
;
pCANMsg
->
Sig
.
Eletricity_L
=
0x26
;
break
;
case
9
:
pCANMsg
->
Sig
.
Eletricity_H
=
0x01
;
pCANMsg
->
Sig
.
Eletricity_L
=
0x5E
;
break
;
case
10
:
pCANMsg
->
Sig
.
Eletricity_H
=
0
;
pCANMsg
->
Sig
.
Eletricity_L
=
0x96
;
break
;
case
11
:
pCANMsg
->
Sig
.
Eletricity_H
=
0x03
;
pCANMsg
->
Sig
.
Eletricity_L
=
0xE8
;
break
;
}
}
void
Can_Set_Buff_24A
(
uint8_t
CopyData
[])
{
}
void
Can_Set_Buff_35A
(
uint8_t
CopyData
[])
{
}
}
void
Can_Set_Buff_135
(
uint8_t
CopyData
[])
void
Can_Set_Buff_042
(
uint8_t
CopyData
[])
{
{
uint8_t
i
=
0u
;
uint32_t
wtemp
=
0u
;
CANMsg042Union
*
pCANMsg
;
}
pCANMsg
=
(
CANMsg042Union
*
)
CopyData
;
void
Can_Set_Buff_153
(
uint8_t
CopyData
[])
{
if
(
pCANMsg
!=
(
void
*
)
0
)
{
for
(
i
=
0u
;
i
<
8u
;
i
++
)
{
pCANMsg
->
Msg
[
i
]
=
0u
;
}
}
if
(
Tcs
==
1
)
{
pCANMsg
->
Sig
.
Tcs_mode
=
1
;
pCANMsg
->
Sig
.
Tcs_Control
=
1
;
}
else
if
(
Tcs
==
2
)
{
pCANMsg
->
Sig
.
Tcs_Control
=
1
;
}
else
{
;
}
}
}
void
Can_Set_Buff_131
(
uint8_t
CopyData
[])
{
}
void
Can_Set_Buff_480
(
uint8_t
CopyData
[])
void
Can_Set_Buff_139
(
uint8_t
CopyData
[])
{
{
uint8_t
i
=
0u
;
uint32_t
wtemp
=
0u
;
CANMsg480Union
*
pCANMsg
;
}
pCANMsg
=
(
CANMsg480Union
*
)
CopyData
;
void
Can_Set_Buff_431
(
uint8_t
CopyData
[])
{
if
(
pCANMsg
!=
(
void
*
)
0
)
{
for
(
i
=
0u
;
i
<
8u
;
i
++
)
{
pCANMsg
->
Msg
[
i
]
=
0u
;
}
}
pCANMsg
->
Sig
.
Signal_Gps
=
Signal_GPS
;
pCANMsg
->
Sig
.
Signal_4g
=
Signal_4G
;
}
}
void
Can_Set_Buff_5e0
(
uint8_t
CopyData
[])
{
}
void
Can_Set_Buff_280
(
uint8_t
CopyData
[])
void
Can_Set_Buff_236
(
uint8_t
CopyData
[])
{
{
uint8_t
i
=
0u
;
uint32_t
wtemp
=
0u
;
CANMsg280Union
*
pCANMsg
;
}
pCANMsg
=
(
CANMsg280Union
*
)
CopyData
;
void
Can_Set_Buff_168
(
uint8_t
CopyData
[])
if
(
pCANMsg
!=
(
void
*
)
0
)
{
{
for
(
i
=
0u
;
i
<
8u
;
i
++
)
{
pCANMsg
->
Msg
[
i
]
=
0u
;
}
}
if
(
Energy_recovery
==
2
)
{
pCANMsg
->
Sig
.
Energy_status
=
1
;
pCANMsg
->
Sig
.
Energy_recovery
=
2
;
pCANMsg
->
Sig
.
Side_bracket
=
1
;
}
else
if
(
Energy_recovery
==
1
)
{
pCANMsg
->
Sig
.
Energy_status
=
1
;
pCANMsg
->
Sig
.
Energy_recovery
=
1
;
}
else
if
(
Energy_recovery
==
3
)
{
pCANMsg
->
Sig
.
Energy_status
=
1
;
pCANMsg
->
Sig
.
Energy_recovery
=
3
;
}
else
{
;
}
if
(
Tcs
==
1
)
{
pCANMsg
->
Sig
.
Tcs_Status
=
1
;
}
}
}
void
Can_Set_Buff_0F6
(
uint8_t
CopyData
[])
{
}
void
Can_Set_Buff_202
(
uint8_t
CopyData
[])
void
Can_Set_Buff_0E1
(
uint8_t
CopyData
[])
{
{
uint8_t
i
=
0u
;
uint32_t
wtemp
=
0u
;
CANMsg202Union
*
pCANMsg
;
}
pCANMsg
=
(
CANMsg202Union
*
)
CopyData
;
void
Can_Set_Buff_036
(
uint8_t
CopyData
[])
{
}
if
(
pCANMsg
!=
(
void
*
)
0
)
{
for
(
i
=
0u
;
i
<
8u
;
i
++
)
{
pCANMsg
->
Msg
[
i
]
=
0u
;
}
}
if
(
Gear
==
0
)
{
pCANMsg
->
Sig
.
Gear
=
0
;
}
else
if
(
Gear
==
1
)
{
pCANMsg
->
Sig
.
Gear
=
1
;
}
else
if
(
Gear
==
2
)
{
pCANMsg
->
Sig
.
Gear
=
2
;
}
void
Can_Set_Buff_0B6
(
uint8_t
CopyData
[])
if
(
Cruiste
==
1
)
{
{
pCANMsg
->
Sig
.
Cruiste
=
1
;
}
if
(
Ready
==
1
)
{
pCANMsg
->
Sig
.
Ready
=
1
;
}
else
if
(
Ready
==
2
)
{
pCANMsg
->
Sig
.
Ready
=
2
;
}
else
if
(
Ready
==
3
)
{
pCANMsg
->
Sig
.
Ready
=
3
;
}
if
(
Fault
==
1
)
{
pCANMsg
->
Sig
.
Fault
=
1
;
}
}
}
void
Can_Set_Buff_001
(
uint8_t
CopyData
[])
void
Can_Set_Buff_320
(
uint8_t
CopyData
[])
{
{
uint8_t
i
=
0u
;
uint32_t
wtemp
=
0u
;
CANMsg001Union
*
pCANMsg
;
}
pCANMsg
=
(
CANMsg001Union
*
)
CopyData
;
void
Can_Set_Buff_152
(
uint8_t
CopyData
[])
{
if
(
pCANMsg
!=
(
void
*
)
0
)
{
for
(
i
=
0u
;
i
<
8u
;
i
++
)
{
pCANMsg
->
Msg
[
i
]
=
0u
;
}
}
if
(
Motor_hert
==
1
)
{
pCANMsg
->
Sig
.
Motor_hert
=
1
;
}
}
}
void
Can_Set_Buff_1A
1
(
uint8_t
CopyData
[])
void
Can_Set_Buff_02
1
(
uint8_t
CopyData
[])
{
{
uint8_t
i
=
0u
;
uint32_t
wtemp
=
0u
;
CANMsg021Union
*
pCANMsg
;
}
pCANMsg
=
(
CANMsg021Union
*
)
CopyData
;
void
Can_Set_Buff_75F
(
uint8_t
CopyData
[])
if
(
pCANMsg
!=
(
void
*
)
0
)
{
{
}
for
(
i
=
0u
;
i
<
8u
;
i
++
)
{
void
Can_Set_Buff_389
(
uint8_t
CopyData
[])
pCANMsg
->
Msg
[
i
]
=
0u
;
{
}
}
if
(
Battery_temp
==
1
)
{
pCANMsg
->
Sig
.
Battery_temp
=
1
;
}
}
}
YueJin_test_bench/source/Appliciation/CAN_APP.h
View file @
4f21b111
#ifndef _CAN_APP_H_
#ifndef _CAN_APP_H_
#define _CAN_APP_H_
#define _CAN_APP_H_
void
Can_Abort_All
(
void
);
#include "RSCAN.h"
void
CAN_QuickTimer_Init
(
void
);
void
Can_Write_Fun_APP
(
void
);
typedef
union
void
Can_BusOff_Fun
(
void
);
{
uint8_t
Msg
[
8
];
struct
{
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
Vspeeed
:
8
;
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
:
8
;
}
Sig
;
}
CANMsg220Union
;
typedef
union
{
uint8_t
Msg
[
8
];
struct
{
uint64_t
Year
:
8
;
uint64_t
Month
:
8
;
uint64_t
Day
:
8
;
uint64_t
Hour
:
8
;
uint64_t
Minute
:
8
;
uint64_t
Second
:
8
;
uint64_t
:
8
;
uint64_t
:
8
;
}
Sig
;
}
CANMsg481Union
;
typedef
union
{
uint8_t
Msg
[
8
];
struct
{
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
Eletricity_H
:
8
;
uint64_t
Eletricity_L
:
8
;
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
:
8
;
}
Sig
;
}
CANMsg020Union
;
typedef
union
{
uint8_t
Msg
[
8
];
struct
{
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
TCS
:
4
;
uint64_t
:
2
;
uint64_t
Tcs_mode
:
1
;
uint64_t
Tcs_Control
:
1
;
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
:
8
;
}
Sig
;
}
CANMsg042Union
;
typedef
union
{
uint8_t
Msg
[
8
];
struct
{
uint64_t
Signal_4g
:
8
;
uint64_t
Signal_Gps
:
8
;
uint64_t
:
6
;
uint64_t
Blooth_phone
:
1
;
uint64_t
Blooth_led
:
1
;
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
:
8
;
}
Sig
;
}
CANMsg480Union
;
typedef
union
{
uint8_t
Msg
[
8
];
struct
{
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
Energy_status
:
1
;
uint64_t
:
2
;
uint64_t
Side_bracket
:
1
;
uint64_t
Tcs_Status
:
1
;
uint64_t
Energy_recovery
:
2
;
uint64_t
:
1
;
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
:
8
;
}
Sig
;
}
CANMsg280Union
;
typedef
union
{
uint8_t
Msg
[
8
];
struct
{
uint64_t
:
2
;
uint64_t
Gear
:
2
;
uint64_t
:
4
;
uint64_t
:
4
;
uint64_t
Ready
:
2
;
uint64_t
Cruiste
:
1
;
uint64_t
:
1
;
uint64_t
:
2
;
uint64_t
Fault
:
1
;
uint64_t
:
5
;
uint64_t
Range
:
8
;
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
:
8
;
}
Sig
;
}
CANMsg202Union
;
typedef
union
{
uint8_t
Msg
[
8
];
struct
{
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
:
4
;
uint64_t
Motor_hert
:
1
;
uint64_t
:
3
;
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
:
8
;
}
Sig
;
}
CANMsg001Union
;
typedef
union
{
uint8_t
Msg
[
8
];
struct
{
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
:
8
;
uint64_t
:
7
;
uint64_t
Battery_temp
:
1
;
uint64_t
:
8
;
uint64_t
:
8
;
}
Sig
;
}
CANMsg021Union
;
void
CAN_MSG_COUNTER_PLUS
(
void
);
void
Can_Set_Buff_260
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_280
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_380
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_385
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_52E
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_69B
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_28A
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_2E1
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_0E1
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_0F6
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_036
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_0B6
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_320
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_152
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_153
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_168
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_128
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_139
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_131
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_24A
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_1A1
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_389
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_135
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_35A
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_341
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_211
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_228
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_431
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_5e0
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_236
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_75F
(
uint8_t
CopyData
[]);
void
Can_BusOffRecover
(
void
);
uint8_t
CrcCheckSum
(
uint8_t
*
data
,
uint8_t
len
);
uint8_t
CrcCheckSum
(
uint8_t
*
data
,
uint8_t
len
);
void
Can_Set_Buff_200
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_481
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_020
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_042
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_480
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_280
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_202
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_001
(
uint8_t
CopyData
[]);
void
Can_Set_Buff_021
(
uint8_t
CopyData
[]);
extern
uint8_t
VSpeed
;
#endif
#endif
YueJin_test_bench/source/Appliciation/CAN_Communication_Matrix.c
View file @
4f21b111
#include "CAN_Communication_Matrix.h"
#include "CAN_Communication_Matrix.h"
#include "CAN_APP.h"
#include "CAN_APP.h"
/* 2021/08/08 16:54:40 */
#include "RSCAN.h"
/*
can1 0- 31
/* 2022/11/19 14:29:55 */
can2 32- 63
st_CanMsgOp
CAN_CH4_CanMsgOp
;
can4 64 95
st_CanMsgTxOp
CAN_CH4_CanMsgTxOp
;
*/
#define CAN_CH4 &CAN_CH4_CanMsgOp
const
st_CAN_SendAttribute
CAN_CH4_CANSendAttr
[
CAN_CH4_ID_SEND_TOTAL
]
=
//Tx:
{
const
st_CAN_SendAttribute
st_CANSendAttr
[
ID_SEND_TOTAL
]
=
{
{
0x200
,
100ul
*
1000ul
,
5ul
,
0u
,
MSG_STD
,
RSCAN_CHANNEL_BUF_4
,
8u
,
CAN_MSG_TX_CYCLE
,
Can_Set_Buff_200
,
(
void
*
)
0
},
//车速
{
0x2E1ul
,
50ul
*
1000ul
,
0ul
,
0u
,
0
,
64u
,
8u
,
0
,
Can_Set_Buff_2E1
,
(
void
*
)
0
},
{
0x481
,
500ul
*
1000ul
,
10ul
,
0u
,
MSG_STD
,
RSCAN_CHANNEL_BUF_5
,
8u
,
CAN_MSG_TX_CYCLE
,
Can_Set_Buff_481
,
(
void
*
)
0
},
//时间
{
0x020
,
100ul
*
1000ul
,
15ul
,
0u
,
MSG_STD
,
RSCAN_CHANNEL_BUF_6
,
8u
,
CAN_MSG_TX_CYCLE
,
Can_Set_Buff_020
,
(
void
*
)
0
},
//电量
{
0x042
,
10ul
*
1000ul
,
20ul
,
0u
,
MSG_STD
,
RSCAN_CHANNEL_BUF_7
,
8u
,
CAN_MSG_TX_CYCLE
,
Can_Set_Buff_042
,
(
void
*
)
0
},
//tcs
{
0x480
,
500ul
*
1000ul
,
25ul
,
0u
,
MSG_STD
,
RSCAN_CHANNEL_BUF_8
,
8u
,
CAN_MSG_TX_CYCLE
,
Can_Set_Buff_480
,
(
void
*
)
0
},
//GPS,4G,电话,蓝牙指示灯
{
0x280
,
100ul
*
1000ul
,
30ul
,
0u
,
MSG_STD
,
RSCAN_CHANNEL_BUF_9
,
8u
,
CAN_MSG_TX_CYCLE
,
Can_Set_Buff_280
,
(
void
*
)
0
},
//tcs,能量回收
{
0x202
,
100ul
*
1000ul
,
35ul
,
0u
,
MSG_STD
,
RSCAN_CHANNEL_BUF_10
,
8u
,
CAN_MSG_TX_CYCLE
,
Can_Set_Buff_202
,
(
void
*
)
0
},
//档位,续航里程,ready
{
0x001
,
100ul
*
1000ul
,
40ul
,
0u
,
MSG_STD
,
RSCAN_CHANNEL_BUF_11
,
8u
,
CAN_MSG_TX_CYCLE
,
Can_Set_Buff_001
,
(
void
*
)
0
},
//电机过热
{
0x021
,
100ul
*
1000ul
,
45ul
,
0u
,
MSG_STD
,
RSCAN_CHANNEL_BUF_12
,
8u
,
CAN_MSG_TX_CYCLE
,
Can_Set_Buff_021
,
(
void
*
)
0
},
//电池过热
};
};
const
st_CANMsgAttribute
CAN_CH4_CAN_MSG_CONST_ARRAY
[
CAN_CH4_ID_TOTAL_MAX
]
=
//Rx:
const
st_CANMsgAttribute
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
},
{
0x00u
,
0x00u
,
0x00u
,
0x00u
,
0x00u
,
0x00u
,
0x00u
,
0x00u
},
{
0x00u
,
0x00u
,
0x00u
,
0x00u
,
0x00u
,
0x00u
,
0x00u
,
0x00u
},
5000ul
,
5000ul
,
0x10FF4117ul
,
0x250ul
,
((
void
*
)
0
),
((
void
*
)
0
),
((
void
*
)
0
),
},
{
{
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
,
0x18FEAE17ul
,
((
void
*
)
0
),
((
void
*
)
0
),
((
void
*
)
0
),
},
{
{
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
,
0x10FF1017ul
,
((
void
*
)
0
),
((
void
*
)
0
),
((
void
*
)
0
),
((
void
*
)
0
),
((
void
*
)
0
),
((
void
*
)
0
),
...
@@ -54,7 +37,7 @@ const st_CANMsgAttribute CAN_MSG_CONST_ARRAY [ CAN_CH0_ID_TOTAL_MAX ] =
...
@@ -54,7 +37,7 @@ const st_CANMsgAttribute 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
,
0x
18FEC1EE
ul
,
0x
450
ul
,
((
void
*
)
0
),
((
void
*
)
0
),
((
void
*
)
0
),
((
void
*
)
0
),
((
void
*
)
0
),
((
void
*
)
0
),
...
@@ -64,17 +47,7 @@ const st_CANMsgAttribute CAN_MSG_CONST_ARRAY [ CAN_CH0_ID_TOTAL_MAX ] =
...
@@ -64,17 +47,7 @@ const st_CANMsgAttribute 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
,
0xCFE6CEEul
,
0x45l
,
((
void
*
)
0
),
((
void
*
)
0
),
((
void
*
)
0
),
},
{
{
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
,
0x18FEFC17ul
,
((
void
*
)
0
),
((
void
*
)
0
),
((
void
*
)
0
),
((
void
*
)
0
),
((
void
*
)
0
),
((
void
*
)
0
),
...
@@ -82,168 +55,25 @@ const st_CANMsgAttribute CAN_MSG_CONST_ARRAY [ CAN_CH0_ID_TOTAL_MAX ] =
...
@@ -82,168 +55,25 @@ const st_CANMsgAttribute CAN_MSG_CONST_ARRAY [ CAN_CH0_ID_TOTAL_MAX ] =
};
};
uint8_t
Co_Can_ConvertSubID_CAN_CH4
(
uint32_t
MsgID
)
uint32_t
Get_ID_ODO
(
void
)
{
uint32_t
ret
=
0
;
ret
=
Get_CAN_CH0_ID_18FEC1EE_Sig_Total_Vehicle_Distance
();
ret
=
ret
/
200
;
return
ret
;
}
uint32_t
Get_ID_FUEL
(
void
)
{
uint32_t
ret
=
0
;
ret
=
Get_CAN_CH0_ID_18FEFC17_Sig_Fuel_level
();
ret
=
ret
*
2
/
5
;
return
ret
;
}
uint32_t
Get_ID_VSpeed
(
void
)
{
uint32_t
ret
=
0
;
ret
=
Get_CAN_CH0_ID_0CFE6CEE_Sig_Tachograph_vehicle_speed
();
ret
=
ret
/
256
;
return
ret
;
}
uint8_t
Get_ID_HandBrakeSts
(
void
)
{
uint8_t
ret
=
0
;
ret
=
Get_CAN_CH0_ID_10FF4117_Sig_IC_HandBrakeSts
();
return
ret
;
}
uint8_t
Get_CAN_CH0_ID_10FF4117_Sig_IC_HCSPS_LampFailSts
(
void
)
{
return
(((
uint8_t
)((
uint8_t
)
CAN_MSG_Read
(
CAN_CH0_ID_Send10FF4117_Msg_Count
,
1u
)
>>
0u
)
&
0x03u
));
}
uint8_t
Get_CAN_CH0_ID_10FF4117_Sig_BackUPSts
(
void
)
{
return
(((
uint8_t
)((
uint8_t
)
CAN_MSG_Read
(
CAN_CH0_ID_Send10FF4117_Msg_Count
,
0u
)
>>
2u
)
&
0x03u
));
}
uint8_t
Get_CAN_CH0_ID_10FF4117_Sig_Seatbeltsts
(
void
)
{
return
(((
uint8_t
)((
uint8_t
)
CAN_MSG_Read
(
CAN_CH0_ID_Send10FF4117_Msg_Count
,
0u
)
>>
0u
)
&
0x03u
));
}
uint8_t
Get_CAN_CH0_ID_10FF4117_Sig_IC_HandBrakeSts
(
void
)
{
return
(((
uint8_t
)((
uint8_t
)
CAN_MSG_Read
(
CAN_CH0_ID_Send10FF4117_Msg_Count
,
0u
)
>>
6u
)
&
0x03u
));
}
uint8_t
Get_CAN_CH0_ID_18FEAE17_Sig_Service_Brake_Circuit_2_Air_Pressure
(
void
)
{
return
(((
uint8_t
)((
uint8_t
)
CAN_MSG_Read
(
CAN_CH0_ID_Send18FEAE17_Msg_Count
,
3u
)
>>
0u
)
&
0xFFu
));
}
uint8_t
Get_CAN_CH0_ID_18FEAE17_Sig_Service_Brake_Circuit_1_Air_Pressure
(
void
)
{
return
(((
uint8_t
)((
uint8_t
)
CAN_MSG_Read
(
CAN_CH0_ID_Send18FEAE17_Msg_Count
,
2u
)
>>
0u
)
&
0xFFu
));
}
uint8_t
Get_CAN_CH0_ID_10FF1017_Sig_HeatedMirrorSts
(
void
)
{
return
(((
uint8_t
)((
uint8_t
)
CAN_MSG_Read
(
CAN_CH0_ID_Send10FF1017_Msg_Count
,
2u
)
>>
2u
)
&
0x03u
));
}
uint8_t
Get_CAN_CH0_ID_10FF1017_Sig_RearFogLightSts
(
void
)
{
return
(((
uint8_t
)((
uint8_t
)
CAN_MSG_Read
(
CAN_CH0_ID_Send10FF1017_Msg_Count
,
2u
)
>>
4u
)
&
0x03u
));
}
uint8_t
Get_CAN_CH0_ID_10FF1017_Sig_FrontFogLightSts
(
void
)
{
{
return
(((
uint8_t
)((
uint8_t
)
CAN_MSG_Read
(
CAN_CH0_ID_Send10FF1017_Msg_Count
,
2u
)
>>
6u
)
&
0x03u
));
uint8_t
u8Result
=
CAN_CH4_ID_TOTAL_MAX
;
}
uint8_t
Get_CAN_CH0_ID_10FF1017_Sig_LowBeamSts
(
void
)
{
return
(((
uint8_t
)((
uint8_t
)
CAN_MSG_Read
(
CAN_CH0_ID_Send10FF1017_Msg_Count
,
1u
)
>>
0u
)
&
0x03u
));
}
uint8_t
Get_CAN_CH0_ID_10FF1017_Sig_HighBeamSts
(
void
)
{
return
(((
uint8_t
)((
uint8_t
)
CAN_MSG_Read
(
CAN_CH0_ID_Send10FF1017_Msg_Count
,
1u
)
>>
2u
)
&
0x03u
));
}
uint8_t
Get_CAN_CH0_ID_10FF1017_Sig_LHParkTailLightSts
(
void
)
{
return
(((
uint8_t
)((
uint8_t
)
CAN_MSG_Read
(
CAN_CH0_ID_Send10FF1017_Msg_Count
,
1u
)
>>
4u
)
&
0x03u
));
}
uint8_t
Get_CAN_CH0_ID_10FF1017_Sig_RHParkTailLightSts
(
void
)
{
return
(((
uint8_t
)((
uint8_t
)
CAN_MSG_Read
(
CAN_CH0_ID_Send10FF1017_Msg_Count
,
1u
)
>>
6u
)
&
0x03u
));
}
uint32_t
Get_CAN_CH0_ID_18FEC1EE_Sig_Total_Vehicle_Distance
(
void
)
{
return
(((
uint32_t
)((
uint32_t
)((
uint32_t
)((
uint32_t
)((
uint32_t
)
CAN_MSG_Read
(
CAN_CH0_ID_Send18FEC1EE_Msg_Count
,
3u
)
>>
0u
)
&
0xFFu
)
<<
8u
)
+
\
((
uint32_t
)((
uint32_t
)
CAN_MSG_Read
(
CAN_CH0_ID_Send18FEC1EE_Msg_Count
,
2u
)
>>
0u
)
&
0xFFu
)
<<
8u
)
+
\
((
uint32_t
)((
uint32_t
)
CAN_MSG_Read
(
CAN_CH0_ID_Send18FEC1EE_Msg_Count
,
1u
)
>>
0u
)
&
0xFFu
)
<<
8u
)
+
\
((
uint32_t
)((
uint32_t
)
CAN_MSG_Read
(
CAN_CH0_ID_Send18FEC1EE_Msg_Count
,
0u
)
>>
0u
)
&
0xFFu
));
}
uint16_t
Get_CAN_CH0_ID_0CFE6CEE_Sig_Tachograph_vehicle_speed
(
void
)
{
return
(((
uint16_t
)((
uint16_t
)((
uint16_t
)
CAN_MSG_Read
(
CAN_CH0_ID_Send0CFE6CEE_Msg_Count
,
7u
)
>>
0u
)
&
0xFFu
)
<<
8u
)
+
\
((
uint16_t
)((
uint16_t
)
CAN_MSG_Read
(
CAN_CH0_ID_Send0CFE6CEE_Msg_Count
,
6u
)
>>
0u
)
&
0xFFu
));
}
uint8_t
Get_CAN_CH0_ID_18FEFC17_Sig_Fuel_level
(
void
)
{
return
(((
uint8_t
)((
uint8_t
)
CAN_MSG_Read
(
CAN_CH0_ID_Send18FEFC17_Msg_Count
,
0u
)
>>
0u
)
&
0xFFu
));
}
uint8_t
Co_Can_ConvertSubID
(
uint32_t
MsgID
)
{
uint8_t
u8Result
=
CAN_CH0_ID_TOTAL_MAX
;
switch
(
MsgID
)
switch
(
MsgID
)
{
{
case
CAN_CH0_ID_Send10FF4117_Msg
:
case
CAN_CH4_ID_250_Msg_Count
:
u8Result
=
CAN_CH0_ID_Send10FF4117_Msg_Count
;
u8Result
=
CAN_CH4_ID_250_Msg
;
break
;
case
CAN_CH0_ID_Send18FEAE17_Msg
:
u8Result
=
CAN_CH0_ID_Send18FEAE17_Msg_Count
;
break
;
case
CAN_CH0_ID_Send10FF1017_Msg
:
u8Result
=
CAN_CH0_ID_Send10FF1017_Msg_Count
;
break
;
break
;
case
CAN_CH
0_ID_Send18FEC1EE_Msg
:
case
CAN_CH
4_ID_450_Msg_Count
:
u8Result
=
CAN_CH
0_ID_Send18FEC1EE_Msg_Count
;
u8Result
=
CAN_CH
4_ID_450_Msg
;
break
;
break
;
case
CAN_CH0_ID_Send0CFE6CEE_Msg
:
case
CAN_CH4_ID_451_Msg_Count
:
u8Result
=
CAN_CH0_ID_Send0CFE6CEE_Msg_Count
;
u8Result
=
CAN_CH4_ID_451_Msg
;
break
;
case
CAN_CH0_ID_Send18FEFC17_Msg
:
u8Result
=
CAN_CH0_ID_Send18FEFC17_Msg_Count
;
break
;
break
;
default
:
default
:
u8Result
=
CAN_CH
0
_ID_TOTAL_MAX
;
u8Result
=
CAN_CH
4
_ID_TOTAL_MAX
;
break
;
break
;
}
}
return
u8Result
;
return
u8Result
;
}
}
YueJin_test_bench/source/Appliciation/CAN_Communication_Matrix.h
View file @
4f21b111
#ifndef CAN_COMMUNICATION_MATRIX_H_
#ifndef CAN_C
H4_CAN_C
OMMUNICATION_MATRIX_H_
#define CAN_COMMUNICATION_MATRIX_H_
#define CAN_C
H4_CAN_C
OMMUNICATION_MATRIX_H_
#include "TYW_stdint.h"
#include "TYW_stdint.h"
#include "CAN_Lib.h"
#include "CAN_Lib.h"
typedef
enum
extern
st_CanMsgOp
CAN_CH4_CanMsgOp
;
{
CAN_CH0_ID_Send10FF4117_Msg_Count
,
CAN_CH0_ID_Send18FEAE17_Msg_Count
,
CAN_CH0_ID_Send10FF1017_Msg_Count
,
CAN_CH0_ID_Send18FEC1EE_Msg_Count
,
CAN_CH0_ID_Send0CFE6CEE_Msg_Count
,
CAN_CH0_ID_Send18FEFC17_Msg_Count
,
CAN_CH0_ID_TOTAL_MAX
,
extern
st_CanMsgTxOp
CAN_CH4_CanMsgTxOp
;
}
CAN_MSG_ID_t
;
typedef
enum
typedef
enum
{
{
ID_2E1_COUNT
,
CAN_CH4_ID_250_Msg_Count
,
CAN_CH4_ID_450_Msg_Count
,
ID_SEND_TOTAL
,
CAN_CH4_ID_451_Msg_Count
,
}
CAN_MSG_SEND_ID_t
;
extern
const
st_CANMsgAttribute
CAN_MSG_CONST_ARRAY
[
CAN_CH0_ID_TOTAL_MAX
];
extern
const
st_CAN_SendAttribute
st_CANSendAttr
[
ID_SEND_TOTAL
]
;
#define CAN_CH0_ID_Send10FF4117_Msg 0x10FF4117ul
#define CAN_CH0_ID_Send18FEAE17_Msg 0x18FEAE17ul
#define CAN_CH0_ID_Send10FF1017_Msg 0x10FF1017ul
#define CAN_CH0_ID_Send18FEC1EE_Msg 0x18FEC1EEul
#define CAN_CH0_ID_Send0CFE6CEE_Msg 0x0CFE6CEEul
#define CAN_CH0_ID_Send18FEFC17_Msg 0x18FEFC17ul
extern
uint32_t
Get_ID_ODO
(
void
);
extern
uint32_t
Get_ID_FUEL
(
void
);
extern
uint8_t
Get_ID_HandBrakeSts
(
void
);
extern
uint32_t
Get_ID_VSpeed
(
void
);
extern
uint8_t
Get_CAN_CH0_ID_10FF4117_Sig_IC_HCSPS_LampFailSts
(
void
);
CAN_CH4_ID_TOTAL_MAX
,
extern
uint8_t
Get_CAN_CH0_ID_10FF4117_Sig_BackUPSts
(
void
);
}
CAN_CH4_CAN_MSG_ID_t
;
extern
uint8_t
Get_CAN_CH0_ID_10FF4117_Sig_Seatbeltsts
(
void
);
extern
uint8_t
Get_CAN_CH0_ID_10FF4117_Sig_IC_HandBrakeSts
(
void
);
extern
uint8_t
Get_CAN_CH0_ID_18FEAE17_Sig_Service_Brake_Circuit_2_Air_Pressure
(
void
);
extern
uint8_t
Get_CAN_CH0_ID_18FEAE17_Sig_Service_Brake_Circuit_1_Air_Pressure
(
void
);
extern
uint8_t
Get_CAN_CH0_ID_10FF1017_Sig_HeatedMirrorSts
(
void
);
extern
uint8_t
Get_CAN_CH0_ID_10FF1017_Sig_RearFogLightSts
(
void
);
extern
uint8_t
Get_CAN_CH0_ID_10FF1017_Sig_FrontFogLightSts
(
void
);
extern
uint8_t
Get_CAN_CH0_ID_10FF1017_Sig_LowBeamSts
(
void
);
extern
uint8_t
Get_CAN_CH0_ID_10FF1017_Sig_HighBeamSts
(
void
);
extern
uint8_t
Get_CAN_CH0_ID_10FF1017_Sig_LHParkTailLightSts
(
void
);
extern
uint8_t
Get_CAN_CH0_ID_10FF1017_Sig_RHParkTailLightSts
(
void
);
extern
uint32_t
Get_CAN_CH0_ID_18FEC1EE_Sig_Total_Vehicle_Distance
(
void
);
extern
uint16_t
Get_CAN_CH0_ID_0CFE6CEE_Sig_Tachograph_vehicle_speed
(
void
);
extern
uint8_t
Get_CAN_CH0_ID_18FEFC17_Sig_Fuel_level
(
void
);
extern
uint8_t
Co_Can_ConvertSubID
(
uint32_t
MsgID
);
typedef
enum
{
CAN_CH4_ID_200
,
CAN_CH4_ID_481
,
CAN_CH4_ID_020
,
CAN_CH4_ID_042
,
CAN_CH4_ID_480
,
CAN_CH4_ID_280
,
CAN_CH4_ID_202
,
CAN_CH4_ID_001
,
CAN_CH4_ID_021
,
CAN_CH4_ID_SEND_TOTAL
,
}
CAN_CH4_CAN_MSG_SEND_ID_t
;
extern
const
st_CANMsgAttribute
CAN_CH4_CAN_MSG_CONST_ARRAY
[
CAN_CH4_ID_TOTAL_MAX
]
;
extern
const
st_CAN_SendAttribute
CAN_CH4_CANSendAttr
[
CAN_CH4_ID_SEND_TOTAL
]
;
#define CAN_CH4_ID_250_Msg 0x250u
#define CAN_CH4_ID_450_Msg 0x450u
#define CAN_CH4_ID_451_Msg 0x451u
extern
uint8_t
Co_Can_ConvertSubID_CAN_CH4
(
uint32_t
MsgID
);
#endif
#endif
YueJin_test_bench/source/Appliciation/CAN_Lib.h
View file @
4f21b111
#ifndef CAN_LIB_H_
#ifndef CAN_LIB_H_
#define CAN_LIB_H_
#define CAN_LIB_H_
/* #define Platform_16Bit
/*
#define Platform_32Bit*/
#define Platform_16Bit
#define Platform_32Bit
*/
#ifdef Platform_16Bit
#ifdef Platform_16Bit
#define canlib_uint8_t unsigned char
#define canlib_uint8_t unsigned char
#define canlib_uint16_t unsigned int
#define canlib_uint16_t unsigned int
#define canlib_uint32_t unsigned long
#define canlib_uint32_t unsigned long
#else
#else
#define canlib_uint8_t unsigned char
#define canlib_uint8_t unsigned char
#define canlib_uint16_t unsigned short
#define canlib_uint16_t unsigned short
...
@@ -24,88 +26,166 @@ typedef void (*MSG_CKB_ON_LOST)(canlib_uint8_t CopyData []);
...
@@ -24,88 +26,166 @@ typedef void (*MSG_CKB_ON_LOST)(canlib_uint8_t CopyData []);
typedef
void
(
*
pfnMsgBufferSet
)(
canlib_uint8_t
CopyData
[]);
typedef
void
(
*
pfnMsgBufferSet
)(
canlib_uint8_t
CopyData
[]);
typedef
void
(
*
pfnMsgSuccess
)(
void
);
typedef
void
(
*
pfnMsgSuccess
)(
void
);
/**@enum CAN_FUNC_ERR_t
* @brief 定义驱动上报应用消息类型 \n
*/
typedef
enum
typedef
enum
{
{
CAN_ERR_OK
,
CAN_ERR_OK
,
/**< 模块初始化返回值,参数正常 */
CAN_ERR_ParaInit
,
CAN_ERR_ParaInit
,
/**< 模块初始化返回值,初始化错误 */
CAN_ERR_OUTRANGE
,
CAN_ERR_OUTRANGE
,
/**< 模块初始化返回值,参数传入超限制 */
}
CAN_FUNC_ERR_t
;
}
CAN_FUNC_ERR_t
;
/**@enum CAN_TX_Status_t
* @brief 定义CAN模块发送状态 \n
*/
typedef
enum
{
CAN_N_TX_Disable
=
0x00U
,
/**< CAN模块禁止发送 */
CAN_N_TX_Enable
=
0x55U
,
/**< CAN模块允许发送 */
}
CAN_TX_Status_t
;
/**@enum CAN_RX_Status_t
* @brief 定义CAN模块接收状态 \n
*/
typedef
enum
{
CAN_N_RX_Enable
=
0x00U
,
/**< CAN模块禁止接收 */
CAN_N_RX_Disable
=
0x55U
,
/**< CAN模块允许接收 */
}
CAN_RX_Status_t
;
/**@struct st_CANMsgAttribute
* @brief 报文接收属性结构体 \n
* 定义报接收文属性
*/
typedef
struct
typedef
struct
{
{
canlib_uint8_t
I
NIT_Aarry
[
8u
];
canlib_uint8_t
I
nit_Aarry
[
8u
];
/**< 报文初始化值.默认加载,未收到报文时,buffer内为该值 */
canlib_uint8_t
T
IMEOUT_Array
[
8u
];
canlib_uint8_t
T
imeOut_Array
[
8u
];
/**< 报文掉线值.掉线后加载 */
canlib_uint8_t
M
ASK_Array
[
8u
];
canlib_uint8_t
M
ask_Array
[
8u
];
/**< 报文掉线掩码.哪一位要是用掉线值就置位 */
canlib_uint32_t
MSG_T
IMEOUT_VAL
;
canlib_uint32_t
MSG_T
imeOut_Val
;
/**< 报文掉线时间,单位ms */
canlib_uint32_t
MSG_Identifier
;
canlib_uint32_t
MSG_Identifier
;
/**< 报文ID值 */
MSG_CKB_ON_RECEIVE
Msg_ReceiveCBK
;
MSG_CKB_ON_RECEIVE
Msg_ReceiveCBK
;
/**< 报文中断接收回调函数,默认NULL,该回调函数处于接收中断内. */
MSG_CKB_ON_PROCESS
Msg_ProcessCBK
;
MSG_CKB_ON_PROCESS
Msg_ProcessCBK
;
/**< 报文逻辑接收回调函数,默认NULL,该回调函数处逻辑函数内 */
MSG_CKB_ON_LOST
Msg_L
OSTCBK
;
MSG_CKB_ON_LOST
Msg_L
ostCBK
;
/**< 报文逻辑掉线回调函数,默认NULL,该回调函掉线后会被执行一次 */
}
st_CANMsgAttribute
;
}
st_CANMsgAttribute
;
/**@struct st_CAN_SendAttribute
* @brief 报文发送属性结构体 \n
* 定义发送报文属性
*/
typedef
struct
{
canlib_uint32_t
u32MsgID
;
/**< 报文发送ID */
canlib_uint32_t
u32MsgCycle
;
/**< 报文发送周期,单位是us */
canlib_uint32_t
u32MsgCycleOffset
;
/**< 报文发送周期偏移量,定时器计时初值 */
canlib_uint32_t
u32InitSendCnt
;
/**< 报文发送初始次数 */
canlib_uint8_t
u8MsgSTD_EXT
;
/**< 报文类型是标准帧还是扩展帧 标准帧0 扩展帧1 */
canlib_uint8_t
u8MsgPro
;
/**< 报文发送优先级,使用哪个buffer发送 */
canlib_uint8_t
u8MsgDLC
;
/**< 报文发送的长度,默认8 */
canlib_uint8_t
u8TXMsgType
;
/**< 报文发送的类型,周期帧,事件帧,周期事件帧 */
pfnMsgBufferSet
MsgBufferSet
;
/**< 报文发送buffer填充函数,报文发送前会调用此函数从外部加载发送值 */
pfnMsgSuccess
MsgSuccess
;
/**< 报文发送成功回调函数 */
}
st_CAN_SendAttribute
;
/**@struct st_CAN_Msg
* @brief 报文发送结构体 \n
* 定义报文发送结构的信息
*/
typedef
struct
{
canlib_uint32_t
MsgID
;
/**< 报文发送ID */
canlib_uint8_t
MsgStd
;
/**< 报文发送标准帧/扩展帧 */
canlib_uint8_t
MsgRTR
;
/**< 报文发送数据帧/远程帧 默认0 */
canlib_uint8_t
MsgDLC
;
/**< 报文发送长度 */
canlib_uint8_t
MsgPro
;
/**< 报文发送优先级,对应使用buffer */
canlib_uint8_t
Msg
[
8
];
/**< 报文发送数据buffer */
}
st_CAN_Msg
;
typedef
canlib_uint8_t
(
*
HAL_CAN_Send
)(
st_CAN_Msg
*
Msg
);
/**@struct st_CANMsgStruct
* @brief 内部使用 \n
* 内容不明
*/
typedef
struct
{
canlib_uint8_t
AnalyzeMsg
[
8u
];
canlib_uint8_t
ReceiveBuf
[
8u
];
volatile
canlib_uint8_t
CAN_Busy
;
volatile
canlib_uint8_t
CAN_Received
;
canlib_uint8_t
CAN_Status
;
canlib_uint8_t
CAN_Reverse
;
canlib_uint32_t
CAN_Lost
;
}
st_CANMsgStruct
;
/**@struct st_CanMsgOp
* @brief 内部使用,不做讲解 \n
* 内部使用,不做讲解
*/
typedef
struct
{
st_CANMsgStruct
*
CAN_MSG_Analysis
;
const
st_CANMsgAttribute
*
pAttrubute
;
canlib_uint16_t
Total_Msg
;
canlib_uint8_t
u8CAN_RX_ENABLE
;
}
st_CanMsgOp
;
/**@struct st_CAN_SendOperation
* @brief 内部使用,不做讲解 \n
* 内部使用,不做讲解
*/
typedef
struct
typedef
struct
{
{
canlib_uint32_t
u32MsgID
;
canlib_uint32_t
u32MsgID
;
canlib_uint32_t
u32Timer
;
canlib_uint32_t
u32MsgCycle
;
canlib_uint32_t
u32MsgCycle
;
canlib_uint32_t
u32MsgCycleOffset
;
canlib_uint32_t
u32SendCnt
;
canlib_uint32_t
u32InitSendCnt
;
canlib_uint8_t
u8MsgSTD_EXT
;
canlib_uint8_t
u8MsgSTD_EXT
;
canlib_uint8_t
u8MsgPro
;
canlib_uint8_t
u8MsgPro
;
canlib_uint8_t
u8MsgDLC
;
canlib_uint8_t
u8TXMsgType
;
canlib_uint8_t
u8TXMsgType
;
pfnMsgBufferSet
MsgBufferSet
;
canlib_uint8_t
u8MsgRet
;
pfnMsgSuccess
MsgSuccess
;
canlib_uint8_t
u8MsgBuff
[
8u
];
}
st_CAN_SendAttribute
;
canlib_uint16_t
u16MsgDLC
;
typedef
struct
canlib_uint16_t
u16TXMsgDIMcounter
;
{
}
st_CAN_SendOperation
;
union
/**@struct st_CanMsgTxOp
{
* @brief 内部使用,不做讲解 \n
canlib_uint32_t
word_msg
[
2
];
* 内部使用,不做讲解
canlib_uint8_t
Msg
[
8
];
*/
}
sig
;
}
st_CAN_MsgBuff
;
extern
st_CAN_MsgBuff
Load_AttrBuff
[
300
]
;
typedef
struct
typedef
struct
{
{
canlib_uint32_t
MsgID
;
const
st_CAN_SendAttribute
*
pCAN_SendAttribute
;
canlib_uint8_t
MsgStd
;
st_CAN_SendOperation
*
CanMsg
;
canlib_uint8_t
MsgRTR
;
canlib_uint16_t
Total_Msg
;
canlib_uint8_t
MsgDLC
;
HAL_CAN_Send
Can_Write
;
canlib_uint8_t
MsgPro
;
canlib_uint8_t
u8CAN_TX_ENABLE
;
canlib_uint8_t
Msg
[
8
];
}
st_CanMsgTxOp
;
}
st_CAN_Msg
;
extern
void
CAN_RX_SetEnable
(
st_CanMsgOp
*
CanRXMsgOp
,
CAN_RX_Status_t
RX_enable
);
typedef
canlib_uint8_t
(
*
HAL_CAN_Send
)(
st_CAN_Msg
*
Msg
);
extern
CAN_RX_Status_t
CAN_RX_ReadEnableSts
(
st_CanMsgOp
*
CanRXMsgOp
);
extern
void
CAN_RX_SetEnable
(
canlib_uint8_t
RX_enable
);
extern
void
CAN_TX_SetEnable
(
st_CanMsgTxOp
*
CanMsgTxOp
,
CAN_TX_Status_t
TX_enable
);
extern
canlib_uint8_t
CAN_RX_ReadEnableSts
(
void
);
extern
CAN_TX_Status_t
CAN_TX_ReadEnableSts
(
st_CanMsgTxOp
*
CanMsgTxOp
);
extern
void
CAN_TX_SetEnable
(
canlib_uint8_t
TX_enable
);
extern
void
Can_Write_Fun
(
st_CanMsgTxOp
*
CanMsgTxOp
,
canlib_uint32_t
u32CbkCycle
);
extern
canlib_uint8_t
CAN_TX_ReadEnableSts
(
void
);
extern
CAN_FUNC_ERR_t
Can_Msg_Tx_Overwrite
(
st_CanMsgTxOp
*
CanMsgTxOp
,
canlib_uint32_t
u32TxMsgIdx
,
canlib_uint16_t
u16TxMSgDIMcounter
,
canlib_uint32_t
u32TxMsgCycle
);
extern
CAN_FUNC_ERR_t
Can_TX_BuffInit
(
st_CanMsgTxOp
*
CanMsgTxOp
,
const
st_CAN_SendAttribute
*
Array
,
canlib_uint16_t
length
,
HAL_CAN_Send
pfunc
);
extern
void
Can_Write_Fun
(
canlib_uint32_t
u32CbkCycle
);
extern
void
Can_Msg_TX_SUCCESS
(
st_CanMsgTxOp
*
CanMsgTxOp
,
canlib_uint32_t
u32TxMsgIdx
);
extern
CAN_FUNC_ERR_t
Can_Msg_Tx_Overwrite
(
canlib_uint32_t
u32TxMsgIdx
,
canlib_uint16_t
u16TxMSgDIMcounter
,
canlib_uint32_t
u32TxMsgCycle
);
extern
CAN_FUNC_ERR_t
Can_Msg_TX_FastInitCycle
(
st_CanMsgTxOp
*
CanMsgTxOp
,
canlib_uint32_t
u32TxMsgIdx
,
canlib_uint32_t
CurTimerCnt
);
extern
CAN_FUNC_ERR_t
Can_TX_BuffInit
(
canlib_uint8_t
*
MemSpace
,
const
st_CAN_SendAttribute
*
Array
,
canlib_uint16_t
length
,
HAL_CAN_Send
pfunc
);
extern
void
Can_Msg_TX_SUCCESS
(
canlib_uint32_t
u32TxMsgIdx
);
extern
void
Can_RX_BuffInit
(
st_CanMsgOp
*
CanRXMsgOp
,
const
st_CANMsgAttribute
*
array
,
canlib_uint16_t
length
);
extern
CAN_FUNC_ERR_t
Can_Msg_TX_FastInitCycle
(
canlib_uint32_t
u32TxMsgIdx
,
canlib_uint32_t
CurTimerCnt
);
extern
void
CanMSg_XMS_Analysis
(
st_CanMsgOp
*
CanRXMsgOp
,
canlib_uint16_t
CbkCycle
);
extern
void
Co_Can_Buff_Set
(
st_CanMsgOp
*
CanRXMsgOp
,
canlib_uint16_t
MsgID
,
canlib_uint8_t
m_DLC
,
canlib_uint8_t
Msg
[]);
extern
void
Can_RX_BuffInit
(
canlib_uint8_t
*
memSpace
,
const
st_CANMsgAttribute
*
array
,
canlib_uint16_t
length
);
extern
canlib_uint8_t
CAN_MSG_Status
(
st_CanMsgOp
*
CanRXMsgOp
,
canlib_uint16_t
MsgID
);
extern
void
CanMSg_XMS_Analysis
(
canlib_uint16_t
CbkCycle
);
extern
canlib_uint8_t
CAN_MSG_Read
(
st_CanMsgOp
*
CanRXMsgOp
,
canlib_uint16_t
MsgIdx
,
canlib_uint8_t
BuffIdx
);
extern
void
Co_Can_Buff_Set
(
canlib_uint16_t
MsgID
,
canlib_uint8_t
m_DLC
,
canlib_uint8_t
Msg
[]);
extern
void
Can_RX_ResetAllTimer
(
st_CanMsgOp
*
CanRXMsgOp
);
extern
canlib_uint8_t
CAN_MSG_Status
(
canlib_uint16_t
MsgID
);
extern
void
Can_RX_ResetTimer
(
st_CanMsgOp
*
CanRXMsgOp
,
canlib_uint16_t
idx
);
extern
canlib_uint8_t
CAN_MSG_Read
(
canlib_uint16_t
MsgIdx
,
canlib_uint8_t
BuffIdx
);
extern
canlib_uint32_t
CAN_RX_Get_TimeStamp
(
st_CanMsgOp
*
CanRXMsgOp
,
canlib_uint16_t
MsgIdx
);
extern
void
Can_RX_ResetAllTimer
(
void
);
extern
void
Can_RX_ResetTimer
(
canlib_uint16_t
idx
);
extern
canlib_uint32_t
Read_CAN_RX_Version
(
void
);
extern
canlib_uint32_t
Read_CAN_RX_Version
(
void
);
extern
canlib_uint32_t
Read_CAN_TX_Version
(
void
);
extern
canlib_uint32_t
Read_CAN_TX_Version
(
void
);
extern
void
CAN_TX_DiagCtrlEnable
(
canlib_uint8
_t
TX_enable
);
extern
void
CAN_TX_DiagCtrlEnable
(
st_CanMsgTxOp
*
CanMsgTxOp
,
CAN_TX_Status
_t
TX_enable
);
extern
void
CAN_TX_DiagCtrlRelease
(
void
);
extern
void
CAN_TX_DiagCtrlRelease
(
st_CanMsgTxOp
*
CanMsgTxOp
);
extern
void
CAN_RX_DiagCtrlEnable
(
canlib_uint8
_t
RX_enable
);
extern
void
CAN_RX_DiagCtrlEnable
(
st_CanMsgOp
*
CanRXMsgOp
,
CAN_RX_Status
_t
RX_enable
);
extern
void
CAN_RX_DiagCtrlRelease
(
void
);
extern
void
CAN_RX_DiagCtrlRelease
(
st_CanMsgOp
*
CanRXMsgOp
);
#endif
#endif
YueJin_test_bench/source/Appliciation/CAN_Signal_Rx.c
View file @
4f21b111
#include "CAN_Lib.h"
#include "CAN_Lib.h"
typedef
struct
/**
{
* @file CAN_Signal_Rx.c
canlib_uint8_t
AnalyzeMsg
[
8u
];
* @brief CAN接收文件
canlib_uint8_t
ReceiveBuf
[
8u
];
* @details CAN接收文件
volatile
canlib_uint8_t
CAN_Busy
;
* @author 赵建智
volatile
canlib_uint8_t
CAN_Received
;
* @date 2022.04.25
canlib_uint8_t
CAN_Status
;
* @version V1.0
canlib_uint8_t
CAN_Reverse
;
* @copyright 赵建智
canlib_uint32_t
CAN_Lost
;
*/
}
st_CANMsgStruct
;
typedef
struct
{
st_CANMsgStruct
*
CAN_MSG_Analysis
;
const
st_CANMsgAttribute
*
pAttrubute
;
canlib_uint16_t
Total_Msg
;
}
st_CanMsgOp
;
st_CanMsgOp
CanRXMsgOp
;
#if defined(__ICCARM__)
/**< IAR ARM Compiler */
canlib_uint8_t
u8CAN_RX_ENABLE
;
#if defined(__ICCARM__)
const
char
DataStr
[]
=
{
__DATE__
};
const
char
DataStr
[]
=
{
__DATE__
};
const
char
TimeStr
[]
=
{
__TIME__
};
const
char
TimeStr
[]
=
{
__TIME__
};
#elif defined(__ghs__)
#elif defined(__ghs__)
/**< Green Hills ARM Compiler */
const
char
DataStr
[]
=
{
__DATE__
};
const
char
DataStr
[]
=
{
__DATE__
};
const
char
TimeStr
[]
=
{
__TIME__
};
const
char
TimeStr
[]
=
{
__TIME__
};
#elif defined(__GNUC__)
#elif defined(__GNUC__)
/**< GNU Compiler Collection */
const
char
DataStr
[]
=
{
__DATE__
};
const
char
TimeStr
[]
=
{
__TIME__
};
#elif defined(__DCC__)
/**< Wind River Diab Compiler */
const
char
DataStr
[]
=
{
__DATE__
};
const
char
TimeStr
[]
=
{
__TIME__
};
#elif defined(__ARMCC_VERSION)
/**< ARMC Compiler */
const
char
DataStr
[]
=
{
__DATE__
};
const
char
TimeStr
[]
=
{
__TIME__
};
#elif defined(__HC12__)
/**< Codewarrior Compiler */
const
char
DataStr
[]
=
{
__DATE__
};
const
char
TimeStr
[]
=
{
__TIME__
};
#else
/**< VScode */
const
char
DataStr
[]
=
{
__DATE__
};
const
char
DataStr
[]
=
{
__DATE__
};
const
char
TimeStr
[]
=
{
__TIME__
};
const
char
TimeStr
[]
=
{
__TIME__
};
#else
#endif
#endif
void
CAN_RX_SetEnable
(
canlib_uint8_t
RX_enable
)
#if defined(__ICCARM__)
/**< IAR ARM Compiler */
const
char
Cur_RX_Module_Version
[]
=
{
"RX_VER=V1.0.0"
};
#elif defined(__ghs__)
/**< Green Hills ARM Compiler */
const
char
Cur_RX_Module_Version
[]
=
{
"RX_VER=V1.0.0"
};
#elif defined(__GNUC__)
/**< GNU Compiler Collection */
const
char
Cur_RX_Module_Version
[]
=
{
"RX_VER=V1.0.0"
};
#elif defined(__DCC__)
/**< Wind River Diab Compiler */
const
char
Cur_RX_Module_Version
[]
=
{
"RX_VER=V1.0.0"
};
#elif defined(__ARMCC_VERSION)
/**< ARMC Compiler */
const
char
Cur_RX_Module_Version
[]
=
{
"RX_VER=V1.0.0"
};
#elif defined(__HC12__)
/**< Codewarrior Compiler */
const
char
Cur_RX_Module_Version
[]
=
{
"RX_VER=V1.0.0"
};
#else
/**< VScode */
const
char
Cur_RX_Module_Version
[]
=
{
"RX_VER=V1.0.0"
};
#endif
/**
* @brief CAN报文接收使能控制
* @param[in] CanRXMsgOp 报文接收操作对象指针, 每路can都应有独立的结构体指针
* @param[in] RX_enable 报文接收状态,默认是0x00
* - CAN_N_RX_Enable 报文允许接收
* - CAN_N_RX_Disable 报文禁止接收
* @warning
*
* 示例
@code
CAN_RX_SetEnable(&CAN_CH0_CanMsgOp,CAN_N_RX_Enable);
@endcode
*
* @since 1.0.1
*/
void
CAN_RX_SetEnable
(
st_CanMsgOp
*
CanRXMsgOp
,
CAN_RX_Status_t
RX_enable
)
{
{
if
(
(
u8CAN_RX_ENABLE
&
0x80u
)
==
0x80u
)
if
(
(
CanRXMsgOp
->
u8CAN_RX_ENABLE
&
0x80u
)
==
0x80u
)
{
{
}
}
else
else
{
{
u8CAN_RX_ENABLE
=
RX_enable
;
CanRXMsgOp
->
u8CAN_RX_ENABLE
=
(
canlib_uint8_t
)
RX_enable
;
}
}
}
}
canlib_uint8_t
CAN_RX_ReadEnableSts
(
void
)
/**
* @brief CAN报文接收状态读取
* @param[in] CanRXMsgOp 报文接收操作对象指针, 每路can都应有独立的结构体指针
* @return 当前CAN通道RX状态
* - CAN_N_RX_Enable 报文允许接收
* - CAN_N_RX_Disable 报文禁止接收
* @warning None
*
* 示例
@code
CAN_RX_Status_t Rx_Statis = CAN_RX_ReadEnableSts(&CAN_CH0_CanMsgOp);
@endcode
*
* @since 1.0.1
*/
CAN_RX_Status_t
CAN_RX_ReadEnableSts
(
st_CanMsgOp
*
CanRXMsgOp
)
{
{
return
u8CAN_RX_ENABLE
;
return
(
CAN_RX_Status_t
)
CanRXMsgOp
->
u8CAN_RX_ENABLE
;
}
}
void
Can_RX_BuffInit
(
canlib_uint8_t
*
memSpace
,
const
st_CANMsgAttribute
*
array
,
canlib_uint16_t
length
)
/**
* @brief CAN报文接收模块初始化
* @param[in] CanRXMsgOp 报文接收操作对象指针, 每路can都应有独立的结构体指针
* @param[in] array 报文接收属性列表,按CAN通道区分,各自独立
* @param[in] length 接收报文总数量,按CAN通道区分,各自独立
* @warning None
*
* 示例
@code
#pragma alignvar(8)
uint32_t pRXBuff [ CAN_RX_MSG_Block * ID_TOTAL_MAX ];
void COM_CAN_Init(void)
{
memset(pRXBuff, 0, sizeof(pRXBuff));
CAN_CH0_CanMsgOp.CAN_MSG_Analysis=pRXBuff;
Can_RX_BuffInit(&CAN_CH0_CanMsgOp, CAN_CH0_CAN_MSG_CONST_ARRAY, CAN_CH0_ID_TOTAL_MAX);
}
@endcode
*
* @since 1.0.0
*/
void
Can_RX_BuffInit
(
st_CanMsgOp
*
CanRXMsgOp
,
const
st_CANMsgAttribute
*
array
,
canlib_uint16_t
length
)
{
{
canlib_uint16_t
i
;
canlib_uint16_t
i
;
canlib_uint8_t
j
;
canlib_uint8_t
j
;
CanRXMsgOp
.
pAttrubute
=
array
;
CanRXMsgOp
->
pAttrubute
=
array
;
CanRXMsgOp
.
CAN_MSG_Analysis
=
(
st_CANMsgStruct
*
)((
void
*
)
memSpace
);
/* CanRXMsgOp->CAN_MSG_Analysis = ( st_CANMsgStruct * )(( void * )memSpace); */
CanRXMsgOp
.
Total_Msg
=
length
;
CanRXMsgOp
->
Total_Msg
=
length
;
for
(
i
=
0u
;
i
<
CanRXMsgOp
.
Total_Msg
;
i
++
)
for
(
i
=
0u
;
i
<
CanRXMsgOp
->
Total_Msg
;
i
++
)
{
{
for
(
j
=
0u
;
j
<
8u
;
j
++
)
for
(
j
=
0u
;
j
<
8u
;
j
++
)
{
{
CanRXMsgOp
.
CAN_MSG_Analysis
[
i
].
AnalyzeMsg
[
j
]
=
CanRXMsgOp
.
pAttrubute
[
i
].
INIT
_Aarry
[
j
];
CanRXMsgOp
->
CAN_MSG_Analysis
[
i
].
AnalyzeMsg
[
j
]
=
CanRXMsgOp
->
pAttrubute
[
i
].
Init
_Aarry
[
j
];
CanRXMsgOp
.
CAN_MSG_Analysis
[
i
].
ReceiveBuf
[
j
]
=
CanRXMsgOp
.
pAttrubute
[
i
].
INIT
_Aarry
[
j
];
CanRXMsgOp
->
CAN_MSG_Analysis
[
i
].
ReceiveBuf
[
j
]
=
CanRXMsgOp
->
pAttrubute
[
i
].
Init
_Aarry
[
j
];
}
}
CanRXMsgOp
.
CAN_MSG_Analysis
[
i
].
CAN_Busy
=
0U
;
CanRXMsgOp
->
CAN_MSG_Analysis
[
i
].
CAN_Busy
=
0U
;
CanRXMsgOp
.
CAN_MSG_Analysis
[
i
].
CAN_Received
=
0U
;
CanRXMsgOp
->
CAN_MSG_Analysis
[
i
].
CAN_Received
=
0U
;
CanRXMsgOp
.
CAN_MSG_Analysis
[
i
].
CAN_Status
=
0U
;
CanRXMsgOp
->
CAN_MSG_Analysis
[
i
].
CAN_Status
=
0U
;
CanRXMsgOp
.
CAN_MSG_Analysis
[
i
].
CAN_Reverse
=
0U
;
CanRXMsgOp
->
CAN_MSG_Analysis
[
i
].
CAN_Reverse
=
0U
;
CanRXMsgOp
.
CAN_MSG_Analysis
[
i
].
CAN_Lost
=
0U
;
CanRXMsgOp
->
CAN_MSG_Analysis
[
i
].
CAN_Lost
=
0U
;
}
}
u8CAN_RX_ENABLE
=
0u
;
CanRXMsgOp
->
u8CAN_RX_ENABLE
=
0u
;
}
}
/**
void
CanMSg_XMS_Analysis
(
canlib_uint16_t
CbkCycle
)
* @brief CAN报文接收模块逻辑处理
* @param[in] CanRXMsgOp 报文接收操作对象指针, 每路can都应有独立的结构体指针
* @param[in] CbkCycle 报文接收模块调用周期,单位是ms
* @warning None
*
* 示例
@code
CanMSg_XMS_Analysis(&CAN_CH0_CanMsgOp,5u);
@endcode
*
* @since 1.0.0
*/
void
CanMSg_XMS_Analysis
(
st_CanMsgOp
*
CanRXMsgOp
,
canlib_uint16_t
CbkCycle
)
{
{
canlib_uint16_t
i
;
canlib_uint16_t
i
;
canlib_uint8_t
j
;
canlib_uint8_t
j
;
if
(
(
u8CAN_RX_ENABLE
&
0x7fu
)
==
0x00u
)
if
(
(
CanRXMsgOp
->
u8CAN_RX_ENABLE
&
0x7fu
)
==
0x00u
)
{
{
for
(
i
=
0u
;
i
<
CanRXMsgOp
.
Total_Msg
;
i
++
)
for
(
i
=
0u
;
i
<
CanRXMsgOp
->
Total_Msg
;
i
++
)
{
{
if
(
CanRXMsgOp
.
CAN_MSG_Analysis
[
i
].
CAN_Received
==
1u
)
if
(
CanRXMsgOp
->
CAN_MSG_Analysis
[
i
].
CAN_Received
==
1u
)
{
{
CanRXMsgOp
.
CAN_MSG_Analysis
[
i
].
CAN_Busy
=
1u
;
CanRXMsgOp
->
CAN_MSG_Analysis
[
i
].
CAN_Busy
=
1u
;
for
(
j
=
0u
;
j
<
8u
;
j
++
)
for
(
j
=
0u
;
j
<
8u
;
j
++
)
{
{
CanRXMsgOp
.
CAN_MSG_Analysis
[
i
].
AnalyzeMsg
[
j
]
=
CanRXMsgOp
.
CAN_MSG_Analysis
[
i
].
ReceiveBuf
[
j
];
CanRXMsgOp
->
CAN_MSG_Analysis
[
i
].
AnalyzeMsg
[
j
]
=
CanRXMsgOp
->
CAN_MSG_Analysis
[
i
].
ReceiveBuf
[
j
];
}
}
CanRXMsgOp
.
CAN_MSG_Analysis
[
i
].
CAN_Busy
=
0u
;
CanRXMsgOp
->
CAN_MSG_Analysis
[
i
].
CAN_Busy
=
0u
;
CanRXMsgOp
.
CAN_MSG_Analysis
[
i
].
CAN_Received
=
0u
;
CanRXMsgOp
->
CAN_MSG_Analysis
[
i
].
CAN_Received
=
0u
;
CanRXMsgOp
.
CAN_MSG_Analysis
[
i
].
CAN_Lost
=
0u
;
CanRXMsgOp
->
CAN_MSG_Analysis
[
i
].
CAN_Lost
=
0u
;
CanRXMsgOp
.
CAN_MSG_Analysis
[
i
].
CAN_Status
=
0u
;
CanRXMsgOp
->
CAN_MSG_Analysis
[
i
].
CAN_Status
=
0u
;
if
(
CanRXMsgOp
.
pAttrubute
[
i
].
Msg_ProcessCBK
!=
((
void
*
)
0
)
)
if
(
CanRXMsgOp
->
pAttrubute
[
i
].
Msg_ProcessCBK
!=
((
void
*
)
0
)
)
{
{
CanRXMsgOp
.
pAttrubute
[
i
].
Msg_ProcessCBK
(
CanRXMsgOp
.
CAN_MSG_Analysis
[
i
].
AnalyzeMsg
);
CanRXMsgOp
->
pAttrubute
[
i
].
Msg_ProcessCBK
(
CanRXMsgOp
->
CAN_MSG_Analysis
[
i
].
AnalyzeMsg
);
}
}
}
}
if
(
CanRXMsgOp
->
CAN_MSG_Analysis
[
i
].
CAN_Lost
<=
0xFFFFFF00UL
)
{
CanRXMsgOp
->
CAN_MSG_Analysis
[
i
].
CAN_Lost
+=
CbkCycle
;
if
(
(
CanRXMsgOp
.
CAN_MSG_Analysis
[
i
].
CAN_Lost
>=
CanRXMsgOp
.
pAttrubute
[
i
].
MSG_TIMEOUT_VAL
)
&&
(
CanRXMsgOp
.
CAN_MSG_Analysis
[
i
].
CAN_Status
!=
0x55U
)
)
if
(
(
CanRXMsgOp
->
CAN_MSG_Analysis
[
i
].
CAN_Lost
>=
CanRXMsgOp
->
pAttrubute
[
i
].
MSG_TimeOut_Val
)
&&
(
CanRXMsgOp
->
CAN_MSG_Analysis
[
i
].
CAN_Status
!=
0x55U
)
)
{
{
CanRXMsgOp
.
CAN_MSG_Analysis
[
i
].
CAN_Status
=
0x55U
;
CanRXMsgOp
->
CAN_MSG_Analysis
[
i
].
CAN_Status
=
0x55U
;
for
(
j
=
0u
;
j
<
8u
;
j
++
)
for
(
j
=
0u
;
j
<
8u
;
j
++
)
{
{
CanRXMsgOp
.
CAN_MSG_Analysis
[
i
].
AnalyzeMsg
[
j
]
&=
CanRXMsgOp
.
pAttrubute
[
i
].
MASK
_Array
[
j
];
CanRXMsgOp
->
CAN_MSG_Analysis
[
i
].
AnalyzeMsg
[
j
]
&=
CanRXMsgOp
->
pAttrubute
[
i
].
Mask
_Array
[
j
];
CanRXMsgOp
.
CAN_MSG_Analysis
[
i
].
AnalyzeMsg
[
j
]
|=
CanRXMsgOp
.
pAttrubute
[
i
].
TIMEOUT
_Array
[
j
];
CanRXMsgOp
->
CAN_MSG_Analysis
[
i
].
AnalyzeMsg
[
j
]
|=
CanRXMsgOp
->
pAttrubute
[
i
].
TimeOut
_Array
[
j
];
}
}
if
(
CanRXMsgOp
.
pAttrubute
[
i
].
Msg_LOST
CBK
!=
((
void
*
)
0
)
)
if
(
CanRXMsgOp
->
pAttrubute
[
i
].
Msg_Lost
CBK
!=
((
void
*
)
0
)
)
{
{
CanRXMsgOp
.
pAttrubute
[
i
].
Msg_LOSTCBK
(
CanRXMsgOp
.
CAN_MSG_Analysis
[
i
].
AnalyzeMsg
);
CanRXMsgOp
->
pAttrubute
[
i
].
Msg_LostCBK
(
CanRXMsgOp
->
CAN_MSG_Analysis
[
i
].
AnalyzeMsg
);
}
}
}
}
else
else
{
{
if
(
CanRXMsgOp
.
CAN_MSG_Analysis
[
i
].
CAN_Lost
<
CanRXMsgOp
.
pAttrubute
[
i
].
MSG_TIMEOUT_VAL
)
/* if ( CanRXMsgOp->CAN_MSG_Analysis [ i ].CAN_Lost < CanRXMsgOp->pAttrubute [ i ].MSG_TimeOut_Val
)
{
{
CanRXMsgOp
.
CAN_MSG_Analysis
[
i
].
CAN_Lost
+=
CbkCycle
;
CanRXMsgOp->CAN_MSG_Analysis [ i ].CAN_Lost += CbkCycle;
} */
}
}
}
}
}
}
}
}
}
}
/**
void
Co_Can_Buff_Set
(
canlib_uint16_t
MsgID
,
canlib_uint8_t
m_DLC
,
canlib_uint8_t
Msg
[])
* @brief CAN报文接收函数,放在接收中断内
* @param[in] CanRXMsgOp 报文接收操作对象指针, 每路can都应有独立的结构体指针
* @param[in] MsgID 报文索引序号,非ID,配合ID转换函数使用.
* @param[in] m_DLC 报文长度,默认填8
* @param[in] Msg 报文数据buffer.
* @warning 不可直接传入ID.
*
* 示例
@code
Co_Can_Buff_Set(&CAN_CH0_CanMsgOp,Co_Can_ConvertSubID_CAN_CH0(m_id), m_dlc, m_Msg);
@endcode
*
* @since 1.0.0
*/
void
Co_Can_Buff_Set
(
st_CanMsgOp
*
CanRXMsgOp
,
canlib_uint16_t
MsgID
,
canlib_uint8_t
m_DLC
,
canlib_uint8_t
Msg
[])
{
{
canlib_uint8_t
i
;
canlib_uint8_t
i
;
canlib_uint16_t
u16ConverIdx
;
canlib_uint16_t
u16ConverIdx
;
u16ConverIdx
=
MsgID
;
u16ConverIdx
=
MsgID
;
if
(
u16ConverIdx
<
CanRXMsgOp
.
Total_Msg
)
if
(
u16ConverIdx
<
CanRXMsgOp
->
Total_Msg
)
{
{
if
(
CanRXMsgOp
.
CAN_MSG_Analysis
[
u16ConverIdx
].
CAN_Busy
==
0u
)
if
(
CanRXMsgOp
->
CAN_MSG_Analysis
[
u16ConverIdx
].
CAN_Busy
==
0u
)
{
{
for
(
i
=
0u
;
i
<
8u
;
i
++
)
for
(
i
=
0u
;
i
<
8u
;
i
++
)
{
{
CanRXMsgOp
.
CAN_MSG_Analysis
[
u16ConverIdx
].
ReceiveBuf
[
i
]
=
Msg
[
i
];
CanRXMsgOp
->
CAN_MSG_Analysis
[
u16ConverIdx
].
ReceiveBuf
[
i
]
=
Msg
[
i
];
}
}
CanRXMsgOp
.
CAN_MSG_Analysis
[
u16ConverIdx
].
CAN_Received
=
1u
;
CanRXMsgOp
->
CAN_MSG_Analysis
[
u16ConverIdx
].
CAN_Received
=
1u
;
if
(
CanRXMsgOp
.
pAttrubute
[
u16ConverIdx
].
Msg_ReceiveCBK
!=
((
void
*
)
0
)
)
if
(
CanRXMsgOp
->
pAttrubute
[
u16ConverIdx
].
Msg_ReceiveCBK
!=
((
void
*
)
0
)
)
{
{
CanRXMsgOp
.
pAttrubute
[
u16ConverIdx
].
Msg_ReceiveCBK
(
CanRXMsgOp
.
CAN_MSG_Analysis
[
u16ConverIdx
].
ReceiveBuf
);
CanRXMsgOp
->
pAttrubute
[
u16ConverIdx
].
Msg_ReceiveCBK
(
CanRXMsgOp
->
CAN_MSG_Analysis
[
u16ConverIdx
].
ReceiveBuf
);
}
}
}
}
}
}
}
}
/**
canlib_uint8_t
CAN_MSG_Read
(
canlib_uint16_t
MsgIdx
,
canlib_uint8_t
BuffIdx
)
* @brief CAN报文buffer数据读取
* @param[in] CanRXMsgOp 报文接收操作对象指针, 每路can都应有独立的结构体指针
* @param[in] MsgIdx 报文索引序号,非ID,使用枚举的内容.
* @param[in] BuffIdx 报文数组索引0-7
* @warning 内部使用,外部不使用
*
* 示例
@code
canlib_uint8_t Ret = CAN_MSG_Read(&CAN_CH0_CanMsgOp , 10u, 5u);
@endcode
*
* @since 1.0.0
*/
canlib_uint8_t
CAN_MSG_Read
(
st_CanMsgOp
*
CanRXMsgOp
,
canlib_uint16_t
MsgIdx
,
canlib_uint8_t
BuffIdx
)
{
{
canlib_uint8_t
ret
=
0u
;
canlib_uint8_t
ret
=
0u
;
if
(
MsgIdx
<
CanRXMsgOp
.
Total_Msg
)
if
(
MsgIdx
<
CanRXMsgOp
->
Total_Msg
)
{
{
if
(
BuffIdx
<
8u
)
if
(
BuffIdx
<
8u
)
{
{
ret
=
CanRXMsgOp
.
CAN_MSG_Analysis
[
MsgIdx
].
AnalyzeMsg
[
BuffIdx
];
ret
=
CanRXMsgOp
->
CAN_MSG_Analysis
[
MsgIdx
].
AnalyzeMsg
[
BuffIdx
];
}
}
else
else
{
{
...
@@ -164,13 +275,28 @@ canlib_uint8_t CAN_MSG_Read(canlib_uint16_t MsgIdx, canlib_uint8_t BuffIdx)
...
@@ -164,13 +275,28 @@ canlib_uint8_t CAN_MSG_Read(canlib_uint16_t MsgIdx, canlib_uint8_t BuffIdx)
}
}
return
ret
;
return
ret
;
}
}
/**
canlib_uint8_t
CAN_MSG_Status
(
canlib_uint16_t
MsgID
)
* @brief CAN报文ID当前状态读取
* @param[in] CanRXMsgOp 报文接收操作对象指针, 每路can都应有独立的结构体指针
* @param[in] MsgID 报文索引序号,非ID,使用枚举的内容.
* @return 当前报文状态
* - 0x00 报文在线
* - 0x55 报文掉线
* @warning None
*
* 示例
@code
canlib_uint8_t Ret = CAN_MSG_Status(&CAN_CH0_CanMsgOp , 3u);
@endcode
*
* @since 1.0.0
*/
canlib_uint8_t
CAN_MSG_Status
(
st_CanMsgOp
*
CanRXMsgOp
,
canlib_uint16_t
MsgID
)
{
{
canlib_uint8_t
ret
;
canlib_uint8_t
ret
;
if
(
MsgID
<
CanRXMsgOp
.
Total_Msg
)
if
(
MsgID
<
CanRXMsgOp
->
Total_Msg
)
{
{
ret
=
(
canlib_uint8_t
)
CanRXMsgOp
.
CAN_MSG_Analysis
[
MsgID
].
CAN_Status
;
ret
=
(
canlib_uint8_t
)
CanRXMsgOp
->
CAN_MSG_Analysis
[
MsgID
].
CAN_Status
;
}
}
else
else
{
{
...
@@ -178,37 +304,113 @@ canlib_uint8_t CAN_MSG_Status(canlib_uint16_t MsgID)
...
@@ -178,37 +304,113 @@ canlib_uint8_t CAN_MSG_Status(canlib_uint16_t MsgID)
}
}
return
ret
;
return
ret
;
}
}
/**
void
Can_RX_ResetAllTimer
(
void
)
* @brief CAN报文接收模块复位所有掉线时间,重新计时
* @param[in] CanRXMsgOp 报文接收操作对象指针, 每路can都应有独立的结构体指针
* @warning None
*
* 示例
@code
Can_RX_ResetAllTimer(&CAN_CH0_CanMsgOp);
@endcode
*
* @since 1.0.0
*/
void
Can_RX_ResetAllTimer
(
st_CanMsgOp
*
CanRXMsgOp
)
{
{
canlib_uint16_t
i
;
canlib_uint16_t
i
;
for
(
i
=
0u
;
i
<
CanRXMsgOp
.
Total_Msg
;
i
++
)
for
(
i
=
0u
;
i
<
CanRXMsgOp
->
Total_Msg
;
i
++
)
{
{
CanRXMsgOp
.
CAN_MSG_Analysis
[
i
].
CAN_Lost
=
0U
;
CanRXMsgOp
->
CAN_MSG_Analysis
[
i
].
CAN_Lost
=
0U
;
}
}
}
}
/**
void
Can_RX_ResetTimer
(
canlib_uint16_t
idx
)
* @brief CAN报文接收模块复位所有掉线时间,重新计时
* @param[in] CanRXMsgOp 报文接收操作对象指针, 每路can都应有独立的结构体指针
* @param[in] idx 报文索引序号,非ID,使用枚举的内容.
* @warning None
*
* 示例
@code
Can_RX_ResetTimer(&CAN_CH0_CanMsgOp,9u);
@endcode
*
* @since 1.0.0
*/
void
Can_RX_ResetTimer
(
st_CanMsgOp
*
CanRXMsgOp
,
canlib_uint16_t
idx
)
{
{
if
(
idx
<
CanRXMsgOp
.
Total_Msg
)
if
(
idx
<
CanRXMsgOp
->
Total_Msg
)
{
{
CanRXMsgOp
.
CAN_MSG_Analysis
[
idx
].
CAN_Lost
=
0U
;
CanRXMsgOp
->
CAN_MSG_Analysis
[
idx
].
CAN_Lost
=
0U
;
}
}
}
}
/**
canlib_uint32_t
Read_CAN_RX_Version
(
void
)
* @brief CAN报文接收模块,诊断控制
* @param[in] CanRXMsgOp 报文接收操作对象指针, 每路can都应有独立的结构体指针
* @param[in] RX_enable 模块控制状态
* - 0x00 报文接收使能
* - 0x55 报文接收关闭
* @warning None
*
* 示例
@code
CAN_RX_DiagCtrlEnable(&CAN_CH0_CanMsgOp,0x00u);
@endcode
*
* @since 1.0.0
*/
void
CAN_RX_DiagCtrlEnable
(
st_CanMsgOp
*
CanRXMsgOp
,
CAN_RX_Status_t
RX_enable
)
{
{
return
0x0004U
;
CanRXMsgOp
->
u8CAN_RX_ENABLE
=
(
canlib_uint8_t
)
RX_enable
;
CanRXMsgOp
->
u8CAN_RX_ENABLE
|=
0x80u
;
}
}
/**
void
CAN_RX_DiagCtrlEnable
(
canlib_uint8_t
RX_enable
)
* @brief CAN报文接收模块,诊断控制释放
* @param[in] CanRXMsgOp 报文接收操作对象指针, 每路can都应有独立的结构体指针
* @warning None
*
* 示例
@code
CAN_RX_DiagCtrlRelease(&CAN_CH0_CanMsgOp);
@endcode
*
* @since 1.0.0
*/
void
CAN_RX_DiagCtrlRelease
(
st_CanMsgOp
*
CanRXMsgOp
)
{
CanRXMsgOp
->
u8CAN_RX_ENABLE
&=
~
(
0x01u
<<
7
);
}
/**
* @brief CAN报文接收模块版本读取
* @warning None
*
* 示例
@code
canlib_uint32_t Ver = Read_CAN_RX_Version();
@endcode
*
* @since 1.0.1
*/
canlib_uint32_t
Read_CAN_RX_Version
(
void
)
{
{
u8CAN_RX_ENABLE
=
RX_enable
;
return
0x0006UL
;
u8CAN_RX_ENABLE
|=
0x80u
;
}
}
void
CAN_RX_DiagCtrlRelease
(
void
)
/**
* @brief CAN报文接收模块报文掉线时间戳
* @warning None
*
* 示例
@code
canlib_uint32_t CAN_ID_030 = CAN_RX_Get_TimeStamp(&CAN_CH0_CanMsgOp,3);
@endcode
*
* @since 1.0.1
*/
canlib_uint32_t
CAN_RX_Get_TimeStamp
(
st_CanMsgOp
*
CanRXMsgOp
,
canlib_uint16_t
MsgIdx
)
{
{
u8CAN_RX_ENABLE
&=
~
(
0x01u
<<
7
);
canlib_uint32_t
Ret
=
0UL
;
Ret
=
CanRXMsgOp
->
CAN_MSG_Analysis
[
MsgIdx
].
CAN_Lost
;
return
Ret
;
}
}
YueJin_test_bench/source/Appliciation/CAN_Signal_Tx.c
View file @
4f21b111
#include "CAN_Lib.h"
#include "CAN_Lib.h"
/**
* @file CAN_Signal_Tx.c
* @brief CAN发送文件
* @details CAN发送文件
* @author 赵建智
* @date 2022.04.25
* @version V1.0
* @copyright 赵建智
*/
typedef
struct
/**
{
* @brief CAN报文外发诊断控制
canlib_uint32_t
u32MsgID
;
* @param[in] CanMsgTxOp 报文发送操作对象指针, 每路can都应有独立的结构体指针
canlib_uint32_t
u32Timer
;
* @param[in] TX_enable 发送控制类型
canlib_uint32_t
u32MsgCycle
;
* @ref CAN_N_TX_Enable 使能发送
canlib_uint32_t
u32SendCnt
;
* @ref CAN_N_TX_Disable 禁止发送
canlib_uint8_t
u8MsgSTD_EXT
;
* @warning 该接口只能由诊断调用.功能部分不可使用
canlib_uint8_t
u8MsgPro
;
*
canlib_uint8_t
u8TXMsgType
;
* 示例
canlib_uint8_t
u8MsgRet
;
@code
canlib_uint8_t
u8MsgBuff
[
8u
];
CAN_TX_DiagCtrlEnable(&CAN0_TX_Option,0x55);
canlib_uint16_t
u16MsgDLC
;
@endcode
canlib_uint16_t
u16TXMsgDIMcounter
;
*
}
st_CAN_SendOperation
;
* @since 1.0.0
*/
typedef
struct
void
CAN_TX_DiagCtrlEnable
(
st_CanMsgTxOp
*
CanMsgTxOp
,
CAN_TX_Status_t
TX_enable
)
{
const
st_CAN_SendAttribute
*
pCAN_SendAttribute
;
st_CAN_SendOperation
*
CanMsg
;
canlib_uint16_t
Total_Msg
;
HAL_CAN_Send
Can_Write
;
}
st_CanMsgTxOp
;
st_CanMsgTxOp
CanMsgTxOp
;
canlib_uint8_t
u8CAN_TX_ENABLE
;
void
CAN_TX_DiagCtrlEnable
(
canlib_uint8_t
TX_enable
)
{
{
u8CAN_TX_ENABLE
=
TX_enable
;
CanMsgTxOp
->
u8CAN_TX_ENABLE
=
TX_enable
;
u8CAN_TX_ENABLE
|=
0x80u
;
CanMsgTxOp
->
u8CAN_TX_ENABLE
|=
0x80u
;
}
}
/**
void
CAN_TX_DiagCtrlRelease
(
void
)
* @brief CAN报文外发诊断释放控制
* @param[in] CanMsgTxOp 报文发送操作对象指针, 每路can都应有独立的结构体指针
*
* @warning 该接口只能由诊断调用.功能部分不可使用
*
* 示例
@code
CAN_TX_DiagCtrlRelease(&CAN0_TX_Option);
@endcode
*
* @since 1.0.0
*/
void
CAN_TX_DiagCtrlRelease
(
st_CanMsgTxOp
*
CanMsgTxOp
)
{
{
u8CAN_TX_ENABLE
&=
~
(
0x01u
<<
7
);
CanMsgTxOp
->
u8CAN_TX_ENABLE
&=
~
(
0x01u
<<
7
);
}
}
/**
void
CAN_TX_SetEnable
(
canlib_uint8_t
TX_enable
)
* @brief CAN报文外发控制
* @param[in] CanMsgTxOp 报文发送操作对象指针, 每路can都应有独立的结构体指针
* @param[in] TX_enable 报文外发状态控制
* - CAN_N_TX_Enable 使能发送
* - CAN_N_TX_Disable 禁止发送
*
* @warning None
*
* 示例
@code
CAN_TX_SetEnable(&CAN0_TX_Option,CAN_N_TX_Enable);
@endcode
*
* @since 1.0.1
*/
void
CAN_TX_SetEnable
(
st_CanMsgTxOp
*
CanMsgTxOp
,
CAN_TX_Status_t
TX_enable
)
{
{
if
(
(
u8CAN_TX_ENABLE
&
0x80u
)
==
0x80u
)
if
(
(
CanMsgTxOp
->
u8CAN_TX_ENABLE
&
0x80u
)
==
0x80u
)
{
{
}
}
else
else
{
{
u8CAN_TX_ENABLE
=
TX_enable
;
CanMsgTxOp
->
u8CAN_TX_ENABLE
=
(
canlib_uint8_t
)
TX_enable
;
}
}
}
}
/**
canlib_uint8_t
CAN_TX_ReadEnableSts
(
void
)
* @brief CAN报文外发状态读取
* @param[in] CanMsgTxOp 报文发送操作对象指针, 每路can都应有独立的结构体指针
* @return 当前CAN通道TX状态
* @ref 0X00U 禁止发送
* @ref 0X55U/0xD5 允许发送
* @warning NONE
*
* 示例
@code
CAN_TX_Status_t CAN_CH_TX_Sts = CAN_TX_ReadEnableSts(&CAN0_TX_Option);
@endcode
*
* @since 1.0.1
*/
CAN_TX_Status_t
CAN_TX_ReadEnableSts
(
st_CanMsgTxOp
*
CanMsgTxOp
)
{
{
return
u8CAN_TX_ENABLE
;
return
(
CAN_TX_Status_t
)
CanMsgTxOp
->
u8CAN_TX_ENABLE
;
}
}
/**
CAN_FUNC_ERR_t
Can_TX_BuffInit
(
canlib_uint8_t
*
MemSpace
,
const
st_CAN_SendAttribute
*
Array
,
canlib_uint16_t
length
,
HAL_CAN_Send
pfunc
)
* @brief CAN报文外发逻辑模块初始化
* @param[in] CanMsgTxOp 报文发送操作对象指针, 每路can都应有独立的结构体指针
* @param[in] Array 报文发送属性列表,按CAN通道区分,各自独立
* @param[in] length 发送报文总数量,按CAN通道区分,各自独立
* @param[in] pfunc 底层发送回调函数,每路can都应有独立的结构体指针
*
* @return 发送模块初始化结果
* - CAN_ERR_OK 初始化成功
* - CAN_ERR_ParaInit 初始化失败
*
* @warning 此函数必须先于CAN模块硬件驱动调用
*
* 示例
@code
#pragma alignvar(8)
uint32_t pTXBuff [ CAN_TX_MSG_Block * ID_TOTAL_MAX ];
void COM_CAN_Init(void)
{
memset(pTXBuff, 0, sizeof(pTXBuff));
CAN_CH0_CanMsgTxOp.CanMsg=pTXBuff;
CAN_FUNC_ERR_t CAN_CH_TX_Ret = Can_TX_BuffInit(&CAN0_TX_Option,CAN_CH0_CANSendAttr,CAN_CH0_ID_SEND_TOTAL,Can0_Write);
}
@endcode
*
* @since 1.0.0
*/
CAN_FUNC_ERR_t
Can_TX_BuffInit
(
st_CanMsgTxOp
*
CanMsgTxOp
,
const
st_CAN_SendAttribute
*
Array
,
canlib_uint16_t
length
,
HAL_CAN_Send
pfunc
)
{
{
canlib_uint8_t
i
=
0u
;
canlib_uint8_t
i
=
0u
;
canlib_uint8_t
j
=
0u
;
canlib_uint8_t
j
=
0u
;
CAN_FUNC_ERR_t
ret
=
CAN_ERR_OK
;
CAN_FUNC_ERR_t
ret
=
CAN_ERR_OK
;
CanMsgTxOp
.
pCAN_SendAttribute
=
Array
;
CanMsgTxOp
->
pCAN_SendAttribute
=
Array
;
CanMsgTxOp
.
CanMsg
=
(
st_CAN_SendOperation
*
)((
void
*
)
MemSpace
);
/* CanMsgTxOp->CanMsg = ( st_CAN_SendOperation *)(( void *)MemSpace); */
CanMsgTxOp
.
Total_Msg
=
length
;
CanMsgTxOp
->
Total_Msg
=
length
;
CanMsgTxOp
.
Can_Write
=
pfunc
;
CanMsgTxOp
->
Can_Write
=
pfunc
;
u8CAN_TX_ENABLE
=
0X00U
;
CanMsgTxOp
->
u8CAN_TX_ENABLE
=
0x00
;
//
0X00U;
for
(
i
=
0u
;
i
<
CanMsgTxOp
.
Total_Msg
;
i
++
)
for
(
i
=
0u
;
i
<
CanMsgTxOp
->
Total_Msg
;
i
++
)
{
{
CanMsgTxOp
.
CanMsg
[
i
].
u32MsgID
=
CanMsgTxOp
.
pCAN_SendAttribute
[
i
].
u32MsgID
;
CanMsgTxOp
->
CanMsg
[
i
].
u32MsgID
=
CanMsgTxOp
->
pCAN_SendAttribute
[
i
].
u32MsgID
;
CanMsgTxOp
.
CanMsg
[
i
].
u32Timer
=
CanMsgTxOp
.
pCAN_SendAttribute
[
i
].
u32MsgCycleOffset
;
CanMsgTxOp
->
CanMsg
[
i
].
u32Timer
=
CanMsgTxOp
->
pCAN_SendAttribute
[
i
].
u32MsgCycleOffset
;
CanMsgTxOp
.
CanMsg
[
i
].
u32MsgCycle
=
CanMsgTxOp
.
pCAN_SendAttribute
[
i
].
u32MsgCycle
;
CanMsgTxOp
->
CanMsg
[
i
].
u32MsgCycle
=
CanMsgTxOp
->
pCAN_SendAttribute
[
i
].
u32MsgCycle
;
CanMsgTxOp
.
CanMsg
[
i
].
u32SendCnt
=
CanMsgTxOp
.
pCAN_SendAttribute
[
i
].
u32InitSendCnt
;
CanMsgTxOp
->
CanMsg
[
i
].
u32SendCnt
=
CanMsgTxOp
->
pCAN_SendAttribute
[
i
].
u32InitSendCnt
;
CanMsgTxOp
.
CanMsg
[
i
].
u8MsgSTD_EXT
=
CanMsgTxOp
.
pCAN_SendAttribute
[
i
].
u8MsgSTD_EXT
;
CanMsgTxOp
->
CanMsg
[
i
].
u8MsgSTD_EXT
=
CanMsgTxOp
->
pCAN_SendAttribute
[
i
].
u8MsgSTD_EXT
;
CanMsgTxOp
.
CanMsg
[
i
].
u8MsgPro
=
CanMsgTxOp
.
pCAN_SendAttribute
[
i
].
u8MsgPro
;
CanMsgTxOp
->
CanMsg
[
i
].
u8MsgPro
=
CanMsgTxOp
->
pCAN_SendAttribute
[
i
].
u8MsgPro
;
CanMsgTxOp
.
CanMsg
[
i
].
u16MsgDLC
=
CanMsgTxOp
.
pCAN_SendAttribute
[
i
].
u8MsgDLC
;
CanMsgTxOp
->
CanMsg
[
i
].
u16MsgDLC
=
CanMsgTxOp
->
pCAN_SendAttribute
[
i
].
u8MsgDLC
;
CanMsgTxOp
.
CanMsg
[
i
].
u8TXMsgType
=
CanMsgTxOp
.
pCAN_SendAttribute
[
i
].
u8TXMsgType
;
CanMsgTxOp
->
CanMsg
[
i
].
u8TXMsgType
=
CanMsgTxOp
->
pCAN_SendAttribute
[
i
].
u8TXMsgType
;
CanMsgTxOp
.
CanMsg
[
i
].
u8MsgRet
=
0u
;
CanMsgTxOp
->
CanMsg
[
i
].
u8MsgRet
=
0u
;
/*
/*
发送周期是 0表示纯事件型报文 DIM counter 需要是0
发送周期是 0表示纯事件型报文 DIM counter 需要是0
...
@@ -81,26 +146,26 @@ CAN_FUNC_ERR_t Can_TX_BuffInit(canlib_uint8_t *MemSpace, const st_CAN_SendAttrib
...
@@ -81,26 +146,26 @@ CAN_FUNC_ERR_t Can_TX_BuffInit(canlib_uint8_t *MemSpace, const st_CAN_SendAttrib
1.周期报文 DIM 无意义 初始化成0
1.周期报文 DIM 无意义 初始化成0
2.周期事件型 DIM 初始化成0xffff
2.周期事件型 DIM 初始化成0xffff
*/
*/
if
(
CanMsgTxOp
.
pCAN_SendAttribute
[
i
].
u32MsgCycle
!=
0ul
)
if
(
CanMsgTxOp
->
pCAN_SendAttribute
[
i
].
u32MsgCycle
!=
0ul
)
{
{
if
(
CanMsgTxOp
.
pCAN_SendAttribute
[
i
].
u8TXMsgType
==
0u
)
if
(
CanMsgTxOp
->
pCAN_SendAttribute
[
i
].
u8TXMsgType
==
0u
)
{
{
CanMsgTxOp
.
CanMsg
[
i
].
u16TXMsgDIMcounter
=
0xffffu
;
CanMsgTxOp
->
CanMsg
[
i
].
u16TXMsgDIMcounter
=
0xffffu
;
}
}
else
else
{
{
CanMsgTxOp
.
CanMsg
[
i
].
u16TXMsgDIMcounter
=
0xffffu
;
CanMsgTxOp
->
CanMsg
[
i
].
u16TXMsgDIMcounter
=
0xffffu
;
}
}
}
}
else
else
{
{
if
(
CanMsgTxOp
.
pCAN_SendAttribute
[
i
].
u8TXMsgType
!=
0u
)
if
(
CanMsgTxOp
->
pCAN_SendAttribute
[
i
].
u8TXMsgType
!=
0u
)
{
{
CanMsgTxOp
.
CanMsg
[
i
].
u16TXMsgDIMcounter
=
0u
;
CanMsgTxOp
->
CanMsg
[
i
].
u16TXMsgDIMcounter
=
0u
;
}
}
else
else
{
{
CanMsgTxOp
.
CanMsg
[
i
].
u16TXMsgDIMcounter
=
0u
;
CanMsgTxOp
->
CanMsg
[
i
].
u16TXMsgDIMcounter
=
0u
;
/*while (1u)*/
/*while (1u)*/
{
{
ret
=
CAN_ERR_ParaInit
;
ret
=
CAN_ERR_ParaInit
;
...
@@ -111,141 +176,155 @@ CAN_FUNC_ERR_t Can_TX_BuffInit(canlib_uint8_t *MemSpace, const st_CAN_SendAttrib
...
@@ -111,141 +176,155 @@ CAN_FUNC_ERR_t Can_TX_BuffInit(canlib_uint8_t *MemSpace, const st_CAN_SendAttrib
}
}
}
}
for
(
j
=
0u
;
j
<
CanMsgTxOp
.
CanMsg
[
i
].
u16MsgDLC
;
j
++
)
for
(
j
=
0u
;
j
<
CanMsgTxOp
->
CanMsg
[
i
].
u16MsgDLC
;
j
++
)
{
{
CanMsgTxOp
.
CanMsg
[
i
].
u8MsgBuff
[
j
]
=
0u
;
CanMsgTxOp
->
CanMsg
[
i
].
u8MsgBuff
[
j
]
=
0u
;
}
}
if
(
CanMsgTxOp
.
pCAN_SendAttribute
[
i
].
MsgBufferSet
!=
((
void
*
)
0
)
)
if
(
CanMsgTxOp
->
pCAN_SendAttribute
[
i
].
MsgBufferSet
!=
((
void
*
)
0
)
)
{
{
CanMsgTxOp
.
pCAN_SendAttribute
[
i
].
MsgBufferSet
(
CanMsgTxOp
.
CanMsg
[
i
].
u8MsgBuff
);
CanMsgTxOp
->
pCAN_SendAttribute
[
i
].
MsgBufferSet
(
CanMsgTxOp
->
CanMsg
[
i
].
u8MsgBuff
);
}
}
}
}
return
ret
;
return
ret
;
}
}
/**
void
Can_Write_Fun
(
canlib_uint32_t
u32CbkCycle
)
* @brief CAN报文外发逻辑
* @param[in] CanMsgTxOp 报文发送操作对象指针, 每路can都应有独立的结构体指针
* @param[in] u32CbkCycle 报文发送逻辑调用周期,单位us.
*
* @warning 此函数必须先于CAN模块硬件驱动调用
*
* 示例
@code
Can_Write_Fun(&CAN0_TX_Option,50u);
@endcode
*
* @since 1.0.0
*/
void
Can_Write_Fun
(
st_CanMsgTxOp
*
CanMsgTxOp
,
canlib_uint32_t
u32CbkCycle
)
{
{
canlib_uint8_t
i
=
0u
;
canlib_uint8_t
i
=
0u
;
canlib_uint8_t
j
=
0u
;
canlib_uint8_t
j
=
0u
;
st_CAN_Msg
m_Msg
;
st_CAN_Msg
m_Msg
;
if
(
(
u8CAN_TX_ENABLE
&
0x7Fu
)
==
0X55U
)
if
(
(
CanMsgTxOp
->
u8CAN_TX_ENABLE
&
0x7Fu
)
==
0X55U
)
{
{
for
(
i
=
0u
;
i
<
CanMsgTxOp
.
Total_Msg
;
i
++
)
for
(
i
=
0u
;
i
<
CanMsgTxOp
->
Total_Msg
;
i
++
)
{
{
if
(
CanMsgTxOp
.
CanMsg
[
i
].
u8TXMsgType
==
0u
)
if
(
CanMsgTxOp
->
CanMsg
[
i
].
u8TXMsgType
==
0u
)
{
{
if
(
CanMsgTxOp
.
CanMsg
[
i
].
u32Timer
<
CanMsgTxOp
.
CanMsg
[
i
].
u32MsgCycle
)
if
(
CanMsgTxOp
->
CanMsg
[
i
].
u32Timer
<
CanMsgTxOp
->
CanMsg
[
i
].
u32MsgCycle
)
{
{
CanMsgTxOp
.
CanMsg
[
i
].
u32Timer
+=
u32CbkCycle
;
CanMsgTxOp
->
CanMsg
[
i
].
u32Timer
+=
u32CbkCycle
;
}
}
else
else
{
{
if
(
CanMsgTxOp
.
CanMsg
[
i
].
u32SendCnt
<=
0xffff0000ul
)
if
(
CanMsgTxOp
->
CanMsg
[
i
].
u32SendCnt
<=
0xffff0000ul
)
{
{
CanMsgTxOp
.
CanMsg
[
i
].
u32SendCnt
++
;
CanMsgTxOp
->
CanMsg
[
i
].
u32SendCnt
++
;
}
}
if
(
CanMsgTxOp
.
CanMsg
[
i
].
u8MsgRet
==
0U
)
if
(
CanMsgTxOp
->
CanMsg
[
i
].
u8MsgRet
==
0U
)
{
{
for
(
j
=
0u
;
j
<
CanMsgTxOp
.
CanMsg
[
i
].
u16MsgDLC
;
j
++
)
for
(
j
=
0u
;
j
<
CanMsgTxOp
->
CanMsg
[
i
].
u16MsgDLC
;
j
++
)
{
{
CanMsgTxOp
.
CanMsg
[
i
].
u8MsgBuff
[
j
]
=
0u
;
CanMsgTxOp
->
CanMsg
[
i
].
u8MsgBuff
[
j
]
=
0u
;
}
}
if
(
CanMsgTxOp
.
pCAN_SendAttribute
[
i
].
MsgBufferSet
!=
((
void
*
)
0
)
)
if
(
CanMsgTxOp
->
pCAN_SendAttribute
[
i
].
MsgBufferSet
!=
((
void
*
)
0
)
)
{
{
CanMsgTxOp
.
pCAN_SendAttribute
[
i
].
MsgBufferSet
(
CanMsgTxOp
.
CanMsg
[
i
].
u8MsgBuff
);
CanMsgTxOp
->
pCAN_SendAttribute
[
i
].
MsgBufferSet
(
CanMsgTxOp
->
CanMsg
[
i
].
u8MsgBuff
);
}
}
}
}
/* Below HW SEND INTERFACE */
/* Below HW SEND INTERFACE */
m_Msg
.
MsgID
=
CanMsgTxOp
.
CanMsg
[
i
].
u32MsgID
;
m_Msg
.
MsgID
=
CanMsgTxOp
->
CanMsg
[
i
].
u32MsgID
;
m_Msg
.
MsgStd
=
CanMsgTxOp
.
CanMsg
[
i
].
u8MsgSTD_EXT
;
m_Msg
.
MsgStd
=
CanMsgTxOp
->
CanMsg
[
i
].
u8MsgSTD_EXT
;
m_Msg
.
MsgRTR
=
0u
;
m_Msg
.
MsgRTR
=
0u
;
m_Msg
.
MsgDLC
=
(
canlib_uint8_t
)
CanMsgTxOp
.
CanMsg
[
i
].
u16MsgDLC
;
m_Msg
.
MsgDLC
=
(
canlib_uint8_t
)
CanMsgTxOp
->
CanMsg
[
i
].
u16MsgDLC
;
m_Msg
.
MsgPro
=
CanMsgTxOp
.
CanMsg
[
i
].
u8MsgPro
;
m_Msg
.
MsgPro
=
CanMsgTxOp
->
CanMsg
[
i
].
u8MsgPro
;
for
(
j
=
0u
;
j
<
CanMsgTxOp
.
CanMsg
[
i
].
u16MsgDLC
;
j
++
)
for
(
j
=
0u
;
j
<
CanMsgTxOp
->
CanMsg
[
i
].
u16MsgDLC
;
j
++
)
{
{
m_Msg
.
Msg
[
j
]
=
Load_AttrBuff
[
i
].
sig
.
Msg
[
j
];
m_Msg
.
Msg
[
j
]
=
CanMsgTxOp
->
CanMsg
[
i
].
u8MsgBuff
[
j
];
}
}
if
(
CanMsgTxOp
.
Can_Write
!=
((
void
*
)
0
)
)
if
(
CanMsgTxOp
->
Can_Write
!=
((
void
*
)
0
)
)
{
{
CanMsgTxOp
.
CanMsg
[
i
].
u8MsgRet
=
CanMsgTxOp
.
Can_Write
(
&
m_Msg
);
CanMsgTxOp
->
CanMsg
[
i
].
u8MsgRet
=
CanMsgTxOp
->
Can_Write
(
&
m_Msg
);
}
}
if
(
CanMsgTxOp
.
CanMsg
[
i
].
u8MsgRet
==
0U
)
if
(
CanMsgTxOp
->
CanMsg
[
i
].
u8MsgRet
==
0U
)
{
{
CanMsgTxOp
.
CanMsg
[
i
].
u32Timer
=
0u
;
CanMsgTxOp
->
CanMsg
[
i
].
u32Timer
=
0u
;
}
}
else
else
{
{
CanMsgTxOp
.
CanMsg
[
i
].
u32Timer
-=
u32CbkCycle
;
CanMsgTxOp
->
CanMsg
[
i
].
u32Timer
-=
u32CbkCycle
;
}
}
}
}
}
}
else
else
{
{
if
(
CanMsgTxOp
.
CanMsg
[
i
].
u32MsgCycle
!=
0x00ul
)
if
(
CanMsgTxOp
->
CanMsg
[
i
].
u32MsgCycle
!=
0x00ul
)
{
{
if
(
CanMsgTxOp
.
CanMsg
[
i
].
u16TXMsgDIMcounter
!=
0x00ul
)
if
(
CanMsgTxOp
->
CanMsg
[
i
].
u16TXMsgDIMcounter
!=
0x00ul
)
{
{
if
(
(
CanMsgTxOp
.
CanMsg
[
i
].
u16TXMsgDIMcounter
!=
CanMsgTxOp
.
CanMsg
[
i
].
u32SendCnt
)
||
(
CanMsgTxOp
.
CanMsg
[
i
].
u16TXMsgDIMcounter
==
0xffffu
)
)
if
(
(
CanMsgTxOp
->
CanMsg
[
i
].
u16TXMsgDIMcounter
!=
CanMsgTxOp
->
CanMsg
[
i
].
u32SendCnt
)
||
(
CanMsgTxOp
->
CanMsg
[
i
].
u16TXMsgDIMcounter
==
0xffffu
)
)
{
{
if
(
CanMsgTxOp
.
CanMsg
[
i
].
u32Timer
<
CanMsgTxOp
.
CanMsg
[
i
].
u32MsgCycle
)
if
(
CanMsgTxOp
->
CanMsg
[
i
].
u32Timer
<
CanMsgTxOp
->
CanMsg
[
i
].
u32MsgCycle
)
{
{
CanMsgTxOp
.
CanMsg
[
i
].
u32Timer
+=
u32CbkCycle
;
CanMsgTxOp
->
CanMsg
[
i
].
u32Timer
+=
u32CbkCycle
;
}
}
else
else
{
{
CanMsgTxOp
.
CanMsg
[
i
].
u32Timer
=
0u
;
CanMsgTxOp
->
CanMsg
[
i
].
u32Timer
=
0u
;
if
(
CanMsgTxOp
.
CanMsg
[
i
].
u32SendCnt
<=
0xffff0000ul
)
if
(
CanMsgTxOp
->
CanMsg
[
i
].
u32SendCnt
<=
0xffff0000ul
)
{
{
CanMsgTxOp
.
CanMsg
[
i
].
u32SendCnt
++
;
CanMsgTxOp
->
CanMsg
[
i
].
u32SendCnt
++
;
}
}
for
(
j
=
0u
;
j
<
CanMsgTxOp
.
CanMsg
[
i
].
u16MsgDLC
;
j
++
)
for
(
j
=
0u
;
j
<
CanMsgTxOp
->
CanMsg
[
i
].
u16MsgDLC
;
j
++
)
{
{
CanMsgTxOp
.
CanMsg
[
i
].
u8MsgBuff
[
j
]
=
0u
;
CanMsgTxOp
->
CanMsg
[
i
].
u8MsgBuff
[
j
]
=
0u
;
}
}
if
(
CanMsgTxOp
.
pCAN_SendAttribute
[
i
].
MsgBufferSet
!=
((
void
*
)
0
)
)
if
(
CanMsgTxOp
->
pCAN_SendAttribute
[
i
].
MsgBufferSet
!=
((
void
*
)
0
)
)
{
{
CanMsgTxOp
.
pCAN_SendAttribute
[
i
].
MsgBufferSet
(
CanMsgTxOp
.
CanMsg
[
i
].
u8MsgBuff
);
CanMsgTxOp
->
pCAN_SendAttribute
[
i
].
MsgBufferSet
(
CanMsgTxOp
->
CanMsg
[
i
].
u8MsgBuff
);
}
}
/* Below HW SEND INTERFACE */
/* Below HW SEND INTERFACE */
m_Msg
.
MsgID
=
CanMsgTxOp
.
CanMsg
[
i
].
u32MsgID
;
m_Msg
.
MsgID
=
CanMsgTxOp
->
CanMsg
[
i
].
u32MsgID
;
m_Msg
.
MsgStd
=
CanMsgTxOp
.
CanMsg
[
i
].
u8MsgSTD_EXT
;
m_Msg
.
MsgStd
=
CanMsgTxOp
->
CanMsg
[
i
].
u8MsgSTD_EXT
;
m_Msg
.
MsgRTR
=
0u
;
m_Msg
.
MsgRTR
=
0u
;
m_Msg
.
MsgDLC
=
(
canlib_uint8_t
)
CanMsgTxOp
.
CanMsg
[
i
].
u16MsgDLC
;
m_Msg
.
MsgDLC
=
(
canlib_uint8_t
)
CanMsgTxOp
->
CanMsg
[
i
].
u16MsgDLC
;
m_Msg
.
MsgPro
=
CanMsgTxOp
.
CanMsg
[
i
].
u8MsgPro
;
m_Msg
.
MsgPro
=
CanMsgTxOp
->
CanMsg
[
i
].
u8MsgPro
;
for
(
j
=
0u
;
j
<
CanMsgTxOp
.
CanMsg
[
i
].
u16MsgDLC
;
j
++
)
for
(
j
=
0u
;
j
<
CanMsgTxOp
->
CanMsg
[
i
].
u16MsgDLC
;
j
++
)
{
{
m_Msg
.
Msg
[
j
]
=
CanMsgTxOp
.
CanMsg
[
i
].
u8MsgBuff
[
j
];
m_Msg
.
Msg
[
j
]
=
CanMsgTxOp
->
CanMsg
[
i
].
u8MsgBuff
[
j
];
}
}
if
(
CanMsgTxOp
.
Can_Write
!=
((
void
*
)
0
)
)
if
(
CanMsgTxOp
->
Can_Write
!=
((
void
*
)
0
)
)
{
{
CanMsgTxOp
.
CanMsg
[
i
].
u8MsgRet
=
CanMsgTxOp
.
Can_Write
(
&
m_Msg
);
CanMsgTxOp
->
CanMsg
[
i
].
u8MsgRet
=
CanMsgTxOp
->
Can_Write
(
&
m_Msg
);
}
}
if
(
CanMsgTxOp
.
CanMsg
[
i
].
u8MsgRet
==
0U
)
if
(
CanMsgTxOp
->
CanMsg
[
i
].
u8MsgRet
==
0U
)
{
{
CanMsgTxOp
.
CanMsg
[
i
].
u32Timer
=
0u
;
CanMsgTxOp
->
CanMsg
[
i
].
u32Timer
=
0u
;
}
}
else
else
{
{
CanMsgTxOp
.
CanMsg
[
i
].
u32Timer
-=
u32CbkCycle
;
CanMsgTxOp
->
CanMsg
[
i
].
u32Timer
-=
u32CbkCycle
;
}
}
}
}
}
}
else
else
{
{
if
(
CanMsgTxOp
.
pCAN_SendAttribute
[
i
].
u32MsgCycle
!=
0ul
)
if
(
CanMsgTxOp
->
pCAN_SendAttribute
[
i
].
u32MsgCycle
!=
0ul
)
{
{
CanMsgTxOp
.
CanMsg
[
i
].
u16TXMsgDIMcounter
=
0xffffu
;
CanMsgTxOp
->
CanMsg
[
i
].
u16TXMsgDIMcounter
=
0xffffu
;
CanMsgTxOp
->
CanMsg
[
i
].
u32MsgCycle
=
CanMsgTxOp
->
pCAN_SendAttribute
[
i
].
u32MsgCycle
;
}
}
else
else
{
{
CanMsgTxOp
.
CanMsg
[
i
].
u16TXMsgDIMcounter
=
0u
;
CanMsgTxOp
->
CanMsg
[
i
].
u16TXMsgDIMcounter
=
0u
;
CanMsgTxOp
.
CanMsg
[
i
].
u32MsgCycle
=
0ul
;
CanMsgTxOp
->
CanMsg
[
i
].
u32MsgCycle
=
0ul
;
}
}
CanMsgTxOp
.
CanMsg
[
i
].
u32SendCnt
=
0ul
;
CanMsgTxOp
->
CanMsg
[
i
].
u32SendCnt
=
0ul
;
}
}
}
}
}
}
...
@@ -254,23 +333,36 @@ void Can_Write_Fun(canlib_uint32_t u32CbkCycle)
...
@@ -254,23 +333,36 @@ void Can_Write_Fun(canlib_uint32_t u32CbkCycle)
}
}
}
}
/*
/**
u32TxMsgCycle
* @brief CAN报文修改外发属性,重点针对周期事件型,变周期
* @param[in] CanMsgTxOp 报文发送操作对象指针, 每路can都应有独立的结构体指针
ret = 0 success
* @param[in] u32TxMsgIdx 要修改的报文序号,非报文ID,枚举里的ID名
ret = 1 wrong attribute
* @param[in] u16TxMSgDIMcounter 要改变周期发多少帧
ret = 2 request out of range
* @param[in] u32TxMsgCycle 期望改成多少周期
*/
* @return 当前CAN通道TX状态
CAN_FUNC_ERR_t
Can_Msg_Tx_Overwrite
(
canlib_uint32_t
u32TxMsgIdx
,
canlib_uint16_t
u16TxMSgDIMcounter
,
canlib_uint32_t
u32TxMsgCycle
)
* @ref CAN_ERR_OK 设置正确
* @ref CAN_ERR_ParaInit 设置类型不正确,
* @ref CAN_ERR_OUTRANGE 参数色值超限
* @warning 此函数改一次调用一次,持续调用就发不出去了
*
* 示例
@code
//3号报文,以1ms周期发5帧,之后恢复到表格里默认的设置
CAN_FUNC_ERR_t CAN_Ret=Can_Msg_Tx_Overwrite(&CAN0_TX_Option,3u,5u,1000u);
@endcode
*
* @since 1.0.0
*/
CAN_FUNC_ERR_t
Can_Msg_Tx_Overwrite
(
st_CanMsgTxOp
*
CanMsgTxOp
,
canlib_uint32_t
u32TxMsgIdx
,
canlib_uint16_t
u16TxMSgDIMcounter
,
canlib_uint32_t
u32TxMsgCycle
)
{
{
CAN_FUNC_ERR_t
Ret
=
CAN_ERR_OK
;
CAN_FUNC_ERR_t
Ret
=
CAN_ERR_OK
;
if
(
u32TxMsgIdx
<
CanMsgTxOp
.
Total_Msg
)
if
(
u32TxMsgIdx
<
CanMsgTxOp
->
Total_Msg
)
{
{
if
(
CanMsgTxOp
.
CanMsg
[
u32TxMsgIdx
].
u8TXMsgType
!=
0u
)
if
(
CanMsgTxOp
->
CanMsg
[
u32TxMsgIdx
].
u8TXMsgType
!=
0u
)
{
{
CanMsgTxOp
.
CanMsg
[
u32TxMsgIdx
].
u16TXMsgDIMcounter
=
u16TxMSgDIMcounter
;
CanMsgTxOp
->
CanMsg
[
u32TxMsgIdx
].
u16TXMsgDIMcounter
=
u16TxMSgDIMcounter
;
CanMsgTxOp
.
CanMsg
[
u32TxMsgIdx
].
u32MsgCycle
=
u32TxMsgCycle
;
CanMsgTxOp
->
CanMsg
[
u32TxMsgIdx
].
u32MsgCycle
=
u32TxMsgCycle
;
CanMsgTxOp
.
CanMsg
[
u32TxMsgIdx
].
u32SendCnt
=
0ul
;
CanMsgTxOp
->
CanMsg
[
u32TxMsgIdx
].
u32SendCnt
=
0ul
;
}
}
else
else
{
{
...
@@ -283,13 +375,30 @@ CAN_FUNC_ERR_t Can_Msg_Tx_Overwrite(canlib_uint32_t u32TxMsgIdx, canlib_uint16_t
...
@@ -283,13 +375,30 @@ CAN_FUNC_ERR_t Can_Msg_Tx_Overwrite(canlib_uint32_t u32TxMsgIdx, canlib_uint16_t
}
}
return
Ret
;
return
Ret
;
}
}
/**
CAN_FUNC_ERR_t
Can_Msg_TX_FastInitCycle
(
canlib_uint32_t
u32TxMsgIdx
,
canlib_uint32_t
CurTimerCnt
)
* @brief CAN报文修改指定外发报文定时器
* @param[in] CanMsgTxOp 报文发送操作对象指针, 每路can都应有独立的结构体指针
* @param[in] u32TxMsgIdx 要修改的报文序号,非报文ID,枚举里的ID名.
* @param[in] CurTimerCnt 当前ID的外发计时值.
* @return 当前输入参数是否正确
* @ref CAN_ERR_OK 设置正确
* @ref CAN_ERR_OUTRANGE 参数色值超限
* @warning 此函数改一次调用一次,持续调用就发不出去了
*
* 示例
@code
//3号报文,当前外发计时变更为50 000 us
CAN_FUNC_ERR_t CAN_Ret=Can_Msg_TX_FastInitCycle(&CAN0_TX_Option,3u,50000ul);
@endcode
*
* @since 1.0.0
*/
CAN_FUNC_ERR_t
Can_Msg_TX_FastInitCycle
(
st_CanMsgTxOp
*
CanMsgTxOp
,
canlib_uint32_t
u32TxMsgIdx
,
canlib_uint32_t
CurTimerCnt
)
{
{
CAN_FUNC_ERR_t
Ret
=
CAN_ERR_OK
;
CAN_FUNC_ERR_t
Ret
=
CAN_ERR_OK
;
if
(
u32TxMsgIdx
<
CanMsgTxOp
.
Total_Msg
)
if
(
u32TxMsgIdx
<
CanMsgTxOp
->
Total_Msg
)
{
{
CanMsgTxOp
.
CanMsg
[
u32TxMsgIdx
].
u32Timer
=
CurTimerCnt
;
CanMsgTxOp
->
CanMsg
[
u32TxMsgIdx
].
u32Timer
=
CurTimerCnt
;
}
}
else
else
{
{
...
@@ -297,19 +406,51 @@ CAN_FUNC_ERR_t Can_Msg_TX_FastInitCycle(canlib_uint32_t u32TxMsgIdx, canlib_uint
...
@@ -297,19 +406,51 @@ CAN_FUNC_ERR_t Can_Msg_TX_FastInitCycle(canlib_uint32_t u32TxMsgIdx, canlib_uint
}
}
return
Ret
;
return
Ret
;
}
}
/**
void
Can_Msg_TX_SUCCESS
(
canlib_uint32_t
u32TxMsgIdx
)
* @brief CAN报文发送成功确认
* @param[in] CanMsgTxOp 报文发送操作对象指针, 每路can都应有独立的结构体指针
* @param[in] u32TxMsgIdx 要修改的报文序号,非报文ID,枚举里的ID名
* @warning 此函数需要对应buff发送成功时调用
*
* 示例
@code
Can_Msg_TX_SUCCESS(&CAN0_TX_Option,3u);
@endcode
*
* @since 1.0.0
*/
void
Can_Msg_TX_SUCCESS
(
st_CanMsgTxOp
*
CanMsgTxOp
,
canlib_uint32_t
u32TxMsgIdx
)
{
{
if
(
u32TxMsgIdx
<
CanMsgTxOp
.
Total_Msg
)
if
(
u32TxMsgIdx
<
CanMsgTxOp
->
Total_Msg
)
{
{
if
(
CanMsgTxOp
.
pCAN_SendAttribute
[
u32TxMsgIdx
].
MsgSuccess
!=
((
void
*
)
0
)
)
if
(
CanMsgTxOp
->
pCAN_SendAttribute
[
u32TxMsgIdx
].
MsgSuccess
!=
((
void
*
)
0
)
)
{
{
CanMsgTxOp
.
pCAN_SendAttribute
[
u32TxMsgIdx
].
MsgSuccess
(
);
CanMsgTxOp
->
pCAN_SendAttribute
[
u32TxMsgIdx
].
MsgSuccess
(
);
}
}
}
}
}
}
/**
* @brief CAN报文发送模块版本号
* @return CAN报文发送模块版本
* @warning NONE
* @since 1.0.0
*/
canlib_uint32_t
Read_CAN_TX_Version
(
void
)
canlib_uint32_t
Read_CAN_TX_Version
(
void
)
{
{
return
0x000
4u
;
return
0x000
5uL
;
}
}
#if defined(__ICCARM__)
/**< IAR ARM Compiler */
const
char
Cur_TX_Module_Version
[]
=
{
"TX_VER=V1.0.0"
};
#elif defined(__ghs__)
/**< Green Hills ARM Compiler */
const
char
Cur_TX_Module_Version
[]
=
{
"TX_VER=V1.0.0"
};
#elif defined(__GNUC__)
/**< GNU Compiler Collection */
const
char
Cur_TX_Module_Version
[]
=
{
"TX_VER=V1.0.0"
};
#elif defined(__DCC__)
/**< Wind River Diab Compiler */
const
char
Cur_TX_Module_Version
[]
=
{
"TX_VER=V1.0.0"
};
#elif defined(__ARMCC_VERSION)
/**< ARMC Compiler */
const
char
Cur_TX_Module_Version
[]
=
{
"TX_VER=V1.0.0"
};
#elif defined(__HC12__)
/**< Codewarrior Compiler */
const
char
Cur_TX_Module_Version
[]
=
{
"TX_VER=V1.0.0"
};
#else
/**< VScode */
const
char
Cur_TX_Module_Version
[]
=
{
"TX_VER=V1.0.0"
};
#endif
\ No newline at end of file
YueJin_test_bench/source/Appliciation/COM_CAN.c
View file @
4f21b111
#include "COM_CAN.h"
#include "COM_CAN.h"
#include "TYW_stdint.h"
#include "CAN_Communication_Matrix.h"
#include "CAN_Communication_Matrix.h"
#include "RTE_CAN.h"
#include "RTE_CAN.h"
#include "TYW_stdint.h"
#include <string.h>
#include <string.h>
#include "Check_Ctrl.h"
uint8_t
SingleOrDouble_CAN
=
0
;
#pragma alignvar(8)
#pragma alignvar(8)
uint32_t
pRXBuff
[
CAN_RX_MSG_Block
*
CAN_CH0_ID_TOTAL_MAX
];
uint32_t
pRXBuff_CH4
[
CAN_RX_MSG_Block
*
CAN_CH4_ID_TOTAL_MAX
];
#pragma alignvar(8)
static
uint32_t
pTXBuff
[
CAN_TX_MSG_Block
*
300
];
#pragma alignvar(8)
#pragma alignvar(8)
static
st_CAN_SendAttribute
Load_Attr
[
300
]
=
{
0
};
uint32_t
pTXBuff
[
CAN_TX_MSG_Block
*
CAN_CH4_ID_SEND_TOTAL
];
st_CAN_MsgBuff
Load_AttrBuff
[
300
]
=
{
0
};
typedef
struct
{
uint32_t
Subaddr
;
uint32_t
SubStep
;
}
st_AutoCheckAttr
;
typedef
union
_word_split
{
uint32_t
word
;
uint8_t
byte
[
4
];
}
WORD_SPLIT_u
;
typedef
struct
{
WORD_SPLIT_u
total_msg
;
WORD_SPLIT_u
total_step
;
WORD_SPLIT_u
total_msg_begin
;
WORD_SPLIT_u
total_step_begin
;
WORD_SPLIT_u
sub_step_addr
;
uint32_t
res2
;
uint32_t
res3
;
uint32_t
crc_result
;
}
st_CheckMessage
;
uint8_t
COM_APP_Process
(
st_CAN_Msg
*
Msg
)
;
st_CheckMessage
*
PreLoad_Info
;
#define FIX_LOAD_ADDRESS 0x50000
st_AutoCheckAttr
Sub_Attr
[
200
]
=
{
0
};
uint32_t
g_Verify_Result
;
#define MAKE_U32(high, mid1, mid0, low) ((( uint8_t )(low)) | ((( uint8_t )(mid0)) << 8) | ((( uint8_t )(mid1)) << 16) | ((( uint8_t )(high)) << 24))
void
Execute_Specify_Step
(
uint32_t
step
);
float
double0
;
float
double1
;
float
double2
;
float
double3
;
void
COM_CAN_Init
(
void
)
void
COM_CAN_Init
(
void
)
{
{
/*CAN APP BUFFER INIT*/
/*CAN APP BUFFER INIT*/
memset
(
pRXBuff_CH4
,
0
,
sizeof
(
pRXBuff_CH4
));
CAN_CH4_CanMsgOp
.
CAN_MSG_Analysis
=
pRXBuff_CH4
;
Can_RX_BuffInit
(
&
CAN_CH4_CanMsgOp
,
CAN_CH4_CAN_MSG_CONST_ARRAY
,
CAN_CH4_ID_TOTAL_MAX
);
memset
(
pRXBuff
,
0
,
sizeof
(
pRXBuff
));
memset
(
pTXBuff
,
0
,
sizeof
(
pTXBuff
));
memset
(
pTXBuff
,
0
,
sizeof
(
pTXBuff
));
memset
(
Load_AttrBuff
,
0
,
sizeof
(
Load_AttrBuff
));
CAN_CH4_CanMsgTxOp
.
CanMsg
=
pTXBuff
;
memset
(
Load_Attr
,
0
,
sizeof
(
Load_Attr
));
Can_TX_BuffInit
(
&
CAN_CH4_CanMsgTxOp
,
CAN_CH4_CANSendAttr
,
CAN_CH4_ID_SEND_TOTAL
,
COM_APP_Process
);
g_Verify_Result
=
0
;
Msg_Load_Init
(
);
Can_RX_BuffInit
((
uint8_t
*
)
pRXBuff
,
CAN_MSG_CONST_ARRAY
,
CAN_CH0_ID_TOTAL_MAX
);
if
(
g_Verify_Result
==
1U
)
{
Can_TX_BuffInit
((
uint8_t
*
)
pTXBuff
,
Load_Attr
,
PreLoad_Info
->
total_msg
.
word
,
Can_Write_FIFO
);
}
CAN_RX_SetEnable
(
0x00
);
if
(
g_Verify_Result
==
1U
)
{
CAN_TX_SetEnable
(
0x55
);
Execute_Specify_Step
(
0
);
}
}
void
COM_RX_Process
(
void
)
{
CanMSg_XMS_Analysis
(
5u
);
}
void
Msg_Load_Init
(
void
)
{
uint32_t
i
=
0u
;
uint32_t
*
addr
;
uint32_t
Total_Msg
;
uint32_t
Total_Msg_addr
;
PreLoad_Info
=
(
uint32_t
*
)
FIX_LOAD_ADDRESS
;
g_Verify_Result
=
Check_Infordata_CRC_32
(
&
PreLoad_Info
->
total_msg
,
28
);
if
(
g_Verify_Result
==
1U
)
{
Total_Msg
=
PreLoad_Info
->
total_msg
.
word
;
Total_Msg_addr
=
PreLoad_Info
->
total_msg_begin
.
word
;
addr
=
(
uint32_t
*
)
Total_Msg_addr
;
for
(
i
=
0
;
i
<
Total_Msg
;
i
++
)
{
Load_Attr
[
i
].
u32MsgID
=
(
*
(
addr
+
i
*
4
));
// convert_0;
Load_Attr
[
i
].
u32MsgCycle
=
(
*
(
addr
+
1
+
i
*
4
));
// convert_1;
Load_Attr
[
i
].
u8MsgPro
=
(
*
(
addr
+
2
+
i
*
4
));
// convert_2;
Load_Attr
[
i
].
u8MsgDLC
=
(
*
(
addr
+
3
+
i
*
4
));
// convert_3;
}
addr
=
(
uint32_t
*
)
PreLoad_Info
->
sub_step_addr
.
word
;
CAN_RX_SetEnable
(
&
CAN_CH4_CanMsgOp
,
CAN_N_RX_Enable
);
for
(
i
=
0
;
i
<
PreLoad_Info
->
total_step
.
word
;
i
++
)
CAN_TX_SetEnable
(
&
CAN_CH4_CanMsgTxOp
,
CAN_N_TX_Enable
);
{
Sub_Attr
[
i
].
Subaddr
=
(
*
(
addr
+
0
+
i
*
2
));
Sub_Attr
[
i
].
SubStep
=
(
*
(
addr
+
1
+
i
*
2
));
}
}
}
}
void
Execute_Specify_Step
(
uint32_t
step
)
uint8_t
COM_APP_Process
(
st_CAN_Msg
*
Msg
)
{
{
Can_Write
((
_CAN_Msg
*
)
Msg
);
uint32_t
i
=
0u
;
return
0u
;
uint32_t
j
=
0u
;
uint32_t
*
addr
;
uint32_t
buff_idx
;
uint32_t
buff_id
;
uint8_t
*
pbuff
;
if
(
g_Verify_Result
==
1U
)
{
if
(
step
<
PreLoad_Info
->
total_step
.
word
)
{
addr
=
(
uint32_t
*
)
Sub_Attr
[
step
].
Subaddr
;
for
(
i
=
0
;
i
<
Sub_Attr
[
step
].
SubStep
;
i
++
)
{
buff_idx
=
*
(
addr
+
1
+
i
*
4
);
pbuff
=
(
void
*
)(
Sub_Attr
[
step
].
Subaddr
+
8
+
i
*
16
);
for
(
j
=
0
;
j
<
8
;
j
++
)
{
Load_AttrBuff
[
buff_idx
].
sig
.
Msg
[
j
]
=
pbuff
[
j
];
}
}
}
//if ( step == 4 )
//{
// addr = ( uint32_t * )Sub_Attr [ step ].Subaddr;
//
// for ( i = 0; i < Sub_Attr [ step ].SubStep; i++ )
// {
// buff_idx = *(addr + 1 + i * 4);
// pbuff = SW_Version;
//
// for ( j = 0; j < 8; j++ )
// {
// Load_AttrBuff [ buff_idx ].sig.Msg [ j ] = pbuff [ j];
// }
// }
//
//}
}
}
}
const
uint32_t
CRC32_Table
[
256
]
=
{
void
COM_TX_Process
(
void
)
0x00000000ul
,
0x77073096ul
,
0xEE0E612Cul
,
0x990951BAul
,
0x076DC419ul
,
0x706AF48Ful
,
0xE963A535ul
,
0x9E6495A3ul
,
0x0EDB8832ul
,
0x79DCB8A4ul
,
0xE0D5E91Eul
,
0x97D2D988ul
,
0x09B64C2Bul
,
0x7EB17CBDul
,
0xE7B82D07ul
,
0x90BF1D91ul
,
0x1DB71064ul
,
0x6AB020F2ul
,
0xF3B97148ul
,
0x84BE41DEul
,
0x1ADAD47Dul
,
0x6DDDE4EBul
,
0xF4D4B551ul
,
0x83D385C7ul
,
0x136C9856ul
,
0x646BA8C0ul
,
0xFD62F97Aul
,
0x8A65C9ECul
,
0x14015C4Ful
,
0x63066CD9ul
,
0xFA0F3D63ul
,
0x8D080DF5ul
,
0x3B6E20C8ul
,
0x4C69105Eul
,
0xD56041E4ul
,
0xA2677172ul
,
0x3C03E4D1ul
,
0x4B04D447ul
,
0xD20D85FDul
,
0xA50AB56Bul
,
0x35B5A8FAul
,
0x42B2986Cul
,
0xDBBBC9D6ul
,
0xACBCF940ul
,
0x32D86CE3ul
,
0x45DF5C75ul
,
0xDCD60DCFul
,
0xABD13D59ul
,
0x26D930ACul
,
0x51DE003Aul
,
0xC8D75180ul
,
0xBFD06116ul
,
0x21B4F4B5ul
,
0x56B3C423ul
,
0xCFBA9599ul
,
0xB8BDA50Ful
,
0x2802B89Eul
,
0x5F058808ul
,
0xC60CD9B2ul
,
0xB10BE924ul
,
0x2F6F7C87ul
,
0x58684C11ul
,
0xC1611DABul
,
0xB6662D3Dul
,
0x76DC4190ul
,
0x01DB7106ul
,
0x98D220BCul
,
0xEFD5102Aul
,
0x71B18589ul
,
0x06B6B51Ful
,
0x9FBFE4A5ul
,
0xE8B8D433ul
,
0x7807C9A2ul
,
0x0F00F934ul
,
0x9609A88Eul
,
0xE10E9818ul
,
0x7F6A0DBBul
,
0x086D3D2Dul
,
0x91646C97ul
,
0xE6635C01ul
,
0x6B6B51F4ul
,
0x1C6C6162ul
,
0x856530D8ul
,
0xF262004Eul
,
0x6C0695EDul
,
0x1B01A57Bul
,
0x8208F4C1ul
,
0xF50FC457ul
,
0x65B0D9C6ul
,
0x12B7E950ul
,
0x8BBEB8EAul
,
0xFCB9887Cul
,
0x62DD1DDFul
,
0x15DA2D49ul
,
0x8CD37CF3ul
,
0xFBD44C65ul
,
0x4DB26158ul
,
0x3AB551CEul
,
0xA3BC0074ul
,
0xD4BB30E2ul
,
0x4ADFA541ul
,
0x3DD895D7ul
,
0xA4D1C46Dul
,
0xD3D6F4FBul
,
0x4369E96Aul
,
0x346ED9FCul
,
0xAD678846ul
,
0xDA60B8D0ul
,
0x44042D73ul
,
0x33031DE5ul
,
0xAA0A4C5Ful
,
0xDD0D7CC9ul
,
0x5005713Cul
,
0x270241AAul
,
0xBE0B1010ul
,
0xC90C2086ul
,
0x5768B525ul
,
0x206F85B3ul
,
0xB966D409ul
,
0xCE61E49Ful
,
0x5EDEF90Eul
,
0x29D9C998ul
,
0xB0D09822ul
,
0xC7D7A8B4ul
,
0x59B33D17ul
,
0x2EB40D81ul
,
0xB7BD5C3Bul
,
0xC0BA6CADul
,
0xEDB88320ul
,
0x9ABFB3B6ul
,
0x03B6E20Cul
,
0x74B1D29Aul
,
0xEAD54739ul
,
0x9DD277AFul
,
0x04DB2615ul
,
0x73DC1683ul
,
0xE3630B12ul
,
0x94643B84ul
,
0x0D6D6A3Eul
,
0x7A6A5AA8ul
,
0xE40ECF0Bul
,
0x9309FF9Dul
,
0x0A00AE27ul
,
0x7D079EB1ul
,
0xF00F9344ul
,
0x8708A3D2ul
,
0x1E01F268ul
,
0x6906C2FEul
,
0xF762575Dul
,
0x806567CBul
,
0x196C3671ul
,
0x6E6B06E7ul
,
0xFED41B76ul
,
0x89D32BE0ul
,
0x10DA7A5Aul
,
0x67DD4ACCul
,
0xF9B9DF6Ful
,
0x8EBEEFF9ul
,
0x17B7BE43ul
,
0x60B08ED5ul
,
0xD6D6A3E8ul
,
0xA1D1937Eul
,
0x38D8C2C4ul
,
0x4FDFF252ul
,
0xD1BB67F1ul
,
0xA6BC5767ul
,
0x3FB506DDul
,
0x48B2364Bul
,
0xD80D2BDAul
,
0xAF0A1B4Cul
,
0x36034AF6ul
,
0x41047A60ul
,
0xDF60EFC3ul
,
0xA867DF55ul
,
0x316E8EEFul
,
0x4669BE79ul
,
0xCB61B38Cul
,
0xBC66831Aul
,
0x256FD2A0ul
,
0x5268E236ul
,
0xCC0C7795ul
,
0xBB0B4703ul
,
0x220216B9ul
,
0x5505262Ful
,
0xC5BA3BBEul
,
0xB2BD0B28ul
,
0x2BB45A92ul
,
0x5CB36A04ul
,
0xC2D7FFA7ul
,
0xB5D0CF31ul
,
0x2CD99E8Bul
,
0x5BDEAE1Dul
,
0x9B64C2B0ul
,
0xEC63F226ul
,
0x756AA39Cul
,
0x026D930Aul
,
0x9C0906A9ul
,
0xEB0E363Ful
,
0x72076785ul
,
0x05005713ul
,
0x95BF4A82ul
,
0xE2B87A14ul
,
0x7BB12BAEul
,
0x0CB61B38ul
,
0x92D28E9Bul
,
0xE5D5BE0Dul
,
0x7CDCEFB7ul
,
0x0BDBDF21ul
,
0x86D3D2D4ul
,
0xF1D4E242ul
,
0x68DDB3F8ul
,
0x1FDA836Eul
,
0x81BE16CDul
,
0xF6B9265Bul
,
0x6FB077E1ul
,
0x18B74777ul
,
0x88085AE6ul
,
0xFF0F6A70ul
,
0x66063BCAul
,
0x11010B5Cul
,
0x8F659EFFul
,
0xF862AE69ul
,
0x616BFFD3ul
,
0x166CCF45ul
,
0xA00AE278ul
,
0xD70DD2EEul
,
0x4E048354ul
,
0x3903B3C2ul
,
0xA7672661ul
,
0xD06016F7ul
,
0x4969474Dul
,
0x3E6E77DBul
,
0xAED16A4Aul
,
0xD9D65ADCul
,
0x40DF0B66ul
,
0x37D83BF0ul
,
0xA9BCAE53ul
,
0xDEBB9EC5ul
,
0x47B2CF7Ful
,
0x30B5FFE9ul
,
0xBDBDF21Cul
,
0xCABAC28Aul
,
0x53B39330ul
,
0x24B4A3A6ul
,
0xBAD03605ul
,
0xCDD70693ul
,
0x54DE5729ul
,
0x23D967BFul
,
0xB3667A2Eul
,
0xC4614AB8ul
,
0x5D681B02ul
,
0x2A6F2B94ul
,
0xB40BBE37ul
,
0xC30C8EA1ul
,
0x5A05DF1Bul
,
0x2D02EF8Dul
};
uint32_t
Check_Infordata_CRC_32
(
uint8_t
p
[],
uint32_t
len
)
{
{
uint8_t
i
;
Can_Write_Fun
(
&
CAN_CH4_CanMsgTxOp
,
50000u
);
uint32_t
m32
=
0u
;
uint32_t
FlashCrcValue
=
0xFFFFFFFF
;
uint32_t
result
=
0
;
if
(
len
<
0xff
)
{
for
(
i
=
0
;
i
<
len
;
i
++
)
{
FlashCrcValue
=
CRC32_Table
[
(
FlashCrcValue
^
p
[
i
])
&
0xFF
]
^
((
FlashCrcValue
>>
8
)
&
0x00ffffff
);
}
FlashCrcValue
^=
0xffffffff
;
}
m32
=
(((
uint32_t
)
p
[
i
+
3
]
<<
24
)
&
0xff000000
)
|
(((
uint32_t
)
p
[
i
+
2
]
<<
16
)
&
0x00ff0000
)
|
(((
uint32_t
)
p
[
i
+
1
]
<<
8
)
&
0x0000ff00
)
|
(((
uint32_t
)
p
[
i
])
&
0xff0000ff
);
if
(
(
m32
==
FlashCrcValue
)
&&
(
FlashCrcValue
!=
0xFFFFFFFF
)
)
{
result
=
1
;
}
return
result
;
}
}
uint32_t
Get_Total_CheckStep
(
void
)
void
COM_RX_Process
(
void
)
{
{
uint32_t
ret
=
0
;
CanMSg_XMS_Analysis
(
&
CAN_CH4_CanMsgOp
,
5u
);
if
(
g_Verify_Result
==
1U
)
{
ret
=
PreLoad_Info
->
total_step
.
word
;
}
else
{
ret
=
0
;
}
return
ret
;
}
}
YueJin_test_bench/source/Appliciation/COM_CAN.h
View file @
4f21b111
...
@@ -3,9 +3,7 @@
...
@@ -3,9 +3,7 @@
void
COM_CAN_Init
(
void
);
void
COM_CAN_Init
(
void
);
void
COM_RX_Process
(
void
);
void
COM_RX_Process
(
void
);
void
Msg_Load_Init
(
void
);
void
COM_TX_Process
(
void
);
extern
void
Execute_Specify_Step
(
unsigned
int
step
);
unsigned
int
Check_Infordata_CRC_32
(
unsigned
char
p
[],
unsigned
int
len
);
unsigned
int
Get_Total_CheckStep
(
void
);
#endif
#endif
\ No newline at end of file
YueJin_test_bench/source/Appliciation/Check_Ctrl.c
View file @
4f21b111
...
@@ -66,7 +66,6 @@ uint32_t Global_Session = 0;
...
@@ -66,7 +66,6 @@ uint32_t Global_Session = 0;
uint32_t
loc_Step
;
uint32_t
loc_Step
;
void
Function_Check_Ctrl
(
uint32_t
cmd
);
void
MENU_CHECK_STEP_ADD
(
void
)
void
MENU_CHECK_STEP_ADD
(
void
)
{
{
...
@@ -202,147 +201,6 @@ void Diag_Info_Init(void)
...
@@ -202,147 +201,6 @@ void Diag_Info_Init(void)
//memset(Voltage_UDS, 0xFF, sizeof(Voltage_UDS));
//memset(Voltage_UDS, 0xFF, sizeof(Voltage_UDS));
}
}
uint8_t
Type_Clear
=
0
;
extern
uint8_t
BCM_FLAG_2014
=
0
;
uint32_t
loc_Type
=
0
;
void
Total_Check
(
void
)
{
uint8_t
erweima
[
64
]
;
uint8_t
cmperweima
[
34
];
uint8_t
yibiaoshuju
[
34
];
loc_Type
=
Get_Display_Type
(
);
if
(
Type_Clear
!=
loc_Type
)
{
Type_Clear
=
loc_Type
;
Display_TFT_Clear
();
}
// POWER_CTRL_KL30_Current = 0u;//静态电流电阻的远仪表端,永远接通总电源。B+~
BCM_FLAG_2014
=
BCM_2014
[
1
]
&
0X40
;
// loc_Type = 2;
switch
(
loc_Type
)
{
case
0
:
// Buzzer_Init();
// Function_Check_Ctrl(1); //Excel表格发报文。硬线信号
//Buzzer_Warning();
// TFT_LCD_Draw_Bmp(200, 90+40, ( uint8_t * )gImage_dui12 );
// for(int i = 0;i<34;i++)
// {
// erweima[i] = barcode_Msg[i];
// }
memcpy
(
erweima
,
barcode_Msg
,
34
);
erweima
[
34
]
=
0xFF
;
General_Number_Disp
(
erweima
,
3
,
90
);
break
;
case
1
:
// Buzzer_Warning();
memcpy
(
cmperweima
,
barcode_Msg1
,
34
);
// for(int i =0;i<34;i++)
// {
// cmperweima[i] = barcode_Msg1[i];
// }
cmperweima
[
34
]
=
0xFF
;
General_Number_Disp
(
cmperweima
,
3
,
90
);
memcpy
(
yibiaoshuju
,
get_num_buf
,
34
);
// for(int i =0;i<34;i++)
// {
// yibiaoshuju[i] = get_num_buf[i];
// }
yibiaoshuju
[
34
]
=
0xFF
;
General_Number_Disp
(
yibiaoshuju
,
3
,
165
);
// zhenduanflag = 3;
// comparestart = 1;
break
;
case
2
:
POWER_CTRL_KL30
=
0u
;
//B+
POWER_CTRL_KL15
=
0u
;
//KL15
CAN_Msg_Tx_Enable
=
1u
;
if
(
MENU_CHECK_STEP
==
0
)
{
Display_Version_Info
(
1
);
}
else
{
loc_Type_back
=
0
;
}
if
((
R485_ID4Dh
.
Sig
.
ESP322
==
0
)
&&
(
R485_ID4Dh
.
Sig
.
G0312
==
0
))
{
MENU_CHECK_STEP
=
0
;
}
//Function_Check_Ctrl(1); //Excel表格发报文。硬线信号
Diag_Info_Init
(
);
Display_Init
(
);
// Send_Init();
// Send_ODO_Init();
// Display_Send_ODO(0);
//FUEL_UDS__Display(3);
Buzzer_Warning
();
break
;
case
3
:
blename
[
4
]
=
0xFF
;
// if(recvflag111 == 1)
// {
if
((
blename
[
0
]
+
blename
[
1
]
+
blename
[
2
]
+
blename
[
3
])
!=
0
)
{
General_Number_Disp
(
blename
,
3
,
165
);
}
// recvflag111 = 0;
// }
// POWER_CTRL_KL30 = 0u; //B+
// POWER_CTRL_KL15 = 0u; //KL15
// CAN_Msg_Tx_Enable = 1u;
// Diag_Info_Init( );
// Display_Init( );
// Display_Version_Info(0);
// Display_Set_Buff();
// // Function_Check_Ctrl(1); //Excel表格发报文。硬线信号
// //FUEL_UDS__Display(3);
// Buzzer_Warning();
// break;
// case 4:
// break;
default:
POWER_CTRL_KL30
=
0u
;
POWER_CTRL_KL15
=
0u
;
CAN_Msg_Tx_Enable
=
1u
;
Display_Menu_Type
=
0
;
Diag_Info_Init
(
);
Display_Init
(
);
Display_Version_Info
(
0
);
Send_Init
();
Send_ODO_Init
();
// Buzzer_Init();
break
;
}
}
void
Read_IPK_Session_Type
(
void
)
//请求仪表发送 软硬件版本号 等数据。
void
Read_IPK_Session_Type
(
void
)
//请求仪表发送 软硬件版本号 等数据。
{
{
...
@@ -543,362 +401,6 @@ void Read_IPK_Session_Type(void)//请求仪表发送 软硬件版本号 等数
...
@@ -543,362 +401,6 @@ void Read_IPK_Session_Type(void)//请求仪表发送 软硬件版本号 等数
}
}
}
}
}
}
uint8_t
LED_Waring
=
0
;
uint8_t
ABStime
=
0
;
void
Function_Check_Ctrl
(
uint32_t
cmd
)
{
uint8_t
p
[
20
];
uint8_t
DIAG_BUFER
[
40
];
uint32_t
i
;
uint32_t
j
;
static
uint32_t
status
=
0
;
static
uint32_t
MENU_BACK
=
0xff
;
static
uint8_t
UDS_EunD
=
0
;
if
(
cmd
==
0
)
{
;
}
else
if
(
cmd
==
1
)
{
//Voltage_UDS__Display();
//FUEL_UDS__Display(1);
if
(
MENU_CHECK_STEP
>=
Get_Total_CheckStep
(
)
)
{
// MENU_CHECK_STEP = 0;
}
if
(
MENU_BACK
!=
MENU_CHECK_STEP
)
{
MENU_BACK
=
MENU_CHECK_STEP
;
Execute_Specify_Step
(
MENU_CHECK_STEP
);
//Excel表格发报文。
if
(
0
)
//数字需要3位还是2位
{
p
[
0
]
=
(
MENU_CHECK_STEP
+
1
)
/
100
;
// 65535
p
[
1
]
=
((
MENU_CHECK_STEP
+
1
)
%
100
)
/
10
;
p
[
2
]
=
(
MENU_CHECK_STEP
+
1
)
%
10
;
// 65535
p
[
3
]
=
0xff
;
}
else
{
p
[
0
]
=
((
MENU_CHECK_STEP
)
%
100
)
/
10
;
p
[
1
]
=
(
MENU_CHECK_STEP
)
%
10
;
// 65535
p
[
2
]
=
0xff
;
}
General_Number_Disp
(
p
,
190
,
10
);
//刷图:报文检测步数
}
Display_Send_Vspead
(
MENU_CHECK_STEP
);
switch
(
MENU_CHECK_STEP
)
{
case
0
:
{
LED3
=
0
;
//右转
LED4
=
0
;
LINE_OUT_NEG_05
=
0
;
LINE_OUT_NEG_06
=
1
;
LINE_jinguang
=
0
;
POWER_CTRL_KL30_Current
=
0
;
if
(
Auto_ONOFF
==
0
)
{
LINE_OUT_NEG_01
=
1
;
LINE_OUT_NEG_04
=
1
;
}
LINE_OUT_NEG_02
=
1
;
LINE_OUT_NEG_03
=
1
;
POWER_CTRL_KL30
=
0
;
name1
=
(
devicename
)
&
0xFF
;
name2
=
(
devicename
>>
8
)
&
0xFF
;
break
;
}
case
1
:
{
LED3
=
0
;
LED4
=
0
;
LINE_OUT_NEG_05
=
1
;
LINE_OUT_NEG_06
=
0
;
POWER_CTRL_KL30_Current
=
0
;
LINE_jinguang
=
1
;
POWER_CTRL_KL30
=
0
;
break
;
}
case
2
:
{
LED3
=
0
;
LINE_OUT_NEG_05
=
1
;
LINE_OUT_NEG_06
=
0
;
LINE_jinguang
=
0
;
POWER_CTRL_KL30_Current
=
0
;
POWER_CTRL_KL30
=
1
;
LED4
=
1
;
if
(
LINE_FUEL_RES04
==
1
||
LINE_FUEL_RES02
==
1
)
{
LED3
=
1
;
}
break
;
}
case
3
:
{
LED3
=
1
;
LINE_OUT_NEG_06
=
0
;
LINE_OUT_NEG_05
=
1
;
LINE_jinguang
=
0
;
POWER_CTRL_KL30_Current
=
0
;
LED4
=
0
;
POWER_CTRL_KL30
=
0
;
break
;
}
case
4
:
{
LED3
=
0
;
LINE_OUT_NEG_06
=
0
;
LINE_OUT_NEG_05
=
1
;
LINE_jinguang
=
0
;
POWER_CTRL_KL30_Current
=
0
;
LED4
=
0
;
POWER_CTRL_KL30
=
0
;
break
;
}
case
5
:
{
LED3
=
0
;
LINE_OUT_NEG_06
=
0
;
LINE_OUT_NEG_05
=
1
;
LINE_jinguang
=
0
;
POWER_CTRL_KL30_Current
=
0
;
LED4
=
0
;
POWER_CTRL_KL30
=
0
;
queren
=
0
;
// ABStime = 0;
break
;
}
case
6
:
{
LED3
=
0
;
LINE_OUT_NEG_06
=
0
;
LINE_OUT_NEG_05
=
1
;
LINE_jinguang
=
0
;
POWER_CTRL_KL30_Current
=
0
;
LED4
=
0
;
POWER_CTRL_KL30
=
0
;
if
(
ABStime
<
30
)
{
ABStime
++
;
}
else
{
queren
=
1
;
ABStime
=
0
;
}
break
;
}
case
7
:
{
LED3
=
0
;
LINE_OUT_NEG_06
=
0
;
LINE_OUT_NEG_05
=
0
;
LINE_jinguang
=
0
;
POWER_CTRL_KL30_Current
=
0
;
LED4
=
0
;
POWER_CTRL_KL30
=
0
;
queren
=
0
;
// ABStime = 0;
break
;
}
case
8
:
{
LED3
=
0
;
LINE_OUT_NEG_06
=
0
;
LINE_OUT_NEG_05
=
1
;
LINE_jinguang
=
0
;
LED4
=
0
;
POWER_CTRL_KL30_Current
=
1
;
POWER_CTRL_KL30
=
0
;
break
;
}
case
9
:
{
LED3
=
0
;
LINE_OUT_NEG_06
=
0
;
LINE_OUT_NEG_05
=
1
;
LINE_jinguang
=
0
;
LED4
=
0
;
POWER_CTRL_KL30_Current
=
0
;
POWER_CTRL_KL30
=
0
;
break
;
}
case
10
:
{
LED3
=
1
;
LED4
=
1
;
LINE_OUT_NEG_05
=
0
;
LINE_OUT_NEG_06
=
1
;
LINE_jinguang
=
1
;
POWER_CTRL_KL30_Current
=
1
;
POWER_CTRL_KL30
=
1
;
break
;
}
case
11
:
{
if
(
Auto_ONOFF
==
0
)
{
LINE_OUT_NEG_01
=
1
;
LINE_OUT_NEG_04
=
1
;
}
LINE_OUT_NEG_02
=
1
;
LINE_OUT_NEG_03
=
1
;
LED3
=
1
;
LED4
=
1
;
LINE_OUT_NEG_05
=
0
;
LINE_OUT_NEG_06
=
1
;
LINE_jinguang
=
1
;
POWER_CTRL_KL30
=
1
;
POWER_CTRL_KL30_Current
=
1
;
break
;
}
case
12
:
{
POWER_CTRL_KL30_Current
=
1
;
if
(
Auto_ONOFF
==
0
)
{
LINE_OUT_NEG_01
=
0
;
}
LINE_OUT_NEG_02
=
0
;
LINE_OUT_NEG_03
=
1
;
LINE_OUT_NEG_04
=
0
;
break
;
}
case
13
:
{
POWER_CTRL_KL30_Current
=
0
;
if
(
Auto_ONOFF
==
0
)
{
LINE_OUT_NEG_01
=
0
;
}
LINE_OUT_NEG_02
=
0
;
LINE_OUT_NEG_03
=
1
;
LINE_OUT_NEG_04
=
0
;
break
;
}
case
14
:
{
LED3
=
0
;
//右转
LED4
=
0
;
LINE_OUT_NEG_05
=
0
;
LINE_OUT_NEG_06
=
1
;
LINE_jinguang
=
0
;
POWER_CTRL_KL30_Current
=
0
;
if
(
Auto_ONOFF
==
0
)
{
LINE_OUT_NEG_01
=
0
;
LINE_OUT_NEG_04
=
1
;
}
LINE_OUT_NEG_02
=
1
;
LINE_OUT_NEG_03
=
1
;
POWER_CTRL_KL30
=
0
;
break
;
}
case
15
:
{
LED3
=
0
;
//右转
LED4
=
0
;
LINE_OUT_NEG_05
=
0
;
LINE_OUT_NEG_06
=
1
;
LINE_jinguang
=
0
;
POWER_CTRL_KL30_Current
=
0
;
if
(
Auto_ONOFF
==
0
)
{
LINE_OUT_NEG_01
=
0
;
LINE_OUT_NEG_04
=
0
;
}
LINE_OUT_NEG_02
=
0
;
LINE_OUT_NEG_03
=
0
;
POWER_CTRL_KL30
=
0
;
break
;
}
case
16
:
{
LED3
=
0
;
//右转
LED4
=
0
;
LINE_OUT_NEG_05
=
0
;
LINE_OUT_NEG_06
=
1
;
LINE_jinguang
=
0
;
POWER_CTRL_KL30_Current
=
0
;
if
(
Auto_ONOFF
==
0
)
{
LINE_OUT_NEG_01
=
1
;
LINE_OUT_NEG_04
=
1
;
}
LINE_OUT_NEG_02
=
1
;
LINE_OUT_NEG_03
=
1
;
POWER_CTRL_KL30
=
0
;
break
;
}
// case 21:
// {
// LINE_OUT_POS_01 = 1;
// LINE_OUT_NEG_02 = 0;
// LINE_OUT_NEG_01 = 0;
// break;
// }
// case 22:
// {
// LINE_OUT_POS_01 = 1;
// LINE_OUT_NEG_02 = 1;
// LINE_OUT_NEG_01 = 1;
// Display_Menu_Type = 3;
// if( (Get_ID_HandBrakeSts() != 1) ||
// (Get_CAN_CH0_ID_10FF4117_Sig_Seatbeltsts() != 1) ||
// (Get_CAN_CH0_ID_10FF1017_Sig_HighBeamSts() != 1) ||
// (Get_CAN_CH0_ID_10FF1017_Sig_LowBeamSts() != 1) || (Get_CAN_CH0_ID_10FF1017_Sig_FrontFogLightSts() != 1) )
// {
// LED_Waring = 1;
// }
// else
// {
// LED_Waring = 0;
// }
// break;
// }
// case 23:
// {
// LINE_OUT_POS_01 = 0;
// LINE_OUT_NEG_02 = 0;
// LINE_OUT_NEG_01 = 0;
// break;
// }
default:
break
;
// }
}
}
}
void
Get_ODO_Call
(
void
)
void
Get_ODO_Call
(
void
)
{
{
...
...
YueJin_test_bench/source/Appliciation/Check_Ctrl.h
View file @
4f21b111
...
@@ -44,7 +44,7 @@ extern unsigned int loc_Step;
...
@@ -44,7 +44,7 @@ extern unsigned int loc_Step;
extern
unsigned
char
KEYBUFFER
[
4
];
extern
unsigned
char
KEYBUFFER
[
4
];
extern
unsigned
int
CAN_Msg_Tx_Enable
;
extern
unsigned
int
CAN_Msg_Tx_Enable
;
extern
uint8_t
loc_Type_back
;
extern
uint8_t
loc_Type_back
;
extern
uint8_t
LED_Waring
;
//
extern uint8_t LED_Waring ;
void
SET_IPK_NONE
(
void
);
void
SET_IPK_NONE
(
void
);
void
Clear_IPK_NONE
(
void
);
void
Clear_IPK_NONE
(
void
);
...
...
YueJin_test_bench/source/Appliciation/RTE_CAN.c
View file @
4f21b111
...
@@ -31,22 +31,24 @@ void Can_Init(void)
...
@@ -31,22 +31,24 @@ void Can_Init(void)
{
{
CAN_Frame_st_t
stCANFrame
;
CAN_Frame_st_t
stCANFrame
;
RSCAN0_Config_st_t
loc_can
=
{
0
};
RSCAN0_Config_st_t
loc_can
=
{
0
};
loc_can
.
stRSCANCh2
.
u32RSCANChEn
=
0U
;
//
loc_can.stRSCANCh2.u32RSCANChEn = 0U;
loc_can
.
stRSCANCh2
.
enRSCANChBps
=
RSCAN_Baud_Rate_250K
;
//
loc_can.stRSCANCh2.enRSCANChBps = RSCAN_Baud_Rate_250K;
loc_can
.
stRSCANCh2
.
u32RSCANChRuleSize
=
CANFD0_CH2_RX_RULE_SIZE
;
//
loc_can.stRSCANCh2.u32RSCANChRuleSize = CANFD0_CH2_RX_RULE_SIZE;
loc_can
.
stRSCANCh2
.
pfnRSCANConfirmCallBack
=
Can_Confirm
;
//
loc_can.stRSCANCh2.pfnRSCANConfirmCallBack = Can_Confirm;
loc_can
.
stRSCANCh2
.
pfnRSCANReadMsgCallBack
=
Can_Read_Msg
;
//
loc_can.stRSCANCh2.pfnRSCANReadMsgCallBack = Can_Read_Msg;
loc_can
.
stRSCANCh2
.
pfnRSCANAbortConfirmCallBack
=
0
;
//
loc_can.stRSCANCh2.pfnRSCANAbortConfirmCallBack = 0;
loc_can
.
stRSCANCh4
.
u32RSCANChEn
=
1U
;
loc_can
.
stRSCANCh4
.
u32RSCANChEn
=
1U
;
loc_can
.
stRSCANCh4
.
enRSCANChBps
=
RSCAN_Baud_Rate_
25
0K
;
loc_can
.
stRSCANCh4
.
enRSCANChBps
=
RSCAN_Baud_Rate_
50
0K
;
loc_can
.
stRSCANCh4
.
u32RSCANChRuleSize
=
CANFD0_CH4_RX_RULE_SIZE
;
loc_can
.
stRSCANCh4
.
u32RSCANChRuleSize
=
CANFD0_CH4_RX_RULE_SIZE
;
loc_can
.
stRSCANCh4
.
pfnRSCANConfirmCallBack
=
Can_Confirm
;
loc_can
.
stRSCANCh4
.
pfnRSCANConfirmCallBack
=
Can_Confirm
;
loc_can
.
stRSCANCh4
.
pfnRSCANReadMsgCallBack
=
Can_Read_Msg
;
loc_can
.
stRSCANCh4
.
pfnRSCANReadMsgCallBack
=
Can_Read_Msg
;
loc_can
.
stRSCANCh4
.
pfnRSCANAbortConfirmCallBack
=
0
;
loc_can
.
stRSCANCh4
.
pfnRSCANAbortConfirmCallBack
=
0
;
CAN_RST
=
0
;
RSCAN0_CH_Init
(
CANFD_RX_RULE_TABLE_LIST
,
&
loc_can
);
RSCAN0_CH_Init
(
CANFD_RX_RULE_TABLE_LIST
,
&
loc_can
);
CAN_TX_SetEnable
(
0x55
);
// stCANFrame.u32CANID=0x666;
// stCANFrame.u32CANID=0x666;
// stCANFrame.u8CANFrameIDE=0;
// stCANFrame.u8CANFrameIDE=0;
...
@@ -96,7 +98,8 @@ uint8_t Can_Write(_CAN_Msg *Msg)
...
@@ -96,7 +98,8 @@ uint8_t Can_Write(_CAN_Msg *Msg)
uint32_t
idx
;
uint32_t
idx
;
m_msg
.
u32CANID
=
Msg
->
MsgID
;
m_msg
.
u32CANID
=
Msg
->
MsgID
;
m_msg
.
u8CANLEN
=
Msg
->
MsgDLC
;
m_msg
.
u8CANLEN
=
Msg
->
MsgDLC
;
m_msg
.
u8CANFrameIDE
=
1
;
m_msg
.
u8CANFrameIDE
=
0
;
m_msg
.
u8CANFrameType
=
0
;
for
(
i
=
0
;
i
<
m_msg
.
u8CANLEN
;
i
++
)
for
(
i
=
0
;
i
<
m_msg
.
u8CANLEN
;
i
++
)
{
{
m_msg
.
unCANData
.
u8CANData
[
i
]
=
Msg
->
Msg
[
i
];
m_msg
.
unCANData
.
u8CANData
[
i
]
=
Msg
->
Msg
[
i
];
...
@@ -117,7 +120,8 @@ uint8_t Can_Write_FIFO(_CAN_Msg *Msg)
...
@@ -117,7 +120,8 @@ uint8_t Can_Write_FIFO(_CAN_Msg *Msg)
uint32_t
idx
;
uint32_t
idx
;
m_msg
.
u32CANID
=
Msg
->
MsgID
;
m_msg
.
u32CANID
=
Msg
->
MsgID
;
m_msg
.
u8CANLEN
=
Msg
->
MsgDLC
;
m_msg
.
u8CANLEN
=
Msg
->
MsgDLC
;
m_msg
.
u8CANFrameIDE
=
1
;
m_msg
.
u8CANFrameIDE
=
0
;
m_msg
.
u8CANFrameType
=
0
;
for
(
i
=
0
;
i
<
m_msg
.
u8CANLEN
;
i
++
)
for
(
i
=
0
;
i
<
m_msg
.
u8CANLEN
;
i
++
)
{
{
m_msg
.
unCANData
.
u8CANData
[
i
]
=
Msg
->
Msg
[
i
];
m_msg
.
unCANData
.
u8CANData
[
i
]
=
Msg
->
Msg
[
i
];
...
@@ -154,7 +158,8 @@ void Can_Abort_All(void)
...
@@ -154,7 +158,8 @@ void Can_Abort_All(void)
/*****Lower*******/
/*****Lower*******/
void
Can_Read_Msg
(
uint32_t
m_id
,
uint8_t
m_dlc
,
uint8_t
m_Msg
[])
void
Can_Read_Msg
(
uint32_t
m_id
,
uint8_t
m_dlc
,
uint8_t
m_Msg
[])
{
{
Co_Can_Buff_Set
(
Co_Can_ConvertSubID
(
m_id
),
m_dlc
,
m_Msg
);
Co_Can_Buff_Set
(
&
CAN_CH4_CanMsgOp
,
Co_Can_ConvertSubID_CAN_CH4
(
m_id
),
m_dlc
,
m_Msg
);
//UDS_ReceivedMsg(m_id, m_dlc);
if
(
(
m_id
==
DIAG_ID_Rx_FUN
)
||
(
m_id
==
DIAG_ID_Rx_PHY
)
)
if
(
(
m_id
==
DIAG_ID_Rx_FUN
)
||
(
m_id
==
DIAG_ID_Rx_PHY
)
)
{
{
...
@@ -168,37 +173,12 @@ void Can_Confirm(uint32_t Identifier, uint8_t TransferStatus)
...
@@ -168,37 +173,12 @@ void Can_Confirm(uint32_t Identifier, uint8_t TransferStatus)
MSG_ID
=
0ul
;
MSG_ID
=
0ul
;
switch
(
Identifier
)
switch
(
Identifier
)
{
{
case
RSCAN_CHANNEL_BUF_2
:
MSG_ID
=
0x401ul
;
break
;
case
RSCAN_CHANNEL_BUF_3
:
MSG_ID
=
0x260ul
;
break
;
case
RSCAN_CHANNEL_BUF_4
:
MSG_ID
=
0x280ul
;
break
;
case
RSCAN_CHANNEL_BUF_5
:
MSG_ID
=
0x380ul
;
break
;
case
RSCAN_CHANNEL_BUF_6
:
MSG_ID
=
0x385ul
;
break
;
case
RSCAN_CHANNEL_BUF_7
:
MSG_ID
=
0x69bul
;
break
;
case
RSCAN_CHANNEL_BUF_8
:
MSG_ID
=
0x28Aul
;
break
;
case
RSCAN_CHANNEL_BUF_1
:
case
RSCAN_CHANNEL_BUF_1
:
MSG_ID
=
DIAG_ID_Tx
;
break
;
case
RSCAN_CHANNEL_BUF_0
:
MSG_ID
=
DIAG_ID_Tx
;
MSG_ID
=
DIAG_ID_Tx
;
DoCAN_L_Data_Confirm
(
MSG_ID
,
TransferStatus
);
DoCAN_L_Data_Confirm
(
MSG_ID
,
TransferStatus
);
break
;
break
;
default:
default:
break
;
break
;
}
}
...
...
YueJin_test_bench/source/Appliciation/RTE_GPIO.c
View file @
4f21b111
...
@@ -149,6 +149,14 @@ void RTE_GPIO_Init(void)
...
@@ -149,6 +149,14 @@ void RTE_GPIO_Init(void)
gpio_temp
.
enGPIODir
=
GPIO_DIR_IN
;
gpio_temp
.
enGPIODir
=
GPIO_DIR_IN
;
gpio_temp
.
enGPIOAltFun
=
GPIO_ALTER_FUN_1
;
gpio_temp
.
enGPIOAltFun
=
GPIO_ALTER_FUN_1
;
GPIO_Config
(
&
gpio_temp
);
GPIO_Config
(
&
gpio_temp
);
gpio_temp
.
enGPIOPort
=
GPIO_PORT_GROUP_0
;
gpio_temp
.
enGPIOPIN
=
GPIO_PIN_4
;
gpio_temp
.
enGPIOMode
=
GPIO_MODE_PORT
;
gpio_temp
.
enGPIODir
=
GPIO_DIR_OUT
;
gpio_temp
.
enGPIOAltFun
=
GPIO_ALTER_FUN_1
;
GPIO_Config
(
&
gpio_temp
);
queren
=
0
;
queren
=
0
;
LINE_OUT_POS_06
=
0
;
LINE_OUT_POS_06
=
0
;
LINE_OUT_POS_07
=
0
;
LINE_OUT_POS_07
=
0
;
...
...
YueJin_test_bench/source/Appliciation/RTE_GPIO.h
View file @
4f21b111
...
@@ -24,12 +24,12 @@
...
@@ -24,12 +24,12 @@
#define SW1 GPIO_IN_APORT00_PIN00
#define SW1 GPIO_IN_APORT00_PIN00
#define SW2 GPIO_IN_PORT10_PIN05
#define SW2 GPIO_IN_PORT10_PIN05
#define SW3 GPIO_IN_APORT00_PIN01
#define SW3 GPIO_IN_APORT00_PIN01
#define SW4 GPIO_IN_APORT00_PIN02
//按键-
#define SW4 GPIO_IN_APORT00_PIN02
#define SW5 GPIO_IN_APORT00_PIN03
//按键+
#define SW5 GPIO_IN_APORT00_PIN03
#define SW6 GPIO_IN_APORT00_PIN04
#define SW6 GPIO_IN_APORT00_PIN04
#define SW7 GPIO_IN_APORT00_PIN05
#define SW7 GPIO_IN_APORT00_PIN05
#define SW8 GPIO_IN_APORT00_PIN06
//右转
#define SW8 GPIO_IN_APORT00_PIN06
#define SW9 GPIO_IN_PORT09_PIN00
#define SW9 GPIO_IN_PORT09_PIN00
#define SW10 GPIO_IN_PORT10_PIN06
#define SW10 GPIO_IN_PORT10_PIN06
...
@@ -57,7 +57,7 @@
...
@@ -57,7 +57,7 @@
#define SD_FMQ GPIO_OUT_PORT10_PIN02
#define SD_FMQ GPIO_OUT_PORT10_PIN02
// #define PWM_FMQ GPIO_OUT_PORT10_PIN06
// #define PWM_FMQ GPIO_OUT_PORT10_PIN06
#define CAN_RST GPIO_OUT_PORT00_PIN04
#define NEG_1_Ctrl GPIO_OUT_PORT09_PIN06
#define NEG_1_Ctrl GPIO_OUT_PORT09_PIN06
#define NEG_2_Ctrl GPIO_OUT_PORT09_PIN05
#define NEG_2_Ctrl GPIO_OUT_PORT09_PIN05
...
...
YueJin_test_bench/source/Appliciation/TYW_stdint.h
View file @
4f21b111
#ifndef TYWTYPES_H
#ifndef TYWTYPES_H
#define TYWTYPES_H
#define TYWTYPES_H
#ifndef Platform_RH850
#ifndef Platform_RH850
#define Platform_RH850
#define Platform_RH850
#endif
#endif
/*
/*
变量长度(byte) XHY 324 3360 rh850 SAMC21
变量长度(byte) XHY 324 3360 rh850 SAMC21
...
@@ -382,7 +381,29 @@ typedef long int32_t;
...
@@ -382,7 +381,29 @@ typedef long int32_t;
#define NVM_RelaxRemind_4H 2u
#define NVM_RelaxRemind_4H 2u
typedef
enum
{
CAN_MSG_TX_CYCLE
=
0u
,
CAN_MSG_TX_CYCKE_EVENT
,
}
CAN_TX_Type_t
;
typedef
enum
{
MSG_STD
=
0u
,
MSG_EXT
,
}
CAN_MSG_FORMAT_t
;
typedef
enum
{
CAN_FRAME_CAN
=
0u
,
CAN_FRAME_CANFD
,
}
CAN_FRAME_TYPE_t
;
typedef
enum
{
CAN_Intel
=
0u
,
CAN_Motorola
,
}
CAN_MSG_Endian_t
;
#endif
#endif
YueJin_test_bench/source/Appliciation/Task.c
View file @
4f21b111
...
@@ -61,8 +61,6 @@ void Sys_Run_Mode_Pseudo_Real_Time_Tasks(void)
...
@@ -61,8 +61,6 @@ void Sys_Run_Mode_Pseudo_Real_Time_Tasks(void)
------------------------------------------------------------------------------*/
------------------------------------------------------------------------------*/
void
Sys_Run_Mode_2ms_Tasks_Group
(
void
)
void
Sys_Run_Mode_2ms_Tasks_Group
(
void
)
{
{
// Can_Write_Fun(2); //报文外发
// COM_RX_Process( );
RTE_ADC_Services
(
);
RTE_ADC_Services
(
);
Get_static_Current
();
Get_static_Current
();
}
}
...
@@ -72,6 +70,8 @@ void Sys_Run_Mode_2ms_Tasks_Group(void)
...
@@ -72,6 +70,8 @@ void Sys_Run_Mode_2ms_Tasks_Group(void)
------------------------------------------------------------------------------*/
------------------------------------------------------------------------------*/
void
Sys_Run_Mode_5ms_Tasks_Group
(
void
)
void
Sys_Run_Mode_5ms_Tasks_Group
(
void
)
{
{
COM_RX_Process
(
);
COM_TX_Process
();
}
}
/*==============================================================================
/*==============================================================================
...
@@ -88,266 +88,21 @@ void Sys_Run_Mode_10ms_Tasks_Group(void)
...
@@ -88,266 +88,21 @@ void Sys_Run_Mode_10ms_Tasks_Group(void)
// BusOff_Service( );
// BusOff_Service( );
Key_Service
(
);
Key_Service
(
);
Recv_Byte
();
Recv_Byte
();
if
(
devicename
<
0xFFFF
)
{
devicename
++
;
}
else
{
devicename
=
0
;
}
if
(
firstpowerflag
==
2
)
{
if
(
clearOdoFlag
==
0
)
{
backsend
();
// RS485_TX_finish = 0;
if
(
RS485_TX_finish
==
0
)
{
LINE_OUT_NEG_09
=
1
;
if
(
LINE_OUT_NEG_09
==
1
)
{
if
(
connectbleFlag
==
0
)
{
if
(
zhenduanflag
==
0
)
{
// R485_Send_Line_0x47(MENU_CHECK_STEP);
RS485_User_Tx_Data
();
comparestart
=
0
;
}
else
if
(
zhenduanflag
==
1
)
{
R485_Send_0x47
();
comparestart
=
0
;
}
else
if
(
zhenduanflag
==
2
)
{
R485_Sendcheck_0x47
();
}
else
{
;
}
}
else
{
// if(send0x42time<0xFFFFFFFF)
// {
// send0x42time++;
// }
// if(bleOFFtoONtime<0xFFFFFFFF)
// {
// bleOFFtoONtime++;
// }
if
(
RS485_TX_finish
==
0
)
{
if
(
startONfalg
==
0
)
{
if
(
send0x42time
<
130
)
{
// if(sendflag == 1)
// {
R485_Send_0x42
();
// sendflag = 0;
// }
queren
=
0
;
}
else
{
// bleOFFtoONtime = 0;
// LINE_OUT_NEG_01 = 0;
// LINE_OUT_NEG_02 = 0;
// LINE_OUT_NEG_03 = 0;
// LINE_OUT_NEG_04 = 0;
startONfalg
=
1
;
Display_TFT_Clear
();
}
}
else
{
if
(
startIGONtime
>=
50
)
{
// LINE_OUT_NEG_01 = 1;
// LINE_OUT_NEG_02 = 1;
// LINE_OUT_NEG_03 = 1;
// LINE_OUT_NEG_04 = 1;
if
(
startIGONtime
>=
100
)
{
Openble
[
0
]
=
0x59
;
Openble
[
1
]
=
0x44
;
Openble
[
2
]
=
0xA
;
Openble
[
3
]
=
0x8A
;
Openble
[
4
]
=
0xA
;
Openble
[
5
]
=
0xA
;
Openble
[
6
]
=
name2
;
Openble
[
7
]
=
name1
;
Openble
[
8
]
=
1
;
Openble
[
9
]
=
0x4B
;
Openble
[
10
]
=
0x4A
;
// RS485_User_Tx_Data();
if
(
sendflag
==
1
)
{
R485_Send_0x41
();
sendflag
=
0
;
}
else
{
R485_Send_0x80
();
sendflag
=
1
;
}
blename
[
4
]
=
0xFF
;
// if(send0x42time % 20 == 0)
// {
UART_Ch2_Send_Multiple_Byte
(
Openble
,
sizeof
(
Openble
));
// if(startIGONtime > 500)
// {
// queren = 1;
// }
// }
}
}
}
RS485_send_time
=
0
;
RS485_TX_finish
=
1
;
}
else
{
}
}
}
// else
// {
// RS485_TX_finish = 0;
// }
}
else
{
// backsend();
// LINE_OUT_NEG_09 = 0;
// if(LINE_OUT_NEG_09 == 0)
// {
// }
}
}
else
{
MENU_CHECK_STEP
=
3
;
backsend
();
RS485_User_Tx_Data
();
if
(
clearodotime
<
3000
)
clearodotime
++
;
if
(
clearodotime
>=
1500
)
{
// Port_SetPortPinLevel(2,9,PortGpioHigh);
queren
=
1
;
}
}
}
}
}
/*==============================================================================
/*==============================================================================
20ms����ִ������ ��0��
20ms����ִ������ ��0��
------------------------------------------------------------------------------*/
------------------------------------------------------------------------------*/
uint8_t
time100mssend
=
0
;
void
Sys_Run_Mode_20ms_Tasks_Group0
(
void
)
void
Sys_Run_Mode_20ms_Tasks_Group0
(
void
)
{
{
// uint8_t data[8] = {0};
// uint32_t SpdN = 0;
// _CAN_Msg canMag;
// //Total_Check( );
// canMag.MsgID = 0x8FFF00B;
// FT_VehSpeedCalc_Main(FT_CurVehSpeed, &SpdN, SPEED_TO_CANMESSAGE);
// FT_Fill_VehSpeedCANMessage(SpdN, data);
// canMag.MsgDLC = 8u;
// canMag.MsgPro = 1u;
// memcpy(canMag.Msg, data, 8);
// Can_Write(&canMag);
if
(
time100mssend
<
2
)
{
time100mssend
++
;
}
else
{
// firstIGON = 0;
time100mssend
=
0
;
}
}
}
/*==============================================================================
/*==============================================================================
50ms����ִ������ ��0��
50ms����ִ������ ��0��
------------------------------------------------------------------------------*/
------------------------------------------------------------------------------*/
uint8_t
powerstu
=
0
;
uint32_t
timerms
=
0
;
void
Sys_Run_Mode_50ms_Tasks_Group
(
void
)
void
Sys_Run_Mode_50ms_Tasks_Group
(
void
)
{
{
static
uint32_t
timer_100ms
=
0
;
if
(
timer_100ms
<=
1000
)
{
timer_100ms
++
;
}
if
(
timerms
<=
1000
)
{
timerms
++
;
}
// if ( timer_100ms >= 500 )
// {
// if(powerstu == 0)
// {
// LINE_OUT_NEG_01 = 1;
// LINE_OUT_NEG_02 = 1;
// LINE_OUT_NEG_03 = 1;
// LINE_OUT_NEG_04 = 1;
// powerstu = 1;
// timer_100ms = 0;
// firstIGON = 1;
// timerms = 0;
// }
// else
// {
// LINE_OUT_NEG_01 = 0;
// LINE_OUT_NEG_02 = 0;
// LINE_OUT_NEG_03 = 0;
// LINE_OUT_NEG_04 = 0;
// powerstu = 0;
// timer_100ms = 400;
// firstIGON = 1;
// timerms = 0;
// }
// // Read_IPK_Session_Type( );//请求仪表发送 软硬件版本号 等数据。
// }
if
(
timerms
>=
60
)
{
firstIGON
=
0
;
}
firstIGON
=
0
;
}
}
/*==============================================================================
/*==============================================================================
...
@@ -364,207 +119,12 @@ uint16_t time5s = 0;
...
@@ -364,207 +119,12 @@ uint16_t time5s = 0;
uint16_t
IGFLAG
=
0
;
uint16_t
IGFLAG
=
0
;
void
Sys_Run_Mode_100ms_Tasks_Group
(
void
)
void
Sys_Run_Mode_100ms_Tasks_Group
(
void
)
{
{
static
uint32_t
loc_timer
=
0
;
loc_timer
++
;
if
(
loc_timer
>=
3
)
{
loc_timer
=
0
;
// HW_CHECK_IPK_EXIST( );
Recv_Byte1
();
}
Display_PageNum
();
Display_PageNum
();
//POWER_CTRL_KL30 = 1;
User_CheckMode_Service
(
100u
);
time5s
+=
100
;
//TFT_LCD_Draw_Bmp(3, 40, ( uint8_t * )gImage_Dsy_words_1X6_Y16);
if
(
time5s
>
10000
)
{
time5s
=
0
;
if
(
IGFLAG
==
1
)
{
IGFLAG
=
0
;
}
else
{
IGFLAG
=
1
;
}
}
POWER_CTRL_KL30
=
1
;
POWER_CTRL_KL30
=
1
;
POWER_CTRL_KL30_B
=
1
;
POWER_CTRL_KL30_B
=
1
;
if
(
IGFLAG
==
1
)
{
POWER_CTRL_KL15
=
1
;
POWER_CTRL_KL15
=
1
;
}
else
{
POWER_CTRL_KL15
=
0
;
}
// Freln_Duty_HZ_Service();
if
(
RS485_send_time
<
0xFFFFFFFF
)
{
RS485_send_time
++
;
}
if
(
firstpowerflag
==
2
)
{
if
(
AutoFlag
==
1
)
{
if
(
AutoTime
<=
200
)
{
AutoTime
++
;
}
else
{
MENU_CHECK_STEP_ADD
(
);
if
(
MENU_CHECK_STEP
==
0
)
{
MENU_CHECK_STEP
=
0
;
}
if
(
MENU_CHECK_STEP
==
13
)
{
AutoTime
=
0
;
}
else
{
AutoTime
=
160
;
}
}
}
if
(
Auto_ONOFF
==
1
)
{
if
(
ONOFFtime
<=
160
)
{
ONOFFtime
++
;
}
else
{
// if(LINE_OUT_NEG_01 == 1)
// {
// LINE_OUT_NEG_01 = 0;
// LINE_OUT_NEG_04 = 0;
// ONOFFtime = 0;
// }
// else
// {
// LINE_OUT_NEG_01 = 1;
// LINE_OUT_NEG_04 = 1;
// ONOFFtime = 0;
// }
}
}
if
(
flashtime
<
3
)
{
flashtime
++
;
}
else
{
if
(
comparestart
==
1
)
{
compareresult
=
GetDataCompare
();
// Display_TFT_Clear();
if
(
compareresult
==
1
)
{
TFT_LCD_Draw_Bmp
(
200
,
90
+
40
,
(
uint8_t
*
)
gImage_cuo1
);
// comparestart = 2;
}
else
{
TFT_LCD_Draw_Bmp
(
200
,
90
+
40
,
(
uint8_t
*
)
gImage_dui1
);
// comparestart = 2;
}
comparestart
=
0
;
// Display_TFT_Clear();
}
else
if
(
comparestart
==
0
)
{
//Total_Check( );
if
(
zhenduanflag
==
3
)
{
if
(
compareresult
==
1
)
{
TFT_LCD_Draw_Bmp
(
200
,
90
+
40
,
(
uint8_t
*
)
gImage_cuo1
);
// comparestart = 2;
}
else
{
TFT_LCD_Draw_Bmp
(
200
,
90
+
40
,
(
uint8_t
*
)
gImage_dui1
);
// comparestart = 2;
}
// comparestart = 1;
}
}
else
{
//Total_Check();
}
flashtime
=
0
;
}
// if(recvflag111 == 1)
// {
// blename[4] = 0xff;
// General_Number_Disp(blename, 3, 165);
// recvflag111 = 0;
// }
}
if
(
firstpowerflag
==
1
)
{
zhenduanflag
=
2
;
//Total_Check();
firstpowerflag
=
2
;
Display_TFT_Clear
();
if
(
compareresult
==
1
&&
comparestart
==
0
)
{
// Total_Check();
if
(
compareresult
==
1
)
{
TFT_LCD_Draw_Bmp
(
200
,
90
+
40
,
(
uint8_t
*
)
gImage_cuo1
);
// comparestart = 2;
}
else
{
TFT_LCD_Draw_Bmp
(
200
,
90
+
40
,
(
uint8_t
*
)
gImage_dui1
);
// comparestart = 2;
}
//Total_Check();
firstpowerflag
=
3
;
// zhendlag = 5;
}
}
else
{
if
(
compareresult
==
1
)
{
//Total_Check();
firstpowerflag
=
3
;
zhenduanflag
=
2
;
if
(
compareresult
==
1
)
{
TFT_LCD_Draw_Bmp
(
200
,
90
+
40
,
(
uint8_t
*
)
gImage_cuo1
);
// comparestart = 2;
}
else
{
TFT_LCD_Draw_Bmp
(
200
,
90
+
40
,
(
uint8_t
*
)
gImage_dui1
);
// comparestart = 2;
}
// Total_Check();
// zhenduanflag = 5;
}
// zhenduanflag = 2;
}
//u16LJSText = TFT_LCD_REQ_FIFO_MAX_DEPTH;
}
}
/*=================================================================*/
/*=================================================================*/
...
...
YueJin_test_bench/source/Driver/CAN/RSCAN.h
View file @
4f21b111
...
@@ -113,6 +113,10 @@ typedef struct
...
@@ -113,6 +113,10 @@ typedef struct
uint32_t
u32CANID
;
uint32_t
u32CANID
;
uint8_t
u8CANLEN
;
uint8_t
u8CANLEN
;
uint8_t
u8CANFrameIDE
;
/*0: Standard ID . 1: Extended ID */
uint8_t
u8CANFrameIDE
;
/*0: Standard ID . 1: Extended ID */
uint8_t
u8CANFrameType
;
/*0: CAN 1: CANFD */
uint8_t
u8CANReserved1
;
uint8_t
u8CANReserved2
;
uint8_t
u8CANReserved3
;
}
CAN_Frame_st_t
;
}
CAN_Frame_st_t
;
...
...
YueJin_test_bench/source/System/init.c
View file @
4f21b111
...
@@ -73,8 +73,11 @@ void Sys_Startup_Init(void)
...
@@ -73,8 +73,11 @@ void Sys_Startup_Init(void)
GPIO_SET_KEPP
(
);
GPIO_SET_KEPP
(
);
RTE_ADC_Init
(
);
RTE_ADC_Init
(
);
// COM_CAN_Init( );
CAN_RST
=
1
;
// Can_Init( );
Can_Init
();
COM_CAN_Init
(
);
enable_interrupt
(
);
enable_interrupt
(
);
Sys_Tick_Timer_Start
(
);
Sys_Tick_Timer_Start
(
);
TFT_LCD_Startup
(
);
TFT_LCD_Startup
(
);
...
@@ -113,7 +116,7 @@ void Sys_Startup_Init(void)
...
@@ -113,7 +116,7 @@ void Sys_Startup_Init(void)
// UART_Init(UART_RLIN32, &loc_config);
// UART_Init(UART_RLIN32, &loc_config);
Display_TFT_Clear
();
Display_TFT_Clear
();
GUI_Display_Version_Code_Service
(
25
,
20
,
"Please Scan The Code "
,
Letter_Num_11
,
PCodeText_Space_size
);
//
GUI_Display_Version_Code_Service(25, 20, "Please Scan The Code ", Letter_Num_11, PCodeText_Space_size);
/*上电扫码校验功能如果需要扫码校验注释掉firstpowerflag = 2,打开上面两行的注释即可*/
/*上电扫码校验功能如果需要扫码校验注释掉firstpowerflag = 2,打开上面两行的注释即可*/
// firstpowerflag = 2;
// firstpowerflag = 2;
...
...
YueJin_test_bench/source/System/main.c
View file @
4f21b111
...
@@ -5,6 +5,7 @@
...
@@ -5,6 +5,7 @@
#include "init.h"
#include "init.h"
#include "Task_Scheduler.h"
#include "Task_Scheduler.h"
#include "RTE_WDT.h"
#include "RTE_WDT.h"
#include "COM_CAN.h"
static
void
Sys_Task_Init
(
void
);
static
void
Sys_Task_Init
(
void
);
...
...
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