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