38#define CANDEV_STM32_CHAN_NUMOF 3 
   40#define CANDEV_STM32_CHAN_NUMOF 2 
   41#elif defined(CAN1) || defined(CAN) || DOXYGEN 
   42#define CANDEV_STM32_CHAN_NUMOF 1 
   44#error "CAN STM32: CPU not supported" 
   51#if defined(CPU_FAM_STM32F1) 
   52#define ISR_CAN1_TX     isr_usb_hp_can1_tx 
   53#define ISR_CAN1_RX0    isr_usb_lp_can1_rx0 
   54#define ISR_CAN1_RX1    isr_can1_rx1 
   55#define ISR_CAN1_SCE    isr_can1_sce 
   57#define ISR_CAN1_TX     isr_can1_tx 
   58#define ISR_CAN1_RX0    isr_can1_rx0 
   59#define ISR_CAN1_RX1    isr_can1_rx1 
   60#define ISR_CAN1_SCE    isr_can1_sce 
   61#define ISR_CAN2_TX     isr_can2_tx 
   62#define ISR_CAN2_RX0    isr_can2_rx0 
   63#define ISR_CAN2_RX1    isr_can2_rx1 
   64#define ISR_CAN2_SCE    isr_can2_sce 
   65#define ISR_CAN3_TX     isr_can3_tx 
   66#define ISR_CAN3_RX0    isr_can3_rx0 
   67#define ISR_CAN3_RX1    isr_can3_rx1 
   68#define ISR_CAN3_SCE    isr_can3_sce 
   72#if CANDEV_STM32_CHAN_NUMOF > 1 || DOXYGEN 
   74#define CAN_STM32_NB_FILTER     28 
   76#define CAN_STM32_NB_FILTER     14 
   79#ifndef CANDEV_STM32_DEFAULT_BITRATE 
   81#define CANDEV_STM32_DEFAULT_BITRATE 500000U 
   84#ifndef CANDEV_STM32_DEFAULT_SPT 
   86#define CANDEV_STM32_DEFAULT_SPT     875 
   95#ifndef CPU_FAM_STM32F1 
   99#if CANDEV_STM32_CHAN_NUMOF > 1 || defined(DOXYGEN) 
  110#if defined(CPU_FAM_STM32F0) 
  128#define HAVE_CAN_CONF_T 
  131#define CAN_STM32_TX_MAILBOXES 3 
  133#define CAN_STM32_RX_MAILBOXES 2 
  135#ifndef CAN_STM32_RX_MAIL_FIFO 
  137#define CAN_STM32_RX_MAIL_FIFO 12 
  173#ifndef CPU_FAM_STM32F1 
Definitions for low-level CAN driver interface.
 
#define CAN_STM32_TX_MAILBOXES
The number of transmit mailboxes.
 
#define CAN_STM32_RX_MAIL_FIFO
This is the maximum number of frame the driver can receive simultaneously.
 
void candev_stm32_set_pins(can_t *dev, gpio_t tx_pin, gpio_t rx_pin, gpio_af_t af)
Set the pins of an stm32 CAN device.
 
struct candev_stm32_rx_fifo candev_stm32_rx_fifo_t
This structure holds anything related to the receive part.
 
struct candev_stm32_isr candev_stm32_isr_t
Internal interrupt flags.
 
struct candev_stm32_isr candev_stm32_isr_t
Internal interrupt flags.
 
gpio_af_t
Override alternative GPIO mode options.
 
struct can can_t
Low level device structure for ESP32 CAN (extension of candev_t)
 
struct candev candev_t
Forward declaration for candev struct.
 
ESP CAN device configuration.
 
CAN_TypeDef * can
CAN device.
 
uint8_t nb_filters
Number of filters to use.
 
uint8_t nart
No automatic retransmission.
 
uint8_t first_filter
First filter in the bank.
 
uint8_t sce_irqn
SCE IRQ channel.
 
gpio_t tx_pin
CAN transceiver TX pin.
 
uint8_t txfp
Transmit FIFO priority.
 
uint8_t rx0_irqn
RX0 IRQ channel.
 
uint32_t rcc_mask
RCC mask to enable clock.
 
uint8_t rx1_irqn
RX1 IRQ channel.
 
uint8_t abom
Automatic bus-off management.
 
uint8_t tx_irqn
TX IRQ channel.
 
gpio_t rx_pin
CAN transceiver RX pin.
 
uint8_t awum
Automatic wakeup mode.
 
CAN_TypeDef * can_master
Master CAN device.
 
gpio_af_t af
Alternate pin function to use.
 
bool en_deep_sleep_wake_up
Enable deep-sleep wake-up interrupt.
 
uint32_t master_rcc_mask
Master device RCC mask.
 
uint8_t rflm
Receive FIFO locked mode.
 
uint8_t ttcm
Time triggered communication mode.
 
uint8_t lbkm
Loopback mode.
 
Controller Area Network frame.
 
Low level device structure for ESP32 CAN (extension of candev_t)
 
const struct can_frame * tx_mailbox[CAN_STM32_TX_MAILBOXES]
Tx mailboxes.
 
candev_stm32_rx_fifo_t rx_fifo
Rx FIFOs.
 
candev_stm32_isr_t isr_flags
ISR flags.
 
candev_t candev
candev base structure
 
const can_conf_t * conf
Configuration.
 
gpio_af_t af
Alternate pin function to use.
 
Internal interrupt flags.
 
int isr_rx
Rx FIFO interrupt.
 
int isr_tx
Tx mailboxes interrupt.
 
int isr_wkup
Wake up interrupt.
 
This structure holds anything related to the receive part.
 
int write_idx
Write index in the receive FIFO.
 
int read_idx
Read index in the receive FIFO.
 
struct can_frame frame[CAN_STM32_RX_MAIL_FIFO]
Receive FIFO.
 
int is_full
Flag set when the FIFO is full.