The Entreé is a USB-C CAN interface. It is a variant of the open source candleLight platform and its many spawns. Not only does it add USB-C, it brings new features and CAN/USB controlled USB-PD for powering devices under test.
- Compatiable with:
- USB-C connection for use with modern hardware.
- USB-PD negotiation for powering devices rather than using USB communication interface. Up-to 20 V/1 A can be requested and supplied to a device.
- Switched control of 120 Ω termination resistor.
- Switched control of DFU mode and TagConnect 6-pin ISP for use as a development tool.
- USB-PD profile and device setup using switched internal CAN IDs.
- USART test points for SLCAN without USB.
- Two signal connector choices.
- Small form factor: 55 x 18.5 mm.
- Silkscreen art 🎨!
The primary CAN connection is a Molex Picoblade 53261-0471.
The connector was selected because they are commonly used on Drones and so Picoblade to 0.1″ header cables can also be easily obtained:
A supplied cable can be selected between Molex to 2.54 mm header like the Black Magic Probe cable or the Molex pre-crimped cable assembly.
A secondary unfitted JST SM04B (otherwise known as Qwiic/STEMMA) footprint is available on the bottom of the board if one wishes to use those commonly available cables instead. JST pre-crimped part is A04SR04SR30K152A.
Please refer to the GitHub repository for more details and setup information.
Entreé comes with candleLight firmware which is intended for use with a Linux host. Most Linux distributions include the gs_usb driver and can kernel modules by default so getting started is very easy.
See the can-utils README for more.
The Cangaroo GUI can be compiled for Linux hosts. See Cangaroo.
Paired with the cantools module, one has access to powerful CLI tools and scripting for CAN bus operations including use with database definition files.
Both modules are pre-installed in the Vagrant virtual machine.
The 4 bit DIP switch sets unique runtime settings when in the ‘ON’ position; for normal usage as a CAN bus probe these would be ‘OFF’.
|1||1||Force bootloader for DFU.|
|2||2||Enable Entreé internal configuration CAN IDs.|
|3||4||Enable VBUS -> VBS always not just when USB-PD profile valid.|
|4||8||Enable 120 ohm CAN_H/CAN_L termination resistor|
NOTE both DFU and ‘Enable VBUS’ will require power cycling the device for the change to be reflected.
USB Power Delivery (USB-PD)
The on-board USB-C controller (STUSB4500) is configured for 5 V / 1A power delivery by default (PDO 2). One can configure the controller using the below CAN bus commands when using the candleLight_fw fork and with the internal CAN IDs switch set.
Please refer to the candleLight_fw Entreé fork README for usage.
- candleLight_fw Entreé fork: Default firmware shipping with Entreé. Works with Linux SocketCAN and the Cangaroo GUI. Includes support for configuration of the on-board STUSB4500 USB-C controller and DFU without setting DIP switch.
- PCAN CANtact: Open source PCAN compatible firmware; works like a PCAN USB adaptor with the PCAN software suite and python-can module. Does not include USB-PD configuration or DFU.
- cantact_slcan: slcand is a USART CAN daemon for Linux, which emulates a CAN network socket over USART. The pre-cursor of the candleLight_fw and gs_usb driver, it offers no real advantage since it is still over USB as a CDC. I’ve found it to drop frames at common bus rates and so do not recommend it. USART pins are exposed however if one wishes to play with slcan over physical USART. A virtual network interface can be created:
sudo slcand -o -s8 -t hw -S 3000000 /dev/ttyS0and then used like a SocketCAN interface.
The open source CAN community is large and this project adds to that in the true spirit of open source. The canable devices (of which I have many!) started me on my journey into CAN hardware and software development. Entreé fixes areas I felt could be improved upon and brought up-to date.
Please find links below to projects that have supported the development of the open source CAN ecosystem.
- SocketCAN user space utilities
- Linux slcan module
- Linux gs_usb module
- python-can Python module
Should get you started down the rabbit hole!