CAN Bus Communication: Difference between revisions

From STorM32-BGC Wiki
Jump to navigation Jump to search
Line 56: Line 56:
The parameters in the UAVCAN section can be accessed e.g. using the [http://uavcan.org/GUI_Tool/Overview/ UAVCAN GUI Tool], and a SLCAN adapter. A [http://www.olliw.eu/2017/uavcan-for-hobbyists/ uc4h SLCAN adapter] is probably the cheapest option, for a advanced option see the [https://kb.zubax.com/display/MAINKB/Zubax+Babel Zubax Babel].
The parameters in the UAVCAN section can be accessed e.g. using the [http://uavcan.org/GUI_Tool/Overview/ UAVCAN GUI Tool], and a SLCAN adapter. A [http://www.olliw.eu/2017/uavcan-for-hobbyists/ uc4h SLCAN adapter] is probably the cheapest option, for a advanced option see the [https://kb.zubax.com/display/MAINKB/Zubax+Babel Zubax Babel].


{{PARAMNAME|NodeId}}: <br> Sets the node ID of the STorM32 controller (default = 71). Dynamic node allocation is not supported. The range of allowed IDs is restricted to 11 - 124. The STorM32 board needs to be reset for a change to become effective.
{{PARAMNAME|NodeId}}: <br> See the description for the GUI parameter {{PARAMNAME|Uavcan Node ID}}.


{{PARAMNAME|NodeStatus Rate}}: <br> Sets the rate at which the [http://uavcan.org/Specification/7._List_of_standard_data_types/#nodestatus uavcan.protocol.NodeStatus] message is emitted (default = 1000). A value of 1000 means that a message is broadcasted every 1000 ms.
{{PARAMNAME|NodeStatus Rate}}: <br> Sets the rate at which the [http://uavcan.org/Specification/7._List_of_standard_data_types/#nodestatus uavcan.protocol.NodeStatus] message is emitted (default = 1000). A value of 1000 means that a message is broadcasted every 1000 ms.


{{PARAMNAME|GimbalStatus Rate}}: <br> Sets the rate at which the storm32.GimbalStatus message is emitted (default = 500). A value of 500 means that a message is broadcasted every 500 ms. A value of 0 deactivates the emission of the message.
{{PARAMNAME|GimbalStatus Rate}}: <br> Sets the rate at which the [[#olliw.storm32.Status_.28BC.2C_ID_8300.29 | olliw.storm32.Status]] message is emitted (default = 500). A value of 500 means that a message is broadcasted every 500 ms. A value of 0 deactivates the emission of the message.
 
{{PARAMNAME|Debug}}: <br> A value of 1 enables the emission of [https://uavcan.org/Specification/7._List_of_standard_data_types/#logmessage uavcan.protocol.debug.LogMessage] messages. A value of 0 deactivates the emission of the message.


=== UAVCAN Messages ===
=== UAVCAN Messages ===

Revision as of 13:42, 7 August 2018

The information on this page refers to firmware v2.40 and higher.

The STorM32 gimbal controller supports the DJI CAN bus and UAVCAN protocols. This allows communicating with the STorM32 controller through a CAN bus, very similar to the communication through the serial interfaces or Wifi.

DJI CAN Bus

The STorM32 gimbal controller can be connected to the CAN bus of a DJI flight controller, which enables the STorM32-Link and other advanced functions.

Currently only the DJI Naza M2 is supported.

See also Using STorM32 with DJI.

Configuration


In the GUI, the DJI CAN bus related parameters are located in the [GUI:Interfaces Tool] window, which is accessible via the [GUI:Tools] menu.

Can Configuration:
Set to “dji naza” to activate the CAN bus communication with a DJI Naza M2. The STorM32 board needs to be reset for a change to become effective.

STorM32Link Configuration:
Set to any value different from “off” to activate the STorM32-Link features.

When the CAN bus is configured to “dji naza”, the STorM32-Link will become PRESENT and OK, as indicated in the respective areas in the [GUI:Dashboard] tab and the [GUI:DataDisplay]. The parameter STorM32Link Configuration determines if and which STorM32-Link features are functional.

DJI CAN Bus Messages


The STorM32 listens to the 0x090-1002 (OSD data) and 0x108-1009 (input/output) messages. In order to enable the emission of the OSD data message, the STorM32 emits 0x108-1007 (OSD heartbeat) messages at 1 Hz.

For the details on the messages, see pavelsky's rcgroups thread DJI NAZA/Phantom/A2 CAN bus communication protocol - NazaCanDecoder Arduino library.

UAVCAN

The STorM32's UAVCAN support offers the very same functions and features as the communication through the serial interfaces or Wifi; they only differ by the bus which is used.

See also Using STorM32 with ArduPilot.

Configuration


The STorM32 parameters, which are related to UAVCAN, are split into the 'normal' and the 'UAVCAN' parameter sections. The parameters in the normal section are accessible like all the other parameters, e.g. via the GUI. The parameters in the UAVCAN section are however accessible only by using UAVCAN's Node configuration mechanism. The two parameter sections are exclusive, that is, a parameter is either in the one or the other section, but not in both. The single exception is the Uavcan Node ID parameter, which can be configured by either mechanism.

GUI Parameters

In the GUI, the parameters in the normal section are located in the [GUI:Interfaces Tool] window, which is accessible via the [GUI:Tools] menu.

Can Configuration:
Set to “uavcan” to activate the UAVCAN communication. The STorM32 board needs to be reset for a change to become effective.

Uavcan Node ID:
Sets the node ID of the STorM32 controller (default = 71). Dynamic node allocation is not supported. The range of allowed IDs is restricted to 11 - 124. The STorM32 board needs to be reset for a change to become effective.

This parameter also sets the channel ID for the UAVCAN tunnel.Broadcast message, and the gimbal_id for the STorM32 specific olliw.storm32.Status, olliw.storm32.Control, olliw.storm32.Command, and olliw.storm32.CommandAck messages.

UAVCAN Parameters

The parameters in the UAVCAN section can be accessed e.g. using the UAVCAN GUI Tool, and a SLCAN adapter. A uc4h SLCAN adapter is probably the cheapest option, for a advanced option see the Zubax Babel.

NodeId:
See the description for the GUI parameter Uavcan Node ID.

NodeStatus Rate:
Sets the rate at which the uavcan.protocol.NodeStatus message is emitted (default = 1000). A value of 1000 means that a message is broadcasted every 1000 ms.

GimbalStatus Rate:
Sets the rate at which the olliw.storm32.Status message is emitted (default = 500). A value of 500 means that a message is broadcasted every 500 ms. A value of 0 deactivates the emission of the message.

Debug:
A value of 1 enables the emission of uavcan.protocol.debug.LogMessage messages. A value of 0 deactivates the emission of the message.

UAVCAN Messages


The STorM32 controller supports the UAVCAN standard data types which are needed for basic operation, as well as the tunnel.Broadcast data type.

NodeStatus (BC, ID 341)

See uavcan.protocol.NodeStatus.

GetNodeInfo (SR, ID 1)

See uavcan.protocol.GetNodeInfo.

RestartNode (SR, ID 5)

See uavcan.protocol.RestartNode.

param.ExecuteOpCode (SR, ID 10)

See uavcan.protocol.param.ExecuteOpcode.

param.GetSet (SR, ID 11)

See uavcan.protocol.param.GetSet.

tunnel.Broadcast (BC, ID 2010)

See uavcan.tunnel.Broadcast.

This message appears to not yet have been finally released to the official standard. It is most important though, since it provides the backbone for the communication with the STorM32 controller via UAVCAN. The STorM32 essentially implements a UAVCAN-UART bridge which is based on exchanging these tunnel messages.

See also Uavcan.