UAVCAN speed and BABEL's microcontroller


#1

Hello.

I’m trying to use UAVCAN to detect a faulty node in 10~20 millisecond. Is it possible?

And BABEL is based on STM32F373CBT6. Is it works as USB-CAN adapter even if we change this controller to another?


(Pavel Kirienko) #2

I’m trying to use UAVCAN to detect a faulty node in 10~20 millisecond. Is it possible?

Please define faulty node and what constitutes its detection.

And BABEL is based on STM32F373CBT6. Is it works as USB-CAN adapter even if we change this controller to another?

Sorry, I’m not sure I understand the question. If you replace the MCU things will stop working.


#3

I’m sorry I can not explain in detail.

I mean I want to transfer NODE_HEALTH information to the other NODE in 10~20 millisecond.

And the replacing the MCU meant that if BABEL was made up of another MCU like STM32F407 instead of STM32F373CBT6, it could function equally well. In other words, the function of USB-CAN adapter was done by internal code, not by MCU. Is it right?


(Pavel Kirienko) #4

I mean I want to transfer NODE_HEALTH information to the other NODE in 10~20 millisecond.

Ah, yes, that is quite possible. In the NodeStatus message type definition, the minimum transmission interval is set to 2 milliseconds to accommodate use cases like yours.

the function of USB-CAN adapter was done by internal code, not by MCU. Is it right?

Yes, that functionality is implemented in the firmware. Which is open source: https://github.com/Zubax/zubax_babel


#5

Thanks!

Then how can I set a transmission interval? Can I change the uptime_sec?


(Pavel Kirienko) #6

Both depend on the UAVCAN stack implementation that you’re using. If you’re using libuavcan, the node status broadcasting interval can be configured via uavcan::NodeStatusProvider::setStatusPublicationPeriod(), accessible via uavcan::Node::getNodeStatusProvider(). The field uptime_sec is populated automatically by the library.