CAN 总线设置

本文将介绍如何设置 CAN 总线,以及用户有哪些选项来完成适合其特定需求的设置。

提示

"这款" DroneCAN 设置页面在这里.但必须正确配置以下参数才能使用 DroneCAN 驱动程序。

备注

DroneCAN 的前身是 UAVCAN。

概述

控制器区域网络(CAN 总线)是一种强大的载具总线标准,旨在允许微控制器和设备在没有主机的应用中相互通信。它是一种基于报文的协议,最初设计用于载具内的多路复用电线,以节省铜缆,但也用于许多其他场合。

所有节点都通过双线总线相互连接。导线为 120 Ω 标称双绞线。

大多数运行 ArduPilot 的(飞行)控制器都有一个或两个 CAN 接口,用于连接不同的设备。ArduPilot 最多可支持 3 个 CAN 接口。接口的设置可以提供冗余或最大吞吐量,或两者兼而有之。这是通过三层方法实现的,即除了物理接口外,还有一个代表特定协议的驱动层和一个通过这些驱动在 CAN 总线上通信的软件层(ArduPilot)。

每个物理接口都可以虚拟连接到最多三个代表所用协议的驱动程序之一。例如,最常见的情况是所有接口都连接到一个 DroneCAN 驱动程序。这种设置将为具有三个 CAN 接口的设备提供冗余,并为具有一个 CAN 接口的设备提供全部功能。

配置设置

启用 CAN 接口

每个物理端口都可以通过参数 CAN_Px_DRIVER其中 x 是 CAN 端口的编号。该参数的值是与该端口(接口)相关联的驱动程序 ID。

每个启用的总线/驱动程序都将使用一块 RAM 内存(而不是闪存),具体取决于驱动程序的类型以及是否启用 CANFD。例如,DroneCAN 默认为其驱动程序分配 12KB 内存(如果启用 CANFD,则为 24K),但如果由硬件定义文件设置,则会根据不同板卡的默认值而有所不同。驱动程序 CAN_Dx_UC_POOL 参数可用于更改池大小。所需的池大小取决于所连接的 DroneCAN 外围设备所需的总线流量,有时可以减少 GPS 或指南针等外设的总线流量,而电调等外设则需要更多的总线流量,因此需要更大的池大小。

例如,最常见的设置是只有一个驱动程序,所有接口都与之相连。驱动程序 CAN_P1_DRIVERCAN_P2_DRIVER 参数应设置为 1(第一个驱动程序)。该驱动器( can_d1_protocol)设为 1(DroneCAN)。

./_images/can-driver-parameters.png

在更改任何 CAN_Px_DRIVERCAN_Dx_PROTOCOL (飞行)控制器必须重新启动才能进行更改。

CAN 接口的配置

启用接口并重启后,还可为每个已启用的接口设置两个参数。

它们是

  • CAN_Px_BITRATE - 设置该接口所需的传输速率

  • CAN_Px_DEBUG - 允许输出调试信息

通常默认使用的比特率为 1 Mbit。调试级别也可根据用户的偏好和需要进行设置。

../_images/can-driver-parameters-bitrate.png

当任何接口与任何驱动程序相关联时,该驱动程序将以指定协议加载。

CAN 驱动器的配置

驱动程序应设置为使用某种协议。目前支持编号为 1 的 DroneCAN 设备以及众多 CAN ESC 和其他设备。参数 CAN_Dx_PROTOCOL其中 x 是驱动程序的编号,应填入该驱动程序的协议编号。

CAN_Dx_PROTOCOL

协议类型

0

残疾

1

DroneCAN

4

PiccoloCAN

6

EFI_NWPMU

7

1 美元(测距仪)

8

KDECAN

10

基于脚本的 CAN 驱动程序

11

Benewake (RangeFinder)

12

脚本2(允许两个驱动程序)

13

NoopLoop TOFSenseP(测距仪)

14

纳米雷达 NRA24(测距仪)

更改协议后,必须重新启动(飞行)控制器才能进行更改。

备注

只有符合所选协议的设备才能连接到指定的 CAN 总线上。不允许在一条 CAN 总线上混合使用不同协议的设备。不过,如果协议设置为 DroneCAN,则可以连接某些具有不同协议的设备。参见 DroneCAN CAN 总线上的混合协议.

CAN ESCs

支持多种基于 CAN 的电调:DroneCAN、KDECAN、ToshibaCAN、UAVCAN 和 PiccoloCAN。对于这些电调,每种类型都使用多个参数进行配置。请参阅电调的个别说明页面 这里.