Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

To use the SH-C30L with an Arduino UNO, connect the UNO to an MCP2515 CAN module over SPI, then connect that module and the SH-C30L to the same CAN_H/CAN_L bus. The SH-C30L connects to the computer over USB; it does not connect to the UNO’s SPI pins. This setup lets the computer and Arduino exchange classic CAN frames.

How the parts work together

The UNO has no built-in CAN controller in this setup. The MCP2515 module supplies the CAN interface: the UNO sends and receives data through SPI, while the module’s CAN transceiver connects to the bus. The SH-C30L is the computer’s USB-to-CAN interface.

The signal path is:

Computer ⇄ USB ⇄ SH-C30L ⇄ CAN_H/CAN_L bus ⇄ MCP2515 module ⇄ SPI ⇄ Arduino UNO

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

DSD TECH specifies the SH-C30L for CAN 2.0A and 2.0B at up to 1 Mbps. It does not support CAN FD, according to the manufacturer’s firmware release notes. DSD TECH SH-C30L product page · DSD TECH firmware release notes

#1 Best Overall
Seeed Studio CAN-Bus Shield V2 Compatible with Arduino for Controller and Transceiver, Arduino Shield Adopts MCP2515 and MCP2551.
  • 💎Notice: When we produced the new batch of CAN-BUS Shield V2, the wire of the back pads was embedded inside the PCB, although the wire between the pads is now not visible on the outside, the inside is still connected, if you want to change the wiring of the pads, you still need to cut the wiring in the PCB first.
  • 💎CAN-BUS is a common industrial bus because of its long travel distance, medium communication speed and high reliability. It is commonly found on modern machine tools and as an automotive diagnostic bus. Thanks for CAN-BUS, makers are able to hack their cars more conveniently.
  • 💎The CAN-BUS Shield V2 still uses MCP2515 as CAN-BUS controller and MCP2551 as CAN transceiver. OBD-II or CAN standard pinout can be selected by switching jumpers on DB9 interface, the default pinout is OBD-II.
  • 💎We add a TF card slot for data storage and the CS pin can be either set to D4 or D5. The INT pin can also be set to D2 or D3 by switching jumpers on the back of the shield.
  • 💎CAN BUS Shield Work well with Arduino UNO (ATmega328), Arduino Mega (ATmega1280/2560) as well as Arduino Leonardo (ATmega32U4) and LinkIt One.

What you need to check before wiring

  • An Arduino UNO and an MCP2515 CAN module with a CAN transceiver. Check the module’s supply requirements, pin labels, termination jumper, and oscillator marking; modules may use different oscillator frequencies.
  • An SH-C30L adapter and its CAN terminal block. DSD TECH lists a three-pin terminal block in the package, along with the adapter and manual.
  • CAN wiring to connect the two CAN interfaces, with CAN_H matched to CAN_H and CAN_L to CAN_L. The practical setup also connects the grounds.
  • A computer-side CAN application or compatible host interface. Firmware generation affects how the adapter is presented to the computer.

Wire the UNO to the MCP2515 module

For the cited UNO example, connect the module as follows. Confirm the labels on your particular breakout before applying power.

MCP2515 module pin Arduino UNO pin
VCC 5V, if supported by the module
GND GND
CS D10
MISO D12
MOSI D11
SCK D13
INT Not connected in the cited example; use it only if required by your sketch and module setup

The SPI pin assignments and D10 chip-select are for this UNO example. If you change the chip-select wiring, make the sketch use the same pin. Another Arduino board may use different SPI pins.

Connect the CAN bus and set termination

Connect the MCP2515 module’s CAN_H to the SH-C30L’s CAN_H, and CAN_L to CAN_L. Do not cross the two signals. Connect ground between the Arduino-side hardware and adapter for this bench setup. The arrangement is bidirectional: frames from the UNO can reach the computer, and frames sent from the computer can reach the UNO.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
Seeed Studio CAN-Bus Shield V2 Compatible with Arduino for Controller and Transceiver, Arduino Shield Adopts MCP2515 and MCP2551. (Pack of 2)
  • The information below is per-pack only
  • 💎Notice: When we produced the new batch of CAN-BUS Shield V2, the wire of the back pads was embedded inside the PCB, although the wire between the pads is now not visible on the outside, the inside is still connected, if you want to change the wiring of the pads, you still need to cut the wiring in the PCB first.
  • 💎CAN-BUS is a common industrial bus because of its long travel distance, medium communication speed and high reliability. It is commonly found on modern machine tools and as an automotive diagnostic bus. Thanks for CAN-BUS, makers are able to hack their cars more conveniently.
  • 💎The CAN-BUS Shield V2 still uses MCP2515 as CAN-BUS controller and MCP2551 as CAN transceiver. OBD-II or CAN standard pinout can be selected by switching jumpers on DB9 interface, the default pinout is OBD-II.
  • 💎We add a TF card slot for data storage and the CS pin can be either set to D4 or D5. The INT pin can also be set to D2 or D3 by switching jumpers on the back of the shield.

