Site Information

 Loading... Please wait...

App Note: ARM Cortex M3 Development Boards Require External CAN Bus Transceiver

Posted by Wilfried Voss on

CAN Bus Transceiver Break Board

The ARM Cortex-M is a group of 32-bit RISC ARM processor cores licensed by ARM Holdings. The cores are intended for microcontroller use, and consist of the Cortex-M0, M0+, M1, M3, M4, and M7. The ARM Cortex-M3 processor is very well suited for highly deterministic real-time applications, even for low-cost platforms, such as automotive body systems, industrial control systems, wireless networking and sensors, and many more. Cortex-M3 microcontrollers are available from a number of semiconductor manufacturers such as Texas Instruments, Infineon, Atmel, NXP (formerly Philips), Analog Devices, Toshiba, STMicroelectronics, and more.

Besides its great speed and more than sufficient amount of FLASH and RAM, the ARM Cortex-M3 is the perfect choice for a myriad of embedded applications due to its support of a great number of peripheral interfaces. They built-in features include:

  • Ethernet
  • USB Host and Device
  • Controller Area Network (CAN)
  • SPI
  • I2C
  • ADC
  • DAC
  • PWM
  • Digital I/O

The availability of Controller Area Network (CAN) interfaces in combination with other interface technologies explains the vast popularity of the Cortex-M3 processor in the CAN and J1939 industry. The processor provides the means to easily and quickly create applications like CAN/J1939 gateways, CAN Bridges, J1939 ECUs, J1939 Data Logger, and many more.

There are a great number of ARM Cortex M3 developing and prototyping boards available in the marketplace. For instance, there are two very popular systems that both match the most sought-for selection criteria, which are low-cost and ease of programming:

  • Arduino Due - The Due is the first ARM-based Arduino development board. The programming of the microcontroller is accomplished through the familiar Arduino IDE (Windows, Mac), keeping the programming as backward compatible to other Arduino systems as possible, thus allowing a smooth migration between processor systems.
  • mbed NXP LPC1768 - The mbed Microcontroller was specifically designed for prototyping, and it comes in a 40-pin DIP form-factor, making it ideal for experimenting on breadboards, strip boards and PCBs. The compiler is web-based, and, consequently, it works equally well on Mac, Windows, and Linux.

However, the ease of programming often comes hand-in-hand with limited debugging capabilities, and that is also the case here, for the Due as well as the mbed LPC1768. 

Another downside (related to the low cost aspect) is the mere fact that such boards are basically useless without additional hardware components. In order to save costs, but at the same time enabling the user to pay only for the interfaces needed for the project, the board design is limited to providing the processor with the bare necessities, while routing all interfacing signals “as is” to onboard connectors.

For instance, the serial interfaces such as Controller Area Network (CAN) and UART (RS-232/422/485) provide only TTL levels, and you will need additional hardware (transceivers) to make them hardware-compliant with their respective standards.

The solution to overcome these restrictions comes in form of development and breakout boards. In addition, so-called Arduino shields can extend the Due’s functionality, but in the case of the previously mentioned serial interfaces, shields don’t make much sense, since the serial ports are already integrated on the board.

But, first of all, let's have a look at why CAN transceivers are needed.

CAN Bus Transceiver

Let's re-iterate the point that, while an ARM Cortex M3 processor does provide two CAN interfaces, those interfaces are useless without their respective CAN transceivers. CAN transceivers, due to power management requirements, come always as a separate chip. Out of cost constraints, boards like the Arduino Due and the mbed LPC1768 have no onboard CAN transceivers.

A CAN transceiver is a line driver that converts the controller’s TTL signal to the actual CAN level, which is a differential voltage. The use of differential voltage contributes to the vast reliability of CAN.

The next image compares both signals, TTL and differential voltage:

The actual signal status, recessive or dominant, is based on the differential voltage between CAN_H and CAN_L (2V during dominant bit time; 0V during recessive bit time).

External CAN Bus Transceivers

The problem of the missing CAN transceivers on any embedded system with ARM Cortex M3 processor can easily be remedied through the use of a CAN Breakout Board, such as shown here:

This CAN-Bus breakout board is the perfect solution to adding a full Controller Area Network (CAN) Bus interface to embedded systems such as the Arduino Due or mbed LPC 1768. The board uses Microchip's MCP2551 High Speed CAN Transceiver IC. The output pins are on both screw terminal and DB9 connector. The DB9 can be configure for use with a OBD-II cable or standard CAN pin-out via solder bridges.

In the specific case of the Arduino Due, there is a 2-Channel CAN bus prototyping/breakout board available:

The Arduino DUE CANShield is a prototyping shield designed specifically for supporting the CAN bus capability on the Arduino DUE. The board incorporates dual CAN transceivers required by the two integrated CAN ports on the DUE while providing a large prototyping area. The shield is pin-for-pin compatible with the Arduino DUE and includes a 3.3V bus, 5V bus, SOIC breakout, full digital breakout, CAN termination resistors and terminal blocks for CAN connections.

A Comprehensible Guide to Controller Area Network by Wilfried VossA Comprehensible Guide to Controller Area Network by Wilfried Voss represents the most thoroughly researched and most complete work on CAN available in the marketplace.

Controller Area Network (CAN) is a serial network technology that was originally designed for the automotive industry, especially for European cars, but has also become a popular bus in industrial automation as well as other applications. The CAN bus is primarily used in embedded systems, and as its name implies, is a network technology that provides fast communication among microcontrollers up to real-time requirements, eliminating the need for the much more expensive and complex technology of a Dual-Ported RAM.

This book provides complete information on all CAN features and aspects combined with a high level of readability. => Read more...