can_esp.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: 2019 Gunar Schorcht
3  * SPDX-License-Identifier: LGPL-2.1-only
4  */
5 
6 #pragma once
7 
44 #ifdef __cplusplus
45 extern "C" {
46 #endif
47 
48 #include "can/candev.h"
49 #include "periph/gpio.h"
50 
52 #define ESP_CAN_MAX_RX_FILTERS (16)
53 
55 #define ESP_CAN_MAX_RX_FRAMES (8)
56 
60 typedef struct can {
64  struct can_frame *tx_frame;
68  uint32_t rx_frames_wptr;
69  uint32_t rx_frames_rptr;
70  uint32_t rx_frames_num;
71  uint32_t rx_filter_num;
73  bool powered_up;
75  uint32_t events;
77 
79 #define HAVE_CAN_T
80 
84 typedef struct {
85  uint32_t bitrate;
86  gpio_t tx_pin;
87  gpio_t rx_pin;
88 #ifdef CAN_CLK_OUT
89  gpio_t clk_out_pin;
90 #endif
91 #ifdef CAN_BUS_ON_OFF
92  gpio_t bus_on_off_pin;
93 #endif
94 } can_conf_t;
95 
97 #define HAVE_CAN_CONF_T
98 
99 #ifdef __cplusplus
100 }
101 #endif
102 
Definitions for low-level CAN driver interface.
Low-level GPIO peripheral driver interface definitions.
struct can can_t
Low level device structure for ESP32 CAN (extension of candev_t)
#define ESP_CAN_MAX_RX_FILTERS
Number of receiver acceptance filters.
Definition: can_esp.h:52
#define ESP_CAN_MAX_RX_FRAMES
Number of frames in receiver buffer, must be a power of two.
Definition: can_esp.h:55
struct candev_conf can_conf_t
Linux candev configuration.
canopt_state_t
CAN state options.
Definition: common.h:73
gpio_t tx_pin
CAN transceiver TX pin.
Definition: can_esp.h:86
uint32_t bitrate
Bitrate.
Definition: can_esp.h:85
gpio_t rx_pin
CAN transceiver RX pin.
Definition: can_esp.h:87
Controller Area Network filter.
Definition: can.h:128
Controller Area Network frame.
Definition: can.h:100
Low level device structure for ESP32 CAN (extension of candev_t)
Definition: can_esp.h:60
struct can_filter rx_filters[ESP_CAN_MAX_RX_FILTERS]
acceptance filter list
Definition: can_esp.h:66
canopt_state_t state
current state of device
Definition: can_esp.h:62
uint32_t rx_filter_num
number of acceptance filters
Definition: can_esp.h:71
uint32_t rx_frames_wptr
pointer to ring buffer for write
Definition: can_esp.h:68
uint32_t rx_frames_num
number of frames in ring buffer
Definition: can_esp.h:70
struct can_frame rx_frames[ESP_CAN_MAX_RX_FRAMES]
frames received
Definition: can_esp.h:65
uint32_t rx_frames_rptr
pointer to ring buffer for read
Definition: can_esp.h:69
struct can_frame * tx_frame
frame in transmission
Definition: can_esp.h:64
candev_t candev
candev base structure
Definition: can_esp.h:61
bool powered_up
device is powered up
Definition: can_esp.h:73
uint32_t events
events triggered by the last interrupt
Definition: can_esp.h:75
Structure to hold driver state.
Definition: candev.h:76