ESP32 CAN controller

CAN controller driver for ESP32 (esp_can) More...

Detailed Description

CAN controller driver for ESP32 (esp_can)

The ESP32 intregates a CAN controller which is compatible with the NXP SJA1000 CAN controller. Thus, it is CAN 2.0B specification compliant and supports two message formats:

Note
  • ESP32 CAN does not support CAN-FD and is not CAN-FD tolerant.
  • ESP32 CAN does not support SJA1000's sleep mode and wake-up functionality.

As with the SJA1000, the ESP32 CAN controller provides only the data link layer and the physical layer signaling sublayer. Therefore, depending on the physical layer requirements, an external transceiver module is required which converts the CAN-RX and CAN-TX signals of the ESP32 into CAN_H and CAN_L bus signals, e.g., the MCP2551 or SN65HVD23X transceiver for compatibility with ISO 11898-2.

The driver realizes a low-level CAN driver interface for the ESP32 CAN controller and provides a CAN DLL device that can be used in RIOT's CAN protocol stack. It uses the ESP32 CAN controller in SJA1000 PeliCAN mode. Please refer the SJA1000 Datasheet for detailed information about the CAN controller and its programming.

Author
Gunar Schorcht gunar.nosp@m.@sch.nosp@m.orcht.nosp@m..net

Files

file  can_esp.h
 
file  can_params.h
 ESP32 CAN controller driver (esp_can) default parameters.
 

Data Structures

struct  can
 Low level device structure for ESP32 CAN (extension of candev_t) More...
 
struct  can_conf_t
 ESP CAN device configuration. More...
 

Macros

#define ESP_CAN_MAX_RX_FILTERS   (16)
 Number of receiver acceptance filters.
 
#define ESP_CAN_MAX_RX_FRAMES   (8)
 Number of frames in receiver buffer, must be a power of two.
 
#define HAVE_CAN_T
 CAN device type can_t is redefined by ESP CAN.
 
#define HAVE_CAN_CONF_T
 CAN device configuration type can_conf_t is redefined by ESP CAN.
 

Typedefs

typedef struct can can_t
 Low level device structure for ESP32 CAN (extension of candev_t)