Microchip MCP2515 CAN bus shields
Zephyr supports a couple of different shields carrying the Microchip MCP2515 Stand-Alone CAN Controller with SPI Interface.
DFRobot CAN BUS Shield V2.0
Overview
The DFRobot CAN BUS shield supports the Microchip MCP2515 stand-alone CAN controller and JTA1050 high speed CAN transceiver. The shield has an Arduino Uno R3 compatible hardware interface.
Hardware
MCP2515
Stand-Alone CAN 2.0B Controller
Up to 1Mb/s baud rate
Standard and extended data and remote frames
3x Tx Buffers
2x Rx Buffers
6x 29-bit Filters
2x 29-bit Masks
Interrupt output
One shot mode
High speed SPI interface (10 MHz)
TJA1050
Fully compatible with the “ISO 11898” standard
High speed (up to 1 Mbaud)
Connectivity
Industrial standard DB9 terminal (CAN)
Screw terminals (CAN)
Integrated MicroSD socket for data storage (SPI)
Arduino Uno R3 compatible (SPI)
Name |
Function |
Usage |
|---|---|---|
A0 |
None |
|
A1 |
None |
|
A2 |
None |
|
A3 |
None |
|
A4 |
None |
|
A5 |
None |
|
D0 |
RX |
Ext. header only |
D1 |
TX |
Ext. header only |
D2 |
GPIO_ACTIVE_LOW |
MCP2515 - INT |
D3 |
None |
|
D4 |
SPI-CS |
MicroSD |
D5 |
None |
|
D6 |
None |
|
D7 |
None |
|
D8 |
None |
|
D9 |
None |
|
D10 |
SPI-CS |
MCP2515 |
D11 |
SPI-MOSI |
MCP2515 / MicroSD |
D12 |
SPI-MISO |
MCP2515 / MicroSD |
D13 |
SPI-CLK |
MCP2515 / MicroSD |
D14 |
I2C-SDA |
Ext. header only |
D15 |
I2C_SCL |
Ext. header only |
Power Supply
3.3V ~ 5V
Components
Power switch
Power LED
RX0BF LED
RX1BF LED
For more information about the DFRobot CAN-BUS V2.0 shield:
Keyestudio CAN-BUS Shield (KS0411)
Overview
The Keyestudio CAN BUS shield supports the Microchip MCP2515 stand-alone CAN controller and MCP2551 high speed CAN transceiver. The shield has an Arduino Uno R3 compatible hardware interface.
Keyestudio CAN-BUS Shield (KS0411) (Credit: Keyestudio)
Hardware
MCP2515
Stand-Alone CAN 2.0B Controller
Up to 1Mb/s baud rate
Standard and extended data and remote frames
3x Tx Buffers
2x Rx Buffers
6x 29-bit Filters
2x 29-bit Masks
Interrupt output
One shot mode
High speed SPI interface (10 MHz)
MCP2551
Fully compatible with the “ISO 11898” standard
High speed (up to 1 Mbaud)
Connectivity
Industrial standard DB9 terminal (CAN)
Pin headers (CAN)
Integrated MicroSD socket for data storage (SPI)
Arduino Uno R3 compatible (SPI)
Name |
Function |
Usage |
|---|---|---|
A0 |
None |
|
A1 |
None |
|
A2 |
None |
|
A3 |
None |
|
A4 |
None |
|
A5 |
None |
|
D0 |
RX |
Ext. header only |
D1 |
TX |
Ext. header only |
D2 |
None |
|
D3 |
None |
|
D4 |
None |
|
D5 |
None |
|
D6 |
None |
|
D7 |
None |
|
D8 |
GPIO_ACTIVE_LOW |
MCP2515 - INT |
D9 |
SPI-CS |
MicroSD |
D10 |
SPI-CS |
MCP2515 |
D11 |
SPI-MOSI |
MCP2515 / MicroSD |
D12 |
SPI-MISO |
MCP2515 / MicroSD |
D13 |
SPI-CLK |
MCP2515 / MicroSD |
D14 |
I2C-SDA |
Ext. header only |
D15 |
I2C_SCL |
Ext. header only |
Power Supply
5.0VDC
For more information about the Keyestudio CAN-BUS shield:
Adafruit PiCowbell CAN Bus Shield for Pico
Overview
The Adafruit PiCowbell CAN Bus Shield uses the Microchip MCP2515 controller with an TJA1051/3 transceiver. This shield is built for the Raspberry Pi Pico and uses the SPI interface. It also contains a Qwiic connector to add support for a sensor.
Adafruit PiCowbell CAN Bus Shield
Hardware
MCP2515
Stand-Alone CAN 2.0B Controller
Up to 1Mb/s baud rate
Standard and extended data and remote frames
3x Tx Buffers
2x Rx Buffers
6x 29-bit Filters
2x 29-bit Masks
Interrupt output
One shot mode
High speed SPI interface (10 MHz)
TJA1051
Fully compatible with the “ISO 11898-2:2016”, “SAE J2284-1” & “SAE J2284-5” standards
Supports CAN FD
Fast data rates (up to 5 Mbit/s)
Connectivity
Terminal Block - 3-pin 3.5mm (CAN)
Raspberry Pi Pico compatible (SPI)
Name |
Function |
Usage |
|---|---|---|
GP0 |
None |
|
GP1 |
None |
|
GP2 |
None |
|
GP3 |
None |
|
GP4 |
None |
|
GP5 |
None |
|
GP6 |
None |
|
GP7 |
None |
|
GP8 |
None |
|
GP9 |
None |
|
GP10 |
None |
|
GP11 |
None |
|
GP12 |
None |
|
GP13 |
None |
|
GP14 |
None |
|
GP15 |
None |
|
GP16 |
SPI-MISO |
MCP2515 |
GP17 |
None |
|
GP18 |
SPI-SCK |
MCP2515 |
GP19 |
SPI-MOSI |
MCP2515 |
GP20 |
SPI-CS |
MCP2515 |
GP21 |
GPIO_ACTIVE_LOW |
MCP2515 - INT |
GP22 |
None |
|
GP23 |
None |
|
GP24 |
None |
|
GP25 |
None |
|
GP26 |
None |
|
GP27 |
None |
|
GP28 |
None |
Power Supply
3.3V ~ 5V
For more information about the Adafruit PiCowbell CAN Bus shield:
Seeed Studio XIAO CAN Bus Shield
Overview
The Seeed Studio XIAO CAN Bus Shield is specifically designed to work with Seeed Studio XIAO series development boards. It uses the Microchip MCP2515 CAN controller with an SN65HVD230 high speed CAN transceiver. The shield has an Seeed Studio XIAO compatible hardware interface.
Seeed Studio XIAO CAN Bus Shield
Hardware
The Seeed Studio XIAO CAN Bus Shield requires the SPI chip-select and interrupt line on Seeed Studio XIAO header pins that are not standardized for Zephyr. They conflict with the standardized use of the first UART on pin D6 (TX) and D7 (RX). The shield resolves this conflict by disabling the UART.
This means that the Zephyr console can no longer be accessed via the serial
interface, an alternative such as the USB CDC/ACM class must be used instead,
e.g. with --snippet cdc-acm-console when you invoke west build.
MCP2515
Stand-Alone CAN 2.0B Controller
Up to 1Mb/s baud rate
Standard and extended data and remote frames
3x Tx Buffers
2x Rx Buffers
6x 29-bit Filters
2x 29-bit Masks
Interrupt output
One shot mode
High speed SPI interface (10 MHz)
SN65HVD230
Fully compatible with the “ISO 11898” standard
High speed (up to 1 Mbaud)
Connectivity
Screw terminal block - 3-pin 3.5mm (CAN)
Solder pad for CAN bus termination
Seeed Studio XIAO compatible (SPI)
Name |
Function (original) |
Usage |
|---|---|---|
D0 |
None |
|
D1 |
None |
|
D2 |
None |
|
D3 |
None |
|
D4 |
None (I2C-SDA) |
|
D5 |
None (I2C-SCL) |
|
D6 |
GPIO_ACTIVE_LOW (TX) |
MCP2515 - INT |
D7 |
SPI-CS (RX) |
MCP2515 |
D8 |
SPI-CLK |
MCP2515 |
D9 |
SPI-MOSI |
MCP2515 |
D10 |
SPI-MISO |
MCP2515 |
Power Supply
3.3V ~ 5V
For more information about the Seeed Studio XIAO CAN Bus shield:
Programming
Set --shield dfrobot_can_bus_v2_0 or --shield keyestudio_can_bus_ks0411
or --shield adafruit_can_picowbell or --shield seeed_xiao_can
when you invoke west build or cmake in your Zephyr application.
For example:
Using west:
# From the root of the zephyr repository
west build -b nrf52dk/nrf52832 --shield dfrobot_can_bus_v2_0 samples/drivers/can/counter
west flash
Using CMake and ninja:
# From the root of the zephyr repository
# Use cmake to configure a Ninja-based buildsystem:
cmake -Bbuild -GNinja -DBOARD=nrf52dk/nrf52832 -DSHIELD="dfrobot_can_bus_v2_0" samples/drivers/can/counter
# Now run the build tool on the generated build system:
ninja -Cbuild
ninja -Cbuild flash
Using west:
# From the root of the zephyr repository
west build -b nrf52840dk/nrf52840 --shield keyestudio_can_bus_ks0411 samples/drivers/can/counter
west flash
Using CMake and ninja:
# From the root of the zephyr repository
# Use cmake to configure a Ninja-based buildsystem:
cmake -Bbuild -GNinja -DBOARD=nrf52840dk/nrf52840 -DSHIELD="keyestudio_can_bus_ks0411" samples/drivers/can/counter
# Now run the build tool on the generated build system:
ninja -Cbuild
ninja -Cbuild flash
Using west:
# From the root of the zephyr repository
west build -b rpi_pico --shield adafruit_can_picowbell samples/drivers/can/counter
Using CMake and ninja:
# From the root of the zephyr repository
# Use cmake to configure a Ninja-based buildsystem:
cmake -Bbuild -GNinja -DBOARD=rpi_pico -DSHIELD="adafruit_can_picowbell" samples/drivers/can/counter
# Now run the build tool on the generated build system:
ninja -Cbuild
Using west:
# From the root of the zephyr repository
west build -b xiao_rp2040 -S cdc-acm-console --shield seeed_xiao_can samples/drivers/can/counter
Using CMake and ninja:
# From the root of the zephyr repository
# Use cmake to configure a Ninja-based buildsystem:
cmake -Bbuild -GNinja -DBOARD=xiao_rp2040 -DSNIPPET="cdc-acm-console" -DSHIELD="seeed_xiao_can" samples/drivers/can/counter
# Now run the build tool on the generated build system:
ninja -Cbuild