CAN-to-USB Get in touch

Prototype · Hardware and firmware

CAN-to-USB

CAN on one side, USB on the other, and firmware you can actually read in between.

Engineers who need a bus adapter they can change rather than a black box they cannot.

Animated illustration of CAN-to-USB CAN-to-USB — bring-up C TARGET CLOCK C · CMAKE · STM32 · CAN
Animated schematic of board bring-up. Signal shapes are representative rather than captured.
Built on
C + CMake
No vendor code
Every layer in the build is one you can read
History
6 commits, in a private repository

What it is

A CAN-to-USB adapter built on the in-house STM32 platform rather than a vendor SDK: firmware in C with a CMake build, targeting the same toolchain and wire protocol as the rest of the embedded work.

Capabilities

What it actually does.

Engineers who need a bus adapter they can change rather than a black box they cannot.

  1. CAN frame capture

    CAN frame capture and transmission bridged over USB

  2. Built on the

    Built on the in-house STM32 toolchain, not a vendor SDK

How it works

3 moves, end to end.

This is how CAN-to-USB works, not a set of steps you can follow yet — it is prototype and not distributed.

  1. Start from the platform

    The build has no generated vendor code in it, so the first layer is already readable.

  2. Bring up the board

    Drivers, clock tree and peripherals are hand-written and unit-testable off-target.

  3. Ship and debug it

    When something is wrong, the layer that is wrong is one you can open.

The full technical description

Specification

Made of, and made when.

Read from the repository at build time rather than typed onto a marketing page.

State
Prototype
Discipline
Hardware systems
Shape
Hardware and firmware
Started
Aug 2026
Last change
Aug 2026
Commits
6
  • C
  • CMake
  • STM32
  • CAN
  • C 97%
  • CMake 3%

Next

Build on CAN-to-USB

Ask about licensing the platform, a board bring-up, or contract firmware work.

This is a pre-production site. All content is subject to finalisation, and nothing stated here is binding until the site is live.