Loading...
Searching...
No Matches
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
18
19#include "can/device.h"
20#include "periph/can.h"
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
27static 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
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.
Parameters to initialize a candev.
Definition device.h:54
Definitions of CAN device interface.
struct candev_params candev_params_t
Parameters to initialize a candev.