Homepage GitHub

Libuavcan driver for STM32H7?

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

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

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

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.

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: