Site Information

 Loading... Please wait...

Blog

ESP32 Processor: CAN Bus Topology and Termination Resistors

Posted by Wilfried Voss on

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

It is my experience that newcomers to the technology overlook the importance of termination resistors. Missing or misplaced resistors can lead to transmission errors or even prevent transmission altogether.

The general rule is that if you connect to an existing, fully functional network, you do not need to add any termination resistors. If you create a new network, please pay close attention to the topic as explained in the following.

The image above demonstrates a simple CAN network. All nodes are connected by two wires, CAN_H and CAN_L. The bus line is terminated by resistors, which are typically 120 Ω and are necessary to suppress any electrical reflections on the bus.

The termination resistors should always be connected at both ends of the bus; they should never be physically attached to a CAN node because removing this specific node would cause the bus to lose proper termination.

Note: The CAN standard allows for any bus topology, but a simple, straightforward architecture is advantageous for increased reliability. However, depending on the physical bus structure, it may be difficult to determine “both ends of the bus” and may require some trial and error.

According to ISO 11898-2, the termination resistor should be between 100…130 Ω, but typically 120 Ω, with a minimum power dissipation of 220 mW. Deviations from the nominal value of 120 Ω are possible, depending on the bus topology and the baud rate. As a rule of thumb, the lower the termination resistor, the fewer possible nodes in the network.

The wiring topology of a CAN network should be as straight as possible, using short cable lengths and avoiding complex network structures, even though almost any network structure is possible under CAN.

The maximum bus length (L) depends on the baud rate used. The table below displays some network topology parameters at the maximum baud rate of 1 Mbit/sec.

Parameter Maximum Length [ft] / [m]
L - Bus Length 120 / 40
l - Cable Stub Length 1 / 0.3
d - Node Distance 120 /40

The bus length can be significantly extended at lower baud rates. The following image demonstrates the relationship between CAN baud rate and maximum physical network length.


ESP32 WiFi, Bluetooth Classic, BLE, CAN Bus Module

ESP32 WiFi, Bluetooth Classic, BLE, CAN Bus Module

This board has an ESP32 WROOM-32 WiFi, Bluetooth Classic, BLE Module, and a CAN Bus port with a transceiver onboard. It also has 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...

ESP32 Development Kits with Onboard CAN Bus Controller

The ESP32 is a low-cost, low-power system-on-chip microcontroller with integrated WiFi and dual-mode Bluetooth. It is equipped with a Tensilica Xtensa LX6 microprocessor in dual-core and single-core versions. The microcontroller features built-in antenna switches, RF balun, power amplifiers, low-noise receive amplifiers, filters, and power management modules. It is the successor to the ESP8266 SoC. There are [...]

Read More »


Classical CAN (CC), the Original CAN Bus Technology

This post is an excerpt from our application note  Controller Area Network (CAN) Development with ESP32. Note: The term “Classical CAN” was introduced in the ISO 11898-1: 2016 Standard. Classical CAN represents the basis for CAN FD (and CAN XL), meaning they share the same features and advantages, as explained in the previous chapter. While CAN FD adds [...]

Read More »


SAE J1939 Functional Safety Communications Protocol & Trailer Safety Assurance

Commercial road and off-highway vehicles, as well as off-road construction machines, frequently utilize J1939-based application layers. In response to the growing need for functional safety, SAE has created specific protocols for CAN CC (classic) and CAN FD: J1939-76 and J1939-77, respectively. An article on the CiA (CAN-in-Automation) website discusses the SAE standards for functionally safe communications on CAN [...]

Read More »


PCI Express Board Integrates 4 High-Speed CAN/CAN FD Ports

Kvaser has introduced their compact M.2 PCIe, a highly integrated embedded CAN Bus board that adds four high-speed CAN/CAN FD channels to any host computer with PCI Express connectivity and an available B or M keyed M.2 slot. The embedded board provides four distributed CAN CC (Classic CAN) or CAN FD transceivers, adding CAN CC and CAN [...]

Read More »


ESP32: CAN Bus Programming with MCP2515 and MCP2517FD

For good reasons, the ESP32 processor is a prevalent choice for embedded hardware development. Besides considerable memory resources, it provides various hardware features for many applications, most prominently the Internet of Things (IoT). All that comes with more than reasonable price tags, specifically when you use one of the multiple ESP32 development modules. And since [...]

Read More »


Kvaser's Leaf Supports Classical CAN, CAN FD in Silent Mode

Every professional CAN Bus development, may it be Classical CAN, CAN FD, or higher layer protocols such as SAE J1939, requires a data monitoring device for proof of functionality. Kvaser has introduced such a device, the Leaf v3 interface supporting Classical CAN and CAN FD in optional Silent Mode. The Leaf series depicts one of the straightforward [...]

Read More »


Automotive Development Module has CAN FD, LIN, Ethernet Port

Renesas has launched a software development board featuring the R-Car S4 System-on-Chip (SoC). The scope of delivery includes the Whitebox SDK open-source software. The R-Car S4 facilitates the launch of Car Server/CoGW with high performance, high-speed networking, high security, and high functional safety levels required as E/E architectures grow into domains and zones. The R-Car S4 solution [...]

Read More »


Industrial Strength Dual CAN FD Interface in Mini PCIe Form

The  VL-MPEu-C1 module by Versalogic, compliant with the Mini PCIe format, is a tiny and rugged dual-channel CAN Bus add-on interface. It supports CAN-FD for high-speed data transfer but is still fully compatible with CAN 2.0 A and CAN 2.0 B (Classical CAN). It supports additional CAN functions, including message acceptance filtering, listen-only mode, and wake-up [...]

Read More »


Programmable CAN Bus to USB, Bluetooth, BLE, WiFi Gateway

For the longest time, I had resisted the idea of creating my version of a CAN-to-USB gateway, primarily due to the vast competition. A professional CAN/J1939 development requires a professional CAN-to-PC solution to monitor data traffic. I am pleased with the PEAK PCAN-USB device, as shown in the above image. However, not everybody is willing [...]

Read More »