Two-node bench bus

If the SH-C30L and MCP2515 module are at opposite ends of a short, two-node bus, enable 120 Ω termination at each end if the relevant switch or jumper is provided. With power removed, two 120 Ω resistors in parallel should measure about 60 Ω across CAN_H and CAN_L. This is a wiring check, not a powered measurement.

Bus with more than two nodes

Terminate only the two physical ends of the bus. Do not enable a termination resistor at every node. The SH-C30L has switchable 120 Ω termination; check the MCP2515 board for its own termination jumper.

Match the CAN bitrate and MCP2515 oscillator

Both CAN endpoints must use the same bitrate. The Arduino Project Hub example initializes the MCP2515 at 500 kbps with an 8 MHz oscillator, but that 8 MHz value describes the author’s module, not every MCP2515 board. The SH-C30L’s specified ceiling is 1 Mbps; select a bitrate supported by both endpoints.

Rank #3
2PCS CAN-Bus Shield MCP2515
  • 2PCS CAN-BUS Shield MCP2515

Read the oscillator marking on your module and configure the library to match it. The autowp MCP2515 library documents a 16 MHz default clock, so leaving that default unchanged on an 8 MHz module can prevent reliable communication. The two examples use different library APIs; do not combine their code without adapting it to the library actually installed.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The Arduino Project Hub example uses the mcp_can library and declares MCP_CAN CAN0(10), matching chip-select D10. See the Arduino Project Hub example and the autowp MCP2515 library documentation for their respective configuration details.

Set up the computer-side interface

DSD TECH lists Candlelight, SocketCAN support, Cangaroo, BUSMASTER, and a cross-platform Python library among the SH-C30L software options. The host setup depends on the adapter’s firmware and operating system, so do not assume one driver procedure applies to every unit.

Rank #4
DIY KIT MCP2515 EF02037 CAN Bus Shield Controller Board Communication Speed High CAN Module for Arduino
  • DIY KIT MCP2515 EF02037 CAN BUS Shield Controller Board Communication Speed High CAN Module For Arduino
  • 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 Industrial standard 9 pin sub-D connector
  • Two receive buffers with prioritized message storage Operating voltage: DC5-12V

The manufacturer’s release notes say the v2.1 SH-C30 family build uses the raw USB candleLight interface, with gs_usb on Linux and WinUSB on Windows. The vendor also advises identifying firmware versions by the USB-reported device name. Older units may have earlier firmware builds. Check the vendor’s current support files and match the host software to the device’s reported interface. Firmware reflashing is not required for ordinary use, according to the release notes.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshoot in a useful order

  1. Check USB recognition. Confirm the computer detects the SH-C30L and note the USB-reported device or firmware identity. Resolve host-interface recognition before debugging CAN traffic.
  2. Inspect the bus wiring. Confirm CAN_H goes to CAN_H, CAN_L to CAN_L, and the bench setup’s grounds are connected.
  3. Match communication settings. Set both CAN endpoints to the same bitrate, and make the MCP2515 library’s clock setting match the crystal on the actual module.
  4. Verify UNO SPI and chip-select. Check the UNO’s SPI pins and confirm the CS wire matches the pin declared in the sketch.
  5. Check termination with power off. For the two-ended bench bus, measure across CAN_H and CAN_L; about 60 Ω is expected when both 120 Ω end resistors are enabled.
  6. Keep fault categories separate. A computer that does not recognize the adapter points to a USB, firmware, or host-software issue; recognized hardware with no CAN traffic calls for checking wiring, bitrate, oscillator configuration, termination, and sketch/library settings.

Sources and scope

The product specifications and firmware behavior above are based on DSD TECH’s SH-C30L product page and firmware release notes. The wiring and termination guidance follows the Play with Circuit SH-C30L and UNO guide. Library and example details are linked in the relevant sections; the Arduino configuration is specific to that contributor’s hardware.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Quick Recap

Bestseller No. 3
2PCS CAN-Bus Shield MCP2515
2PCS CAN-Bus Shield MCP2515
2PCS CAN-BUS Shield MCP2515
$18.00
Bestseller No. 4
DIY KIT MCP2515 EF02037 CAN Bus Shield Controller Board Communication Speed High CAN Module for Arduino
DIY KIT MCP2515 EF02037 CAN Bus Shield Controller Board Communication Speed High CAN Module for Arduino
Implements CAN V2.0B at up to 1 Mb/s; SPI Interface up to 10 MHz; Two receive buffers with prioritized message storage Operating voltage: DC5-12V
$12.99

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.