PER Firmware
Loading...
Searching...
No Matches
fdcan.h
1#ifndef __PHAL_G4_FDCAN_H__
2#define __PHAL_G4_FDCAN_H__
3
4#include "common/phal_G4/phal_G4.h"
5
6typedef struct {
7 FDCAN_GlobalTypeDef *Bus;
8 uint16_t StdId;
9 uint32_t ExtId;
10 uint32_t
11 IDE;
12 uint32_t DLC;
13 uint8_t Data[8];
15
16bool PHAL_FDCAN_init(FDCAN_GlobalTypeDef *fdcan, bool test_mode, uint32_t bit_rate);
17void PHAL_FDCAN_setFilters(
18 FDCAN_GlobalTypeDef *fdcan,
19 uint32_t *sid_list,
20 uint32_t num_sid,
21 uint32_t *xid_list,
22 uint32_t num_xid
23);
24void PHAL_FDCAN_send(CanMsgTypeDef_t *msg);
25bool PHAL_FDCAN_txFifoFree(FDCAN_GlobalTypeDef *fdcan);
26extern void PHAL_FDCAN_rxCallback(CanMsgTypeDef_t *msg);
27extern void PHAL_FDCAN_txCallback(FDCAN_GlobalTypeDef *fdcan);
28
29#define MAX_NUM_XID_FILTER (8)
30#define MAX_NUM_SID_FILTER (28)
31
32#define AF_NUM_FDCAN1 (9)
33#define AF_NUM_FDCAN2 (9)
34#define AF_NUM_FDCAN3 (11)
35
36// FDCAN1 GPIO definitions (PA11/PA12 or PB8/PB9)
37#define GPIO_INIT_FDCAN1RX_PA11 \
38 GPIO_INIT_AF(GPIOA, \
39 11, \
40 AF_NUM_FDCAN1, \
41 GPIO_OUTPUT_ULTRA_SPEED, \
42 GPIO_OUTPUT_OPEN_DRAIN, \
43 GPIO_INPUT_OPEN_DRAIN)
44#define GPIO_INIT_FDCAN1TX_PA12 \
45 GPIO_INIT_AF(GPIOA, \
46 12, \
47 AF_NUM_FDCAN1, \
48 GPIO_OUTPUT_ULTRA_SPEED, \
49 GPIO_OUTPUT_PUSH_PULL, \
50 GPIO_INPUT_OPEN_DRAIN)
51
52// !!! double check the AF number for PB8/PB9, not validated yet
53#define GPIO_INIT_FDCAN1RX_PB8 \
54 GPIO_INIT_AF(GPIOB, \
55 8, \
56 AF_NUM_FDCAN1, \
57 GPIO_OUTPUT_ULTRA_SPEED, \
58 GPIO_OUTPUT_OPEN_DRAIN, \
59 GPIO_INPUT_OPEN_DRAIN)
60#define GPIO_INIT_FDCAN1TX_PB9 \
61 GPIO_INIT_AF(GPIOB, \
62 9, \
63 AF_NUM_FDCAN1, \
64 GPIO_OUTPUT_ULTRA_SPEED, \
65 GPIO_OUTPUT_PUSH_PULL, \
66 GPIO_INPUT_OPEN_DRAIN)
67
68// FDCAN2 GPIO definitions (PB12/PB13 or PB5/PB6)
69#define GPIO_INIT_FDCAN2RX_PB12 \
70 GPIO_INIT_AF(GPIOB, \
71 12, \
72 AF_NUM_FDCAN2, \
73 GPIO_OUTPUT_ULTRA_SPEED, \
74 GPIO_OUTPUT_OPEN_DRAIN, \
75 GPIO_INPUT_OPEN_DRAIN)
76#define GPIO_INIT_FDCAN2TX_PB13 \
77 GPIO_INIT_AF(GPIOB, \
78 13, \
79 AF_NUM_FDCAN2, \
80 GPIO_OUTPUT_ULTRA_SPEED, \
81 GPIO_OUTPUT_PUSH_PULL, \
82 GPIO_INPUT_OPEN_DRAIN)
83#define GPIO_INIT_FDCAN2RX_PB5 \
84 GPIO_INIT_AF(GPIOB, \
85 5, \
86 AF_NUM_FDCAN2, \
87 GPIO_OUTPUT_ULTRA_SPEED, \
88 GPIO_OUTPUT_OPEN_DRAIN, \
89 GPIO_INPUT_OPEN_DRAIN)
90#define GPIO_INIT_FDCAN2TX_PB6 \
91 GPIO_INIT_AF(GPIOB, \
92 6, \
93 AF_NUM_FDCAN2, \
94 GPIO_OUTPUT_ULTRA_SPEED, \
95 GPIO_OUTPUT_PUSH_PULL, \
96 GPIO_INPUT_OPEN_DRAIN)
97
98// FDCAN3 GPIO definitions (PA8/PB4 or PA15/PB3)
99#define GPIO_INIT_FDCAN3RX_PA8 \
100 GPIO_INIT_AF(GPIOA, \
101 8, \
102 AF_NUM_FDCAN3, \
103 GPIO_OUTPUT_ULTRA_SPEED, \
104 GPIO_OUTPUT_OPEN_DRAIN, \
105 GPIO_INPUT_OPEN_DRAIN)
106#define GPIO_INIT_FDCAN3TX_PB4 \
107 GPIO_INIT_AF(GPIOB, \
108 4, \
109 AF_NUM_FDCAN3, \
110 GPIO_OUTPUT_ULTRA_SPEED, \
111 GPIO_OUTPUT_PUSH_PULL, \
112 GPIO_INPUT_OPEN_DRAIN)
113#define GPIO_INIT_FDCAN3TX_PA15 \
114 GPIO_INIT_AF(GPIOA, \
115 15, \
116 AF_NUM_FDCAN3, \
117 GPIO_OUTPUT_ULTRA_SPEED, \
118 GPIO_OUTPUT_OPEN_DRAIN, \
119 GPIO_INPUT_OPEN_DRAIN)
120#define GPIO_INIT_FDCAN3TX_PB3 \
121 GPIO_INIT_AF(GPIOB, \
122 3, \
123 AF_NUM_FDCAN3, \
124 GPIO_OUTPUT_ULTRA_SPEED, \
125 GPIO_OUTPUT_PUSH_PULL, \
126 GPIO_INPUT_OPEN_DRAIN)
127
128#endif // __PHAL_G4_FDCAN_H__
Definition can.h:37
FDCAN_GlobalTypeDef * Bus
Definition fdcan.h:7