CAN bus is a protocol that allows microcontrollers and devices to connect with each other’s applications without a host computer. They can be found in millions of devices, including ships, tractors, trucks, cars, and buses. Now, there’s a new open source board that adds a CAN bus to Raspberry Pi Pico: the CANPico.
The 75x24mm sized CANPico is soldered onto the Raspberry Pi and connects to a CAN bus controller and transceiver. The board can then link to other CAN bus networks via a simple screw terminal. The CANPico features an instrument header with the CAN H and CAN L signals along with digital RX and TX signals for oscilloscopes or logic analyzers.
As for software, the CANPico uses open source MicroPython SDK from Canis Labs. The software includes many features such as priority-inversion free drivers, 1μs accuracy timestamps, large buffers, and an API for triggering a logic analyzer or oscilloscope. CANHack tool kit for low-level error injection is also included. Through the SDK, Python code can operate on the Raspberry Pi RP2040 microcontroller. The board responds in real-time to CAN bus data traffic, measuring time in microseconds instead of milliseconds.
The CANPico's specs:
- Raspberry Pi Pico with RP2040 dual-core Cortex-M0+ microcontroller
- CAN interface through three-pin terminal block implemented via: a Microchip MCP2517/18FD (SPI) CAN controller with 2Kbyte buffer space and MCP2562FD CAN transceiver
- Jumpers to connect a standard 120Ω CAN bus termination resistor and for disabling transmit access to the CAN bus
- Six-pin header for a logic analyzer or oscilloscope to see what’s happening on the bus
- CAN API
- CANHack toolkit API
- Trigger API for triggering test instruments on CAN errors and CAN frames with a specified ID and payload
- MIN API to communicate with a host PC over a second virtual USB serial port