Additional Information

Site Information

 Loading... Please wait...


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

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

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 automation, and SAE J1939 for offroad vehicles (specifically diesel engines) were designed to provide a full networking technology supporting messages of unlimited length and allowing a master/slave configuration.

To explain higher layer protocols, we must refer again to the ISO/OSI Reference Model as shown in the following image.

The standard CAN Bus implementation circumvents the connection between the Data Link Layer and the Application Layer. The layers above the Data Link Layer are accomplished by adding software, representing a higher layer protocol per definition.

For more information on the OSI Reference Model refer to: OSI Reference Model Pocket Guideby Howard C. Berkowitz - ISBN: 1890911143

To put it in a nutshell, higher layer protocols are necessary because

  • They enable data transport of more than 8 bytes per message.
  • Embedded Systems may require an appropriate communication model based on Master/Slave configuration.
  • They provide Network Management (Network Start-Up, Node Monitoring, Node Synchronization, etc.).

To emphasize the point, whenever you attempt to add software functions between the CAN Data Link Layer and the Application Layer, you will be adding functionalities already covered by off-the-shelf available higher layer protocols such as CANopen, DeviceNet, SAE J1939, or NMEA 2000.


  • Is suited for embedded applications
  • Was originally designed for motion control
  • Was developed and is maintained by the CAN-in-Automation User Group

Like CAN, the CANopen standard is the responsibility of CiA (CAN-in-Automation). For further information, refer to


  • Is suited for industrial applications (floor automation)
  • Was developed by Allen Bradley/Rockwell
  • Is maintained by Open DeviceNet Vendor Association (ODVA)

The DeviceNet Specification, consisting of two volumes: Volume One - Common Industrial Protocol (CIP) and Volume Three- DeviceNet Adaptation of CIP, is available only for ODVA (Open DeviceNet Vendor Association) members.

For further information, refer to

SAE J1939

  • Defines communication for vehicle networks (trucks, buses, agricultural equipment, etc.)
  • Is a standard developed by the Society of Automotive Engineers (SAE)

The SAE J1939 Standards Collection can be found exclusively on the Web at

The Society of Automotive Engineers (SAE) Truck and Bus Control and Communications Subcommittee has developed a family of standards concerning the design and use of devices that transmit electronic signals and control information among vehicle components. SAE J1939 and its companion documents have quickly become the accepted industry standard and the Controller Area Network (CAN) of choice for off-highway machines in applications such as construction, material handling, and forestry machines.

NMEA 2000

NMEA 2000 is a marine networking standard designed and managed by the National Marine Electronics Association (NMEA). The NMEA is an association of marine electronics manufacturers, dealers, and technicians. NMEA 2000 is a derivative of SAE J1939, i.e., its functionality is identical to SAE J1939 but has some added features and it uses different data definitions (PGNs).

For more information, see

PiCAN 2 - CAN Bus Interface for Raspberry Pi

PiCAN 2 - CAN Bus Interface for Raspberry Pi

This PiCAN2 board provides Controller Area Network (CAN) Bus capabilities for the Raspberry Pi. It uses the Microchip MCP2515 CAN controller with MCP2551 CAN transceiver. Connection are made via DB9 or 3-way screw terminal.

There is an easy-to-install SocketCAN driver, and programming can be accomplished in C or Python.

The PiCAN board is fully compatible with the new Raspberry Pi 4 Model B.

More Information...

USB Device For I/O Testing And Prototyping Supports, Classical CAN, CAN FD, CANopen

DAB-Embedded introduced its USB2IO interface explorer, a device that connects USB to various I/O interfaces for prototyping and functionality tests of electronic devices with CAN, CAN FD, and CANopen interfaces.The product combines a protocol analyzer, data-logger, communication interface, an embedded functional test platform, and basic signal generator. The device targets electrical engineers, firmware developers, enthusiasts, and [...]

Read More »

MCUXpresso Software Development Kit (SDK) Incorporates A Free Version Of Micro CANopen FD Library

The latest release of the MCUXpresso software development kit (SDK) from NXP incorporates a free version of the EmSA's (Embedded Systems Academy) Micro CANopen FD library.The MCUXpresso IDE provides embedded development engineers an easy-to-use Eclipse-based development environment for NXP MCUs based on ARM Cortex-M cores, including its general-purpose crossover and Bluetooth-enabled MCUs. The MCUXpresso IDE comes [...]

Read More »

Controller Area Network (CAN Bus) And Higher-Layer Protocols CANopen, SAE J1939, NMEA 2000

For the longest time, the major misconception about Controller Area Network (CAN) was that it merely applies to automobiles. The truth is, CAN, since its introduction in 1986, proved to be a robust, versatile, and straightforward technology and, consequently, the CAN Bus technology found its way into all areas of applications where microprocessors need to [...]

Read More »

Digital I/O Module For Operations In CANopen And CANopen FD Networks

Peak-System Technik and EmSA (Embedded Systems Academy) have joined forces and developed the PCAN-MicroMod FD DR CANopen Digital 1, an I/O device with eight digital inputs and eight outputs.  The I/O module comes in a DIN-rail mountable housing with screw terminal strips. The eight digital inputs and eight digital outputs are galvanically isolated from the power supply, [...]

Read More »

Miniature Joystick With CAN Bus Interface Supports SAE J1939 And CANopen

Megatron introduced its TRY120 series of miniature joysticks with an installation depth of 26 mm. The onboard CAN Bus interface supports the CANopen and SAE J1939 serial protocols. With the TRY120 series, Megatron expands the TRY100 finger joystick series with a version for the operation in harsh environments. Both sets use identical geometries and thus allow a direct replacement. The [...]

Read More »

MadeForSTM32 Approved CANopen Slave Software For STM32 Microcontrollers

Emotas Embedded Communication’s CANopen Slave Software has been evaluated and approved by ST Microelectronics (ST) to become the first MadeForSTM32 supported CANopen software for STM32 microcontrollers. The MadeForSTM32 label is available for ST authorized partners only. It assures that the software within the STM32 ecosystem had been examined and qualified by ST specialists to be of [...]

Read More »

STM32G4-Based CANopen FD Starter Kit Supports Both Classical CAN And CAN FD

The Emotas CANopen FD starter kit provides a CAN FD micro-controller board, an extension board with CAN FD transceiver, and a CAN FD USB interface for the rapid prototyping of CANopen FD applications. CANopen FD, as specified in the CAN in Automation (CiA) specification 1301, uses the new features of CAN FD such as a higher data bit-rate [...]

Read More »

ARM Cortex Automotive-Grade SoC (System on Chip) With Two CAN Bus Interfaces Supports Linux And Android BSP

Advantech announced the release of its ROM-5620 Smarc 2.1 module, its first Arm Cortex A35 based on the NXP i.MX8X application processor. The product is especially applicable for automation equipment and HMI (human-machine interface) devices.The product adopts an automotive-grade SoC (System on Chip) and associated industrial-grade components that provide an operating temperature range from -40 °C [...]

Read More »

CODESYS Control For Raspberry Pi Allows PLC Programming According To IEC 61131-3

CODESYS is a PLC programming suite used by automation specialists as an environment for the development of controller applications. It is an IEC 61131-3 programming tool developed by the Germany-based company, 3S (Smart Software Solutions), providing users with integrated solutions that optimize the engineering of automated solutions. It represents a platform-independent development environment that is compatible [...]

Read More »