Libuavcan compatibility for ATSAMC21 family microcontroller

Can libuavcan be used for ATSAMC21 Cortex M0 microcontrollers? If so, how can it be compiled and implemented? Does it handle all of the low-level CAN processes automatically?

Libuavcan v1 is still under active development so I recommend using Libcanard instead, for now. You will find the integration instructions in the README. Currently, there are no low-level CAN drivers for your platform, but we would appreciate it if you could contribute them to the platform-specific component library.

I do like the C21. Hopefully I’ll be able to add support for it in libUavcan in the future.

1 Like

We’re working on a project to use UAVCAN for the C21. How do you think we can work with you to contribute to the drivers for this? Is there a standard format for this sort of thing?

Not really. There are just guidelines:

  • Make sure the driver matches the usage model of the implementation it is created for. Read the implementation documentation for details.

  • Follow the coding conventions.

  • Provide explicit instructions describing how to test the driver. It’s best to set up a HITL CI test but this may get convoluted considering that we still don’t have any infrastructure for that. That’s another area we could use help with btw.

@scottdixon @pavel.kirienko
I am trying to build add uavcan interface on samc21 uC. Is there some guidance/pointers on how to go about this ?

Alternatively, if you are building an interface for this, is there someway I can help to speed up the process?

Any help with this ?

Hi @echogee, please see my earlier post here concerning the guidelines. At the moment we do not have the resources to begin the development of the driver so it seems like you will be spearheading it, which is awesome. Please keep us in the loop and don’t hesitate to raise specific questions if you have any. I don’t think it’s going to be a major effort given the simplicity of the transport; most of the complexity will be related to the peculiarities of your hardware rather than the protocol itself. This post may be relevant regardless of the fact that it is originally written for a different platform: Libcanard v1 STM32 driver design guidelines.

Will do.

Do you have a reference for the comparison between libcanard and libuavcan ? Is one going to be phased out slowly or so?

There are no plans to deprecate either of them. Libuavcan is a complex library intended for not so memory-constrained devices; currently it is a work in progress and it is not ready for use. Libcanard is a simple and compact library that supports only UAVCAN/CAN intended for resource-constrained systems.