官网教程链接:https://ardupilot.org/dev/docs/code-overview-sensor-drivers.html
I2C
- 一个主机,允许多个从机
- 一种相对简单的通信协议,适合短距离(比如小于1m)通信
- 总线通信速率 100kHz 或 400kHz,相比其他协议,通信速率较低
- 只需要四个引脚(VCC,GND,SDA,SCL)
SPI
- 一个主机,一个从机
- 通信速率20Mhz以上,相对很快,特别是与IIC相比
- 只能短距离通信(10cm)
- 需要至少5个引脚(VCC,GND,SCLK,Master-Out-Slave-In,Master-In-Slave-Out),每个再加上一个从机片选(使能)引脚
Serial/UART
- 一个主机,一个从机
- 基于字节的通信协议,相比IIC和SPI可以长距离传输(比如1m)
- 通信速率相对较快,57kbps~1.5Mbps
- 至少需要四个引脚(VCC,GND,TX,RX),两个引脚可选(Clear-To-Send,Clear-To-Receive)
UAVCAN的CAN总线
- 多主总线,每个节点都可以和其他节点传输数据
- 基于包的传输协议,距离很远
- 高速,典型值是1Mb(实际上只有50%的总线比特位能够不发生碰撞完成传输)
- 至少需要3个引脚(GND,CAN HI,CAN LO),可额外选择VCC可用于给节点供电。
- 点到点的通信拓扑,不推荐使用星形或者树形拓扑
- 每条总线的两端末尾处都需要有终端