原版英文文地址:https://ardupilot.org/dev/docs/code-overview-sensor-drivers.html
ArduPilot 支持来自许多不同制造商的多种传感器,例如测距仪(又名声纳,激光雷达)、气压计、GPS接收机等。
支持协议
ArduPilot 支持多种协议,包括 I2C、SPI、UART 和 CANBUS 等,如果需要增加新的设备驱动,首先需要仔细阅读传感器或设备的数据手册,确定传感器使用的是哪一种协议。下文中将对 ArduPilot 常用的几种协议做简要介绍。
1,I2C协议
- 协议采用一主多从结构
- 一种相对简单的协议,适用于短距离(即小于1m)的通信
- 总线以100kHz或400kHz运行,但与其他协议相比,数据速率相对较低
- 通信只需要4根线缆(VCC, GND, SDA, SCL)
通信结构
通信时序图
2,SPI协议
- 一主一从通信
- 通信速度大于 20M
- 适用于短距离通信(10cm)
- 需要5根线缆(VCC, GND, SCLK, Master-Out-Slave-In, Master-In-Slave-Out) + 1 根片选使能信号
3,串口通信
- 一主一从通信
- 与I2C和SPI(即1m)相比,基于字符的协议适合于更长距离的通信
- 通信速率:57Kbps〜1.5Mbps
- 至少需要4个引脚(VCC,GND,TX,RX),以及2个可选引脚(清除发送,清除接收)
4,CANBUS协议
- 多主机总线,任何节点都可以在需要时启动数据传输
- 基于分组的协议,适用于非常长的距离
- 高速,通常为1 Mb(但是只有50%的总线比特率才能真正使用,而不会发生重大冲突)
- 至少需要3个引脚(GND,CAN HI,CAN LO)
- 点对点拓扑,不建议使用星号或存根拓扑
- 总线的每一端都需要端接电阻