can_params.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: 2016 OTA keys S.A.
3  * SPDX-License-Identifier: LGPL-2.1-only
4  */
5 
6 #pragma once
7 
19 #include "can/device.h"
20 #include "periph/can.h"
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
27 static const can_conf_t candev_conf[] = {
28  {
29 #if defined(CPU_FAM_STM32G4)
30  .can = FDCAN1,
31  .rcc_mask = RCC_APB1ENR1_FDCANEN,
32  .rx_pin = GPIO_PIN(PORT_A, 11),
33  .tx_pin = GPIO_PIN(PORT_A, 12),
34  .af = GPIO_AF9,
35  .it0_irqn = FDCAN1_IT0_IRQn,
36  .it1_irqn = FDCAN1_IT1_IRQn,
37 #elif defined(CPU_FAM_STM32F0)
38  .can = CAN,
39  .rcc_mask = RCC_APB1ENR_CANEN,
40  .rx_pin = GPIO_PIN(PORT_A, 11),
41  .tx_pin = GPIO_PIN(PORT_A, 12),
42  .af = GPIO_AF4,
43  .irqn = CEC_CAN_IRQn,
44 #else
45  .can = CAN1,
46 #if defined(CPU_FAM_STM32L4)
47  .rcc_mask = RCC_APB1ENR1_CAN1EN,
48 #else
49  .rcc_mask = RCC_APB1ENR_CAN1EN,
50 #if CANDEV_STM32_CHAN_NUMOF > 1
51  .can_master = CAN1,
52  .master_rcc_mask = RCC_APB1ENR_CAN1EN,
53  .first_filter = 0,
54  .nb_filters = 14,
55 #endif
56 #endif
57 #if defined(CPU_FAM_STM32F1)
58  .rx_pin = GPIO_PIN(PORT_A, 11),
59  .tx_pin = GPIO_PIN(PORT_A, 12),
60 #elif defined(CPU_FAM_STM32L4) || defined(CPU_FAM_STM32F4)
61 
62 #if defined(CPU_MODEL_STM32L432KC)
63  .rx_pin = GPIO_PIN(PORT_A, 11),
64  .tx_pin = GPIO_PIN(PORT_A, 12),
65  .af = GPIO_AF9,
66 #else
67  .rx_pin = GPIO_PIN(PORT_B, 8),
68  .tx_pin = GPIO_PIN(PORT_B, 9),
69  .af = GPIO_AF9,
70 #endif
71 #else
72  .rx_pin = GPIO_PIN(PORT_D, 0),
73  .tx_pin = GPIO_PIN(PORT_D, 1),
74  .af = GPIO_AF9,
75 #endif
76  .tx_irqn = CAN1_TX_IRQn,
77  .rx0_irqn = CAN1_RX0_IRQn,
78  .rx1_irqn = CAN1_RX1_IRQn,
79  .sce_irqn = CAN1_SCE_IRQn,
80 #endif
81  .en_deep_sleep_wake_up = true,
82  .ttcm = 0,
83  .abom = 1,
84  .awum = 1,
85  .nart = 0,
86  .rflm = 0,
87  .txfp = 0,
88  },
89 #if (CANDEV_STM32_CHAN_NUMOF >= 2) && (CAN_DLL_NUMOF >= 2)
90  {
91  .can = CAN2,
92  .rcc_mask = RCC_APB1ENR_CAN2EN,
93  .can_master = CAN1,
94  .master_rcc_mask = RCC_APB1ENR_CAN1EN,
95  .first_filter = 14,
96  .nb_filters = 14,
97  .rx_pin = GPIO_PIN(PORT_B, 5),
98  .tx_pin = GPIO_PIN(PORT_B, 6),
99 #ifndef CPU_FAM_STM32F1
100  .af = GPIO_AF9,
101 #endif
102  .en_deep_sleep_wake_up = true,
103  .tx_irqn = CAN2_TX_IRQn,
104  .rx0_irqn = CAN2_RX0_IRQn,
105  .rx1_irqn = CAN2_RX1_IRQn,
106  .sce_irqn = CAN2_SCE_IRQn,
107  .ttcm = 0,
108  .abom = 1,
109  .awum = 1,
110  .nart = 0,
111  .rflm = 0,
112  .txfp = 0,
113  },
114 #endif
115 #if (CANDEV_STM32_CHAN_NUMOF >= 3) && (CAN_DLL_NUMOF >= 3)
116  {
117  .can = CAN3,
118  .rcc_mask = RCC_APB1ENR_CAN3EN,
119  .can_master = CAN3,
120  .master_rcc_mask = RCC_APB1ENR_CAN3EN,
121  .first_filter = 0,
122  .nb_filters = 14,
123  .rx_pin = GPIO_PIN(PORT_B, 3),
124  .tx_pin = GPIO_PIN(PORT_B, 4),
125  .af = GPIO_AF11,
126  .en_deep_sleep_wake_up = true,
127  .tx_irqn = CAN3_TX_IRQn,
128  .rx0_irqn = CAN3_RX0_IRQn,
129  .rx1_irqn = CAN3_RX1_IRQn,
130  .sce_irqn = CAN3_SCE_IRQn,
131  .ttcm = 0,
132  .abom = 1,
133  .awum = 1,
134  .nart = 0,
135  .rflm = 0,
136  .txfp = 0,
137  },
138 #endif
139 };
140 
142 static const candev_params_t candev_params[] = {
143  {
144  .name = "can_stm32_0",
145  },
146 #if (CANDEV_STM32_CHAN_NUMOF >= 2) && (CAN_DLL_NUMOF >= 2)
147  {
148  .name = "can_stm32_1",
149  },
150 #endif
151 #if (CANDEV_STM32_CHAN_NUMOF >= 3) && (CAN_DLL_NUMOF >= 3)
152  {
153  .name = "can_stm32_2",
154  },
155 #endif
156 };
157 
158 #ifdef __cplusplus
159 }
160 #endif
@ PORT_B
port B
Definition: periph_cpu.h:44
@ PORT_A
port A
Definition: periph_cpu.h:43
@ PORT_D
port D
Definition: periph_cpu.h:46
#define GPIO_PIN(x, y)
Define a CPU specific GPIO pin generator macro.
Definition: periph_cpu.h:42
@ GPIO_AF4
use alternate function 4
Definition: cpu_gpio.h:102
@ GPIO_AF9
use alternate function 9
Definition: cpu_gpio.h:108
@ GPIO_AF11
use alternate function 11
Definition: cpu_gpio.h:110
Low-level CAN peripheral driver interface definitions.
ESP CAN device configuration.
Definition: can_esp.h:84
Linux candev configuration.
Definition: candev_linux.h:43
Parameters to initialize a candev.
Definition: device.h:54
const char * name
candev name to set
Definition: device.h:55
Definitions of CAN device interface.