ardupilot/libraries/AP_UAVCAN
Andrew Tridgell 9f187c0711 AP_UAVCAN: added CAN_Dx_UC_ESC_OF parameter
this allows for an offset in ESC numbering for much more efficient CAN
bandwidth usage.

For example, on a coaxial OctoQuad quadplane the ESCs are typically
setup as outputs 5 to 12. An ideal setup is to split these over 2 CAN
buses, with one CAN bus for the top layer and the one bus for the
bottom layer (allowing for VTOL flight with one bus failed).

Without this offset parameter you would be sending RawCommand messages
like this:

bus1: [ 0, 0, 0, 0, ESC1, ESC2, ESC3, ESC4 ]
bus2: [ 0, 0, 0, 0, 0, 0, 0, 0, ESC1, ESC2, ESC3, ESC4 ]

this is very wasteful of bus bandwidth, with bus1 using 3x the
bandwidth it should and bus2 using 4x the bandwidth it should (the
above will take 3 can frames for bus1, and 4 can frames for bus 2)

With this patch you can set:

CAN_D1_UC_ESC_OF = 4
CAN_D2_UC_ESC_OF = 8

and you will get this on the bus:

bus1: [ ESC1, ESC2, ESC3, ESC4 ]
bus2: [ ESC1, ESC2, ESC3, ESC4 ]

that takes just 1 can frame per send on each bus
2022-05-19 17:09:45 +10:00
..
dsdl
examples/UAVCAN_sniffer
AP_UAVCAN_Clock.h
AP_UAVCAN_DNA_Server.cpp AP_UAVCAN: add metadata to GetNodeInfo log message 2022-02-14 13:38:07 +11:00
AP_UAVCAN_DNA_Server.h
AP_UAVCAN_IfaceMgr.cpp AP_UAVCAN: disable CAN filtering except on AP_Periph 2022-02-12 16:36:05 +11:00
AP_UAVCAN_IfaceMgr.h AP_UAVCAN: disable CAN filtering except on AP_Periph 2022-02-12 16:36:05 +11:00
AP_UAVCAN.cpp AP_UAVCAN: added CAN_Dx_UC_ESC_OF parameter 2022-05-19 17:09:45 +10:00
AP_UAVCAN.h AP_UAVCAN: added CAN_Dx_UC_ESC_OF parameter 2022-05-19 17:09:45 +10:00