Site Information

 Loading... Please wait...

SAE J1939 ECU Programming & Vehicle Bus Simulation with Arduino - CAN Bus Shield by Seeed Studio

Posted by Wilfried Voss on

This post is part of a series about SAE J1939 ECU Programming & Vehicle Bus Simulation with Arduino.

CAN Bus Shield by Seeed Studio

In terms of CAN Bus capabilities, the shield by Seeek Studio provides the same functionality as the one by SK Pang electronics, however, it comes with a much lower price tag, because it does not have any additional components besides the CAN Bus interface.

Note: The Seeed Studio CAN Bus shield was my preferred choice during writing this book due to its compatibility between the two systems I primarily used, the Arduino Uno and Arduino Mega 2560. The Mega with its increased memory resources enabled me to run a full SAE J1939 protocol stack on the Arduino platform, whch is not possible with the Uno.

Over all, the device makes a solid impression, especially since the CAN connection is according to standard and in addition provides CAN connectivity through easily accessible terminals.


  • Implements CAN V2.0B at up to 1 Mb/s
  • SPI Interface up to 10 MHz
  • Standard (11 bit) and extended (29 bit) data and remote frames
  • Two receive buffers with prioritized message storage
  • Industrial standard 9 pin sub-D connector
  • Two LED indicators


  • No cables included

All technical information regarding the use of the CAN controller can be found on the company’s wiki website.

Ordering Information

To order the Seeed Studio CAN shield, you can use the following resources (or browse for “Arduino CAN-BUS Shield” for further options):

Seeed Studio

Note: The Seeed Studio CAN bus shield has been undergoing some hardware changes to become compatible with systems such as the Arduino Mega 2560. The version 1.0 will work with the Arduino Uno, while all higher versions also work with the Mega 2560. This will also affect the code of the Arduino projects, specifically the line “MCP_CAN CAN0(10);” in the main module selecting the CS pin. That line must change to “MCP_CAN CAN0(9);” for all CAN bus shield versions above 1.0. I have added a comment in the corresponding section of the code.

A Comprehensible Guide to J1939

SAE J1939 has become the accepted industry standard and the vehicle network technology of choice for off-highway machines in applications such as construction, material handling, and forestry machines. J1939 is a higher-layer protocol based on Controller Area Network (CAN). It provides serial data communications between microprocessor systems (also called Electronic Control Units - ECU) in any kind of heavy duty vehicles. The messages exchanged between these units can be data such as vehicle road speed, torque control message from the transmission to the engine, oil temperature, and many more.

A Comprehensible Guide to J1939 is the first work on J1939 besides the SAE J1939 standards collection. It provides profound information on the J1939 message format and network management combined with a high level of readability.