Coder Social home page Coder Social logo

entree's Introduction

Entrée backside

Entrée USB-C CAN Interface

Entrée - like a Canapé but tastier...yes the logo is, and name was, Canapé but I didn't want to face a Trademark dispute over an acute e for a hobby project...

The Entrée 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.

Entrée PCBA

Features

  • 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 🎨!
  • Web-DFU firmware update/selector tool.
  • 3d printed case

Purchase

Usage

Hardware Connection

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:

Alternatively, one can obtain pre-crimped female cable assemblies 15134-0402 or female 4-pin housing 51021-04 for custom cabling.

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.

Wiring Example

Below is a wiring example showing the Entrée Picoblade and JST pinout. A Black Magic 0.1" female header cable is connected to the Picoblade and standard STEMMA QT connected to the secondary JST header. Note both cable colouring is non-standard due to optimal board layout.

Entrée wiring diagram

Software

A Vagrant virtual machine environment is provided in the ./linux-vm folder for those on non-Linux hosts or who want a pre-configured environment. Install Vagrant and VirtualBox and then setup the machine from within the ./linux-vm folder with the vagrant up command.

Linux SocketCAN

Entrée 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.

Create CAN network interface [ref]

sudo ip link set can0 type can bitrate BIT_RATE # where BIT_RATE is the CAN bus speed in b/s
sudo ip link set up can0

CLI

Install can-utils using one's package manager and then various command line tools are available.

cansend can0 999#DEADBEEF   # Send a frame to 0x999 with payload 0xdeadbeef
candump can0                # Show all traffic received by can0
canbusload can0 500000      # Calculate bus loading percentage on can0
cansniffer can0             # Display top-style view of can traffic
cangen can0 -D 11223344DEADBEEF -L 8    # Generate fixed-data CAN messages

See the can-utils README for more.

Cangaroo GUI

The Cangaroo GUI can be compiled for Linux hosts. See Cangaroo.

Windows

To use the default candleLight firmware on Windows, one can use Cangaroo: Pre-compiled Win32 binary.

Alternatively, to use SocketCAN one can use the pre-configured virtual machine explained at the start of the Software section.

Python

The python-can module supports SocketCAN (candleLight), slcan and PCAN devices so options for all hosts are covered - see the configuration page.

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.

DIP Switches

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'.

Switch Decimal Set Action
1 1 Force bootloader for DFU.
2 2 Enable Entrée 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 Entrée fork README for usage.

Firmware

  • candleLight_fw Entrée fork - [BIN DOWNLOAD]: Default firmware shipping with Entrée. 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.
  • 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/ttyS0 and then used like a SocketCAN interface.

Update

Web Updater

Use the Web-DFU tool provided here: https://www.jbrengineering.co.uk/web-dfu/

Manual CLI

Enable the DFU DIP switch and then issue the following command with dfu-util:

sudo dfu-util -d 0483:df11 -c 1 -i 0 -a 0 -s 0x08000000 -D $FIRMWARE_FILE.bin

Where $FIRMWARE_FILE.bin is the firmware file to be updated. Binaires are stored in the './bin' folder of this repository, so to flash:

sudo dfu-util -d 0483:df11 -c 1 -i 0 -a 0 -s 0x08000000 -D ./bin/entree_fw_XXX.bin # candleLight_fw

Credits

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. Entrée 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.

Should get you started down the rabbit hole!


JBR Engineering Research Ltd

entree's People

Contributors

tuna-f1sh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

entree's Issues

Entrée

You know it's '-ée' , not '-eé', right ? : )

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.