Homepage GitHub

Libuavcan driver for STM32H7?

(Andrew Tridgell) #1

Has anyone written a libuavcan driver for STM32H7xx? It uses a new FDCAN peripheral, so it looks like some quite significant changes from the F4/F7 driver.
If nobody else has done one then I will try to do one. I’m developing for a STM32H743.
Cheers, Tridge

(Pavel Kirienko) #2

Hi Tridge,

I don’t think a driver for that hardware has ever been published by anyone. You should be aware that the legacy UAVCAN v0 does not support CAN FD; if you are switching to a CAN-FD-capable hardware, you should consider migrating to UAVCAN v1.0 (the first stable release of the specification). The spec draft is currently available at https://new.uavcan.org/specification (section 3-DSDL is incomplete).

(Andrew Tridgell) #3

Hi Pavel,
My initial aim is for compatibility with existing CAN (what ST calls “classic” CAN) on F4 and F7, not CAN FD. We don’t plan on switching to CAN FD for a while yet.
Cheers, Tridge


I’m also looking for drivers for the STM32H7 using classic can mode
Does any one have an example to share?


@pavel.kirienko is there any documentation on how to implement support for a new MCU in the driver package?
@tridge did you manage to make a port for the H7?
Any help appreciated

(Pavel Kirienko) #6

Of course there is: https://uavcan.org/Implementations/Libuavcan/Platforms/#adding-support-for-a-new-platform

tl;dr implement the following interfaces:

  • uavcan::ICanDriver
  • uavcan::ICanIface
  • uavcan::ISystemClock


Thanks Pavel, I have seen these but was wondering if there are some more info about the implemented STM32 driver lib, I guess I have to make some changes since its a different MCU and CAN driver.

(Andrew Tridgell) #8

yes, we support CAN on H7 in ArduPilot. Sid did the work on it.
Core code is here:


Thank you @tridge!
I will check it out :slight_smile: