APM 传感器驱动解析 --- 基本通信协议

 

原版英文文地址:https://ardupilot.org/dev/docs/code-overview-sensor-drivers.html

ArduPilot 支持来自许多不同制造商的多种传感器,例如测距仪(又名声纳,激光雷达)、气压计、GPS接收机等。

支持协议

        ArduPilot 支持多种协议,包括 I2CSPIUART  和 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)
  • 点对点拓扑,不建议使用星号或存根拓扑
  • 总线的每一端都需要端接电阻