跳至内容

I2C 总线(开发概述)

I2C 是一种分组交换串行通信协议,允许多个主设备连接多个从设备,每次连接只需 2 根导线。它用于将低速外设集成电路连接到处理器和微控制器,进行短距离板内通信。

Pixhawk/PX4 支持它:

  • 连接需要比严格串行 UART 提供更高的数据传输速率的板外组件,如测距仪。
  • 与仅支持 I2C 的外围设备兼容。
  • 允许多个设备连接到一条总线上(有助于节省端口)。例如 LED、指南针、测距仪等。

信息

页面 硬件 > I2C 外围设备 包含有关如何 使用 (而不是集成)I2C 外围设备,并解决常见的设置问题。

TIP

IMU(加速度计/陀螺仪)不应通过 I2C 连接(一般情况下,IMU 都是通过 I2C 连接)。 SPI 总线)。即使只连接一个设备,总线的速度也不足以实现振动过滤(例如),而总线上每增加一个设备,性能就会进一步降低。

集成 I2C 设备

驾驶员应 #include <drivers/device/i2c.h>; 然后提供抽象基类的实现 I2C 中定义的 I2C.hpp 目标硬件(即 NuttX 这里).

少数驱动程序还需要包含针对其设备类型的标头 (drv_*.h/src/drivers/ - 例如 drv_led.h.

要在固件中加入驱动程序,必须将该驱动程序添加到与目标机对应的板专用 cmake 文件中。您可以为单个驱动程序执行此操作:

CONFIG_DRIVERS_DISTANCE_SENSOR_LIGHTWARE_LASER_I2C=y

您还可以将特定类型的所有驱动程序都包括在内。

CONFIG_COMMON_DISTANCE_SENSOR=y

TIP

例如,您可以查看/搜索 配置驱动程序_距离传感器_激光器_i2cpx4_fmu-v4_default 配置。

I2C 驱动程序示例

要查找 I2C 驱动程序示例,请搜索 i2c.h/src/drivers/.

仅举几例

更多信息