I2C 总线概述
I2C 是一种分组交换串行通信协议,允许多个主设备连接到多个从属设备,每个连接只需使用2根电线。 它用于在短距离、板内通信中将低速外设 IC 连接到处理器和微控制器。
Pixhawk/PX4 支持:
- 连接需要比严格的串行 UART 更高数据速率的板载组件:例如测距仪。
- 与仅支持 I2C 的外围设备兼容。
- 允许多个设备连接到单个总线(有效保护端口)。 例如,LED、指南针、测距仪等。
IMU(加速度计/陀螺仪)不应通过 I2C 连接(通常使用 SPI 总线)。 即使连一个设备可以进行振动过滤(实例),总线的速度也不够快,并且总线上的每一个额外设备都会进一步降低性能。
集成 I2C 设备
Drivers should #include <drivers/device/i2c.h>
and then provide an implementation of the abstract base class I2C
defined in I2C.hpp for the target hardware (i.e. for NuttX here).
驱动程序还需要在 /src/drivers/ 中包括其设备类型(drv_*.h)的标头--例如 drv_baro.h。
若要在固件中包含驱动程序,必须将驱动程序添加到与要为其生成的目标相对应的 cmake 配置文件:
drivers/sf1xx
例如,您可以在 px4_fmu-v4_default 配置中搜索此驱动程序。
I2C 驱动程序示例
若要查找 I2C 驱动程序示例,请在 /src/drivers/ 中搜索 i2c.h。
仅举几个例子:
- drivers/sf1xx-i2c 驱动程序,用于 Lightware sf1xx lidar。
- drivers/ms5611-通过 I2C(或 SPI)连接的 MS5611 和 MS6507 气压传感器的 I2C 驱动程序。