Site Information

 Loading... Please wait...


CAN Bus And SAE J1939 Prototyping With The Arduino Due ARM Cortex M3 Processor

Posted by Wilfried Voss on

Arduino Due for SAE J1939 and CAN Bus Prototyping

Whenever it comes to building rapid prototypes for new CAN Bus or SAE J1939 applications, my first choice is regularly the Arduino Due, a microcontroller board based on the Atmel SAM3X8E ARM Cortex-M3 CPU.

In general, the Arduino platform couples an easy-to-use programming environment (IDE) with a vast number of hardware extensions (shields). While I do appreciate programming on a more "professional" level using our embedded systems with more sophisticated IDEs and debug probe, often enough, the needed hardware is not available. The Arduino concept may have its flaws (such as limited debugging capabilities), but when it comes to rapid prototyping, it is virtually unbeatable.

Let's have a look at the Arduino Due features:

  • Microcontroller board (Arduino Due) based on the Atmel SAM3X8E ARM Cortex-M3 CPU
  • 512 KB Flash Memory
  • 96 KB SRAM
  • 84 MHz Clock Speed
  • 2 CAN ports w/o transceiver
  • 54 Digital I/O Pins (of which 12 provide PWM output)
  • 12 Analog Input Pins
  • 2 Analog Output Pins

When it comes to CAN Bus or SAE J1939 applications, though, the Due misses an essential feature, namely the CAN Bus transceivers (it shares that short-coming with a great number of off-the-shelf embedded systems with CAN Bus ports). Consequently, we at Copperhill Technologies have created a Dual CAN Bus interface for the Arduino Due that provides the following features:

  • 2 CAN ports with three-pin terminal connectors
  • Extended input power range of 7 VDC to 36 VDC
  • 3 LEDs (Power, CAN Activity Port 1, CAN Activity Port 2)
  • CAN Bus Termination resistors switchable per jumper

The available options are:

Arduino Due With Dual CAN Bus Port Plus Ethernet Shield

The concept of the Arduino Due mainboard plus Dual CAN Bus interface allows adding any Arduino-compatible hardware (shield). 

For instance, the image to the left shows the board with Dual CAN Bus interface plus an Ethernet shield, which certainly, with the corresponding software development, can be used as a CAN-to-Ethernet gateway.

Check out the available resources, may it be hardware, cables, datasheets, or sample programs:

CAN Shield Resources:

Arduino Due Resources:


Arduino Project Handbook: 25 Practical Projects to Get You Started

Arduino Project Handbook: 25 Practical Projects to Get You Started

The Arduino Project Handbook is a beginner-friendly compilation of electronics projects using the low-cost Arduino board. With just a few components, an Arduino, and a computer, you learn to create and program everything from light shows to arcade games to an ultrasonic security system.

In the first step, you receive an introduction to the Arduino and helpful information on tools and components. Then you work throughout the book in order or jump to projects that catch your eye. Each project includes simple instructions, colorful photos, circuit diagrams, and all the necessary code.

The Arduino Project Handbook is a fast and fun way to get started with micro­controllers that is ideal for beginners, hobbyists and educators.

More Information...

ARM Cortex Processors – UART Programming Problem At Baud Rates Higher Than 115200

To say it upfront, I cannot confirm with 100% certainty that all ARM Cortex microcontrollers are affected by the UART programming problem as described in the following, but there are indications that make my assumption very probable. The outcome depends primarily on thorough testing of serial communication applications, but there is evidence to the contrary [...]

Read More »

CAN Bus (Controller Area Network) Projects with ARM Cortex M3 and Arduino Uno

This book details the use of the ARM Cortex-M family of processors and the Arduino Uno in practical CAN bus based projects. Inside, it gives a detailed introduction to the architecture of the Cortex-M family whilst providing examples of popular hardware and software development kits. Using these kits helps to simplify the embedded design cycle [...]

Read More »

Arduino DUE CORE Board With Dual CAN Bus Interface, Real-Time Clock, And SD Card

As I had mentioned in my post, Arduino DUE CORE Board With Dual CAN Bus Interface And Extended Power Supply Range, our business strategy is providing prototyping solutions for the CAN Bus (including SAE J1939, ISOBUS, NMEA 2000), and, in the months to follow, we will increase our focus on the Arduino platform, specifically the Arduino Due. Now [...]

Read More »

LPC1768/1769 - ARM Cortex M3 Development - The "Hello World!" Application

This post is a follow-up on my article LPC1768/1769 - ARM Cortex M3 Development - MCUXpresso IDE Installation And Adding A Template Project, in which we installed the MCUXpresso integrated development environment (IDE) and created a working but non-functional project for the LPC1768/LPC7169 processor.  You can start the compilation (click on "Build 'LPC1769Template' [Debug]"), and there will [...]

Read More »

LPC1768/1769 - ARM Cortex M3 Development - MCUXpresso IDE Installation And Adding A Template Project

After getting your LPC1768 or LPC1769 Cortex-M3 Development Board, it is time to getting started with MCUXpresso IDE. In this Step by Step tutorial we will go through the process of creating projects in MCUXpresso IDE for Cortex-M series Microcontrollers by NXP(Founded by Philips) based on CMSIS (Cortex Microcontroller Software Interface Standard). MCUXpresso is a derivative [...]

Read More »

Professional ARM Cortex M3 Development System With Eclipse-Based IDE Starting At 85 Dollars

There are two worlds when it comes to the programming of embedded applications, one for hobbyists and engineers involved in rapid prototyping and one for "professional" programmers. The first one is represented by hardware platforms such as the Arduino, Raspberry Pi, BeagleBone, and others. The second is dominated by non-standard and thus expensive hardware systems [...]

Read More »

The MCUXpresso Integrated Development Environment (IDE)

This page is part of a series of posts by Wilfried Voss titled  NXP LPC17xx ARM Cortex-M3 Microcontroller - Programming Tips & Tricks, explaining the programming of embedded systems using the ARM Cortex-M3 processor. The MCUXpresso IDE brings developers an easy-to-use Eclipse-based development environment for NXP MCUs based on ARM® Cortex®-M cores, including, among many others, the LPC [...]

Read More »

FreeRTOS-Based, IBM Bluemix Ready Remote I/O Module With ARM Cortex M3 Processor

Artila Electronics, a designer and manufacturer of embedded device networking and computing, releases the FreeRTOS based, IBM Bluemix ready remote I/O module, RIO-2010BM, which is powered by a 32-bit NXP LPC1768 100MHz ARM Cortex M3 processor and equipped with 64KB SRAM 512KB Flash. The ARM cortex M3 plus the FreeRTOS make RIO-2010BM a computing platform for [...]

Read More »

Interrupt-Controlled Timer Function For The Arduino Due

The Arduino Due is a microcontroller board based on the Atmel SAM3X8E ARM Cortex-M3 CPU. It is the first Arduino board based on a 32-bit ARM core microcontroller. It has 54 digital input/output pins (of which 12 can be used as PWM outputs), 12 analog inputs, 4 UARTs (hardware serial ports), a 84 MHz clock, [...]

Read More »