Site Information

 Loading... Please wait...


Controller Area Network (CAN Bus) - Remote Frame And Avoiding Of Usage

Posted by Wilfried Voss on

The following is an excerpt from  A Comprehensible Controller Area Network by Wilfried Voss.

A Comprehensible Guide to Controller Area Network

Experience over the years has revealed some quirks in the CAN Bus protocol, which are naturally not covered by any official document, and one of them has led to the call to avoid CAN remote frames. 

In August of 2005, CAN-in-Automation (CiA) published (but not promoted) their application note 802 - "CAN remote frame - Avoiding of usage."

The CAN Bus data and remote frames are very similar. The remote frame resembles a data frame without the data field (which would is located between the Control Field and the CRC Filed). 

Data frame and remote frame are distinguished by the RTR bit in the arbitration field (Data frame: RTR=0, Remote Frame: RTR=1).

One source of the problem with the remote frame is based on the way the Control Field, particularly the data length code, is transmitted:

The present problem rests in protocol-incompatibilities between CAN Bus controllers from various manufacturers and how they manage the Remote Frame, which consequently will produce CAN message collisions.

A bus collision may occur under the following conditions:

  • Two or more nodes in a CAN Bus network requested the same message at the same time.
  • Remote frame and requested data frame access the bus at the same time (this condition is not mentioned in the CiA application note).
  • The data length codes differ between the nodes.

Note: The remote frame and the requested data frame use the same message identifier. Both frames separate themselves through the RTR (Remote Transmission Request) bit, which is part of the arbitration field. In case a data frame and a remote frame, using the same message ID, try to access the bus concurrently, the data frame will gain the bus access over the remote frame since it applies a dominant RTR bit.

Remote frames can only be transmitted with a data length code (DLC) identical to the DLC of the corresponding (requested) data frame. Concurrent transmission of remote frames with different DLC's will result in irresolvable collisions, meaning the CAN bit monitoring feature will identify an error. That also means in all consequence that the requesting node must know the correct DLC.

What happens next is the same as when two frames with identical message IDs try to access the bus. The result of such a scenario has so far not been documented in any official literature. The official statement is that such situations are not permitted and will lead to unpredictable results. However, as CiA application note 802 demonstrates, there are quite some discrepancies between the numerous CAN controllers available in the market and how they manage remote frames. It appears that collisions can occur with such a probability that the use of remote frames is not recommended at all.

Dual CAN Bus Interface For Arduino Due With Extended Power Range

Dual CAN Bus Interface For Arduino Due With Extended Power Range

The jCOM.CAN.DUE-X, a dual CAN bus interface for the Arduino Due, is not an Arduino shield in the common sense. 

The board incorporates dual CAN transceivers required by the two integrated CAN ports on the Arduino Due while allowing the operation with any Arduino-compatible shield that supports the necessary 3.3 VDC power requirements.

By combining our dual CAN port interface, the Arduino DUE microcontroller, an OBD2 or SAE J1939 cable, and open-source software libraries you are ready to go with powerful a turn-key Arduino-based dual CAN bus solution. 

Leverage the 32-bit processing capability of the Arduino DUE plus the built-in CAN ports for your next prototype.

In order to more efficiently serve automotive and industrial applications, the jCOM.CAN.DUE-X board supports an extended input power range of 7 to 36 VDC to power the entire system, i.e. including the Arduino Due itself.

More Information...

Espruino - Open-Source JavaScript Interpreter For STM32 Microcontrollers

The Espruino is an open-source JavaScript interpreter for microcontrollers. It is designed for devices with small amounts of RAM (as low as 8kB). It was created by Gordon Williams in 2012 as an effort to make microcontroller development genuinely multiplatform.  Though initially not open-source, the Espruino firmware was offered as a free download for STM32 microcontrollers. [...]

Read More »

Exploring BeagleBone: Tools and Techniques for Building IoT And CAN Bus Applications Using Embedded Linux

Exploring BeagleBone is a hands-on guide to producing gadgets, gizmos, and robots employing the popular BeagleBone embedded Linux platform. Comprehensive content and in-depth detail present more than just a BeagleBone instruction manual; you also learn the underlying engineering techniques allowing you to build your projects. The book opens with a foundational primer on necessary skills, and then [...]

Read More »

Automotive Grade CAN FD Transceiver Plus Digital Isolator For Electric Vehicle Systems

Texas Instruments (TI) introduced its TCAN1044EV-Q1 Grade 0 CAN FD transceiver and the ISO7741E-Q1 Grade 0 digital isolator for reliable communication and protection in (hybrid) electric vehicle systems that are exposed to temperatures of up to +125 °C (257 °F).The devices are classified according to the Grade 0 ambient operating temperature specification of the AEC-Q100 (Automotive Electronics Council) [...]

Read More »

Gateway Controller With UART Interface Embeds Non-CANopen Systems Into CANopen Networks

The CO401GW2-BBD by frenzel & berg electronic is a small-size plug-in module based on the single-chip controller CO401GW2. This module comes with an onboard CAN transceiver, allowing immediate connection to the CAN bus without further components. The CO401GW2 gateway controller provides a gateway to a virtual I/O-area in the CANopen-system. The external access is accomplished via a [...]

Read More »

Arduino Breakout Board Connects Classic CAN Bus and CAN FD Networks

Many users involved with CAN Bus programming (and exploring the extended capabilities of CAN FD) may not be aware that Classic CAN Bus and CAN FD are excluding each other due to compatibility issues. For more detailed information, see our post CAN FD On A Legacy CAN Bus Network Is Not A Good Idea Due To [...]

Read More »

RobotDyn - Data Logger Shield For Arduino - Development Resources

To mention it upfront, we don't sell the data logger shield for the Arduino. As a matter of fact, I bought this board out of pure curiosity, because it fits and complements our Arduino-Based ECU Development Board With Dual CAN Bus Interface. This combination bares the potential for creating a low-price CAN Bus data logger.I was [...]

Read More »

CAN Bus Router Connects Classic CAN And CAN FD Networks And Operates As A CAN Bus Recorder

PEAK-System Technik has extended its product range with its programmable PCAN-Router Pro FD, which connects the data traffic of up to six CAN FD or classic CAN Bus networks. The routing from CAN Bus to CAN FD or vice versa enables the integration of new CAN FD applications into existing CAN 2.0 systems.Note: Classic CAN Bus [...]

Read More »

Tablet PC For In-Vehicle Networks Supports CAN Bus - SAE J1939 And Gigabit Ethernet Interfaces For IoT Applications

The X7R from Waysion Technology (China) is a 7-inch tablet PC designed to operate within truck in-cab and other applications within harsh environments.A CAN Bus interface maintains data communications via an extension cable, and it supports the 29-bit CAN-identifier. If required, the SAE J1939 higher-layer protocol can be implemented using an additional converter. The device receives data from CAN [...]

Read More »

C Programming For The Internet-Of-Things (IoT) Under Linux

Applying C is the book you need if you are programming for Single Board Computers (SBCs) that operate under Linux, or if you perform any coding in C that interacts with the hardware. As there is not the right name for this body of knowledge, it is not easy to find a single source for [...]

Read More »