This repository contains the design file for an isolated USB-CAN interface PCB. It is based upon the MKS CANable V2.0 and is compatible with the CANable V2.0 firmware. It connects to the CAN bus via RJ45 connectors which can be configured with whatever pinout you require!
- Firmware compatible with CANable V2.0 firmware - can be flashed & updated with the CANable 2.0 web updater.
- RJ45 pinout configured via solder-able jumpers.
- Galvanic isolation between CAN port and USB.
- Two RJ45 connector in parallel allows for inserting inline on bus - all eight signal are passed through.
- DIP switch to enable or disable CAN termination.
- DIP switch to enable silent mode, preventing the CANchovy from transmitting on the bus in hardware.
- JLCPCB basic parts used where possible and all parts available for JLCPCB assembly service. Five CANchovies fully assembled with postage costs around $20 per CANchovy.
- 3D printed case design files.
Assembled CANchovies from JLCPCB of both revision A & B have been tested and work correctly. The only issues with these version were silkscreen issues.
Revision C has the silkscreen fixed and is ready to manufacture and use.
As the CANchovy is based upon the MKS CANable V2.0, it is compatible with firmware which is compatible with the MKS CANable V2.0.
There area couple of suitable firmware options - which firmware you will want to use really depends on your use case.
Using a firmware version which uses the gs_usb protocol will mostly be useful for SocketCAN on Linux, but python-can does support the gs_usb protocol on all platforms. (Note: The Linux kernel only supports CAN FD with the gs_usb driver after version 5.18.)
- budgetcan_fw - board_canablev2 target - I have confirmed that FD CAN is working as of
e8fb8efebdac22019dc7e73dfec773c6fd2ec5a8
. - candlelight build from CANable 2.0 web updater - I have not tested if FD CAN support is present, notes on canable website suggest FD support is not implemented in these candlelight FW builds (yet?).
SLCAN is a protocol which operates over a serial port. Nearly all OS's have support for serial ports and so is very cross-platform. However, support for SLCAN is not very widespread.
You can also mount the serial port as a SocketCAN port on Linux (E.g. as described here.), however, it does not support FD CAN at this time.
FD CAN is possible with the SLCAN firmware, but even fewer programs support FD with SLCAN (if any?). It may be a viable for custom applications where non-Linux is a requirement and Python is not an option.
- slcan with FD support build from CANable 2.0 web updater - source repo.
As mentioned above, a feature of this board is that the RJ45's pinout is user configurable. By soldering one jumper for each of the three connections (0V, CAN_H, CAN_L) on the rear of the board, your custom CAN pinout over RJ45 can be supported!
Simply bridge one of the solder jumpers in each of the silkscreen boxes (labelled: 0V, CAN_H & CAN_L) to connect each signal to the corresponding pin number of the RJ45 connectors.
⚠⚠⚠ Care must be taken to ensure no two signals are connected to the same RJ45 pin! ⚠⚠⚠
Gerbers, BOM, etc. can all be found in the releases area.
When ordering from JLCPCB, is is suggested to select "JLC04161H-7628" under the controlled impedance option, although the USB run is so short that even non-controlled impedance stack-ups will likely work too.