CAN总线设置
本文介绍如何设置CAN总线以及用户必须使用哪些选项来完成适合其特定需求的设置。
概述
控制器区域网络(CAN总线)是一种强大的总线标准,旨在允许微控制器和设备在没有主机的情况下在应用程序中相互通信。它是一种基于消息的协议,最初设计用于汽车内的多路电线以节省铜,但也用于许多其它环境。
所有节点通过双线总线相互连接。电线是120Ω标称双绞线。
大多数运行Ardupilot的飞行控制器都有一个或两个CAN接口,用于连接不同的设备。接口的设置可以以提供冗余或最大吞吐量或两者的混合的方式进行。这是通过三层方法实现的,除了物理接口之外,还存在表示特定协议的驱动程序层和通过这些驱动程序在CAN总线上通信的软件层(Ardupilot)。
每个物理接口可以虚拟连接到代表要使用的协议的驱动程序之一。例如,最常见的情况是UAVCAN的一个驱动程序,两个接口都连接到它。这种设置将为具有两个CAN接口的设备提供冗余,并为具有一个CAN接口的设备提供全部功能。
设置
启用CAN接口
每个物理端口都可以通过参数CAN_PX_DRIVER关闭或连接到相应的驱动程序,其中X是端口号。此参数的值是将与此端口(接口)关联的驱动程序的ID。
例如,最常见的设置将有一个驱动程序,所有接口都将连接到它。此配置中的CAN_P1_DRIVER和CAN_P2_DRIVER参数应设置为1(第一个驱动程序)。 更改CAN_PX_DRIVER后,必须重新启动自动驾驶仪。
配置CAN接口
启用接口并重新启动后,可以为每个启用的接口设置另外两个参数。
这些是:
CAN_PX_BITRATE - 在此接口上设置所需的传输速率
CAN_PX_DEBUG - 允许输出调试消息
通常默认使用的比特率为1 Mbit。可以根据用户的偏好和需求设置调试级别。
配置CAN驱动程序
应该将驱动程序设置为使用某些协议。 目前支持UAVCAN,编号为1.参数CAN_PX_PROTOCOL,其中X是驱动程序的编号,应填充此驱动程序的协议编号。