Site Information

 Loading... Please wait...

Blog

ESP32 Processor: Internal SJA 100 CAN Bus Controller

Posted by Wilfried Voss on

This post is an excerpt from our application note Controller Area Network (CAN) Development with ESP32.

The ESP32 integrates a CAN Bus controller compatible with the NXP SJA1000. Thus, it is CAN 2.0B (ISO 11898, a.k.a. Classical CAN) specification-compliant.

As with the SJA1000, the ESP32 CAN Bus controller provides only the data link layer and the physical layer signaling sublayer. Therefore, an external transceiver module is required, which converts the ESP32's CAN-RX and CAN-TX signals into CAN_H and CAN_L bus signals. The transceiver, such as the MCP2551 or SN65HVD23X, provides compatibility with ISO 11898-2.

Note: The SJA1000 does not support CAN-FD and is not CAN-FD tolerant. To implement CAN-FD with the ESP32, you must utilize CAN-FD breakout boards accessible via the SPI port. 

It is crucial to know that the ESP32’s internal CAN controller supports only a limited set of CAN bit rates. The following table lists the bit rates for various ESP32 variants:

It would, however, be short-sighted to consider this a limitation. While, for instance, the basic ESP32 version supports a smaller set of bit rates, it also adheres to the standard bit rates commonly used in the industry.


ESP32 WiFi, Bluetooth Classic, BLE, CAN Bus Module

ESP32 WiFi, Bluetooth Classic, BLE, CAN Bus Module

This board has an onboard ESP32 WROOM-32 WiFi, Bluetooth Classic, BLE Module, and a CAN Bus port with a transceiver. Also onboard are an RGB LED and IO pins on a 0.1" pad. 

Programming is accomplished through the popular Arduino IDE connected to the USB-to-Serial converter with a USB-C connector, automatic bootloader, and reset. The ESP32 is a low-cost, low-power system-on-chip microcontroller with integrated Wi-Fi and dual-mode Bluetooth. It employs a Tensilica Xtensa LX6 microprocessor in dual-core and single-core variations. 

It includes built-in antenna switches, RF baluns, a power amplifier, a low-noise receive amplifier, filters, and power management modules. More Information...

The Myth: Controller Area Network is “Too Easy to Hack”

The potential security issues of CAN and its higher-layer protocols attract increased attention from the automotive, control, and medical industries. At first glance, believing that a well-documented standard like ISO 11898 makes it easier to manipulate control functions, whether in an automobile or a medical device such as an MRI or CT scanner, makes sense. [...]

Read More »


Automotive Ethernet to CAN Bus Converter For Mobile SAE J1939, ISOBUS Applications

Axiomatic Technologies introduced their AX141530, a CAN-to-Ethernet protocol converter to support automation for mobile applications.The module translates CAN Bus 29-bit extended data frame to Automotive Ethernet (100 Mbit/s) and vice versa. It comes with Power, Link, and Speed LED indicators and an IP67 rating, making the product fitting for harsh environments, such as vibration and water resistance. [...]

Read More »


Higher-Layer Protocol Specifications for CAN XL

The new year will see the release of CAN XL and its implementation into new applications. Additionally, CAN in Automation (CiA) will provide higher-layer protocol (HLP) specifications for CAN XL.Since its introduction, CAN XL, the third generation CAN protocol, was developed to interact with TCP/IP networks. The CAN XL protocol provides a layer management service access point [...]

Read More »


Low-Cost CAN Bus Monitor For Developing And Debugging High-Speed CAN Networks

Controller Area Network (CAN) is a serial network technology that was originally designed for the automotive industry, especially for European cars, but has also become a popular bus in industrial automation as well as other applications. The CAN Bus is primarily used in embedded systems, and as its name implies, is a network technology that provides [...]

Read More »


Controller Area Network (CAN Bus) Tutorial - Higher Layer Protocols

The following is an excerpt from A Comprehensible Controller Area Network by Wilfried Voss. Even though highly influential in automobiles and small applications, the CAN Bus technology alone is not suitable for machine automation since its communication between devices is limited to only 8 bytes. Consequently, higher layer protocols such as CANopen for machine control, DeviceNet for factory [...]

Read More »


Controller Area Network (CAN Bus) Tutorial - CAN Bus Controller Firmware

The following is an excerpt from A Comprehensible Controller Area Network by Wilfried Voss. As demonstrated in the image below, the ISO/OSI Reference Model specifies seven levels beginning with the physical connection to the actual user application, i.e., the Application Layer. The standard CAN implementation bypasses the connection between the Data Link Layer and the Application Layer to [...]

Read More »


Controller Area Network (CAN Bus) Tutorial - Remote Frame

The following is an excerpt from A Comprehensible Controller Area Network by Wilfried Voss. A Remote Frame requests the transmission of a message by another node. The requested data frame, identified by a unique message ID, may be accepted by any number of nodes in the network according to the individual application needs but can only be [...]

Read More »


Controller Area Network (CAN Bus) Tutorial - Dominant And Recessive Bus Level

The following is an excerpt from A Comprehensible Controller Area Network by Wilfried Voss. Before discussing each bit in a CAN Bus frame, it is helpful to briefly examine the physical layer (for more details, refer to Chapter 9—Physical Layer) to understand the nature of, for instance, the SOF (Start of Frame) bit, the RTR (Remote Transmission [...]

Read More »


SAE J1939 vs. CAN Bus - Physical Layer And Higher Layer Protocol (HLP)

To answer the fundamental question upfront: SAE J1939 is a higher-layer protocol (i.e., an add-on software) that uses the CAN Bus technology as a physical layer. In addition to the standard CAN Bus capabilities, SAE J1939 supports node addresses, and it can deliver data frames longer than 8 bytes (in fact, up to 1785 bytes). However, [...]

Read More »