• Specification
    • 1. Introduction
    • 2. Basic concepts
    • 3. Data structure description language
    • 4.1 CAN bus transport layer
    • 4.2 UDP bus transport layer
    • 4.3 MAVLink bus transport layer
    • 4.4 CANFD bus transport layer
    • 5. Application level conventions
    • 6. Application level functions
    • 7. List of standard data types
    • 8. Hardware design recommendations
    • dsdl
      • ardupilot
      • uavcan
  • Implementations
    • Libuavcan
      • Platforms
      • Tutorials
        • 1. Library build configuration
        • 2. Node initialization and startup
        • 3. Publishers and subscribers
        • 4. Services
        • 5. Timers
        • 6. Time synchronization
        • 7. Remote node reconfiguration
        • 8. Custom data types
        • 9. Node discovery
        • 10. Dynamic node ID allocation
        • 11. Firmware update
        • 12. Multithreading
        • 13. CAN acceptance filters
      • FAQ
    • Pydronecan
      • Examples
        • Automated ESC enumeration
        • Dump All Messages
        • ESC throttle control
      • Tutorials
        • 1. Setup
        • 2. Basic usage
        • 3. Advanced usage
        • 4. Parsing DSDL definitions
    • AP Periph
    • Libcanard
    • dronecan dsdlc
  • GUI Tool
    • Overview
    • Examples
    • User guide
  • Examples
    • Simple sensor node
  • Discussions
Specification /  4.4 CANFD bus transport layer

CANFD bus transport layer

This chapter defines the CANFD bus based transport layer of DroneCAN.

DroneCAN on CANFD

DroneCAN operates on CANFD with a small number of changes from operation on bxCAN. The changes are:

  • frames can be up to 64 bytes in length, as opposed to 8 byte frames for bxCAN
  • the TAO (tail array optimisation) technique is never used in the encoding at any level
  • the DLC is quantised as described below

Bus rates

CANFD implementations will usually use bit rate switching (BRS) with a nominal bit rate of 1MBps, with payload switching to 1, 2, 4, 5 or 8 MBit depending on hardware capabilities

DLC Encoding

To accomodate the limited range of the DLC field a mapping is used for data lengths of over 8 bytes.

The mapping is

  # Data Length Code      9  10  11  12  13  14  15
  # Number of data bytes 12  16  20  24  32  48  64

Compiler support

It is highly recommended that implementors use the dronecan_dsdlc compiler for building compliant C and C++ bindings for DroneCAN that work with both bxCAN and CANFD


Specification

  • 1. Introduction
  • 2. Basic concepts
  • 3. Data structure description language
  • 4.1 CAN bus transport layer
  • 4.2 UDP bus transport layer
  • 4.3 MAVLink bus transport layer
  • 4.4 CANFD bus transport layer
  • 5. Application level conventions
  • 6. Application level functions
  • 7. List of standard data types
  • 8. Hardware design recommendations
  • dsdl
    • ardupilot
    • uavcan

License

This work is licensed under a Creative Commons Attribution 4.0 International License.
Much of the content of this site is based upon prior work by Pavel Kirienko and the UAVCAN Development Team.
  • https://dronecan.org/discord
  • https://github.com/DroneCAN
  • Report a problem with this website

Generated Sun, 02 Jun 2024 21:47:21 +0000 © DroneCAN development team