Skip to content

I2C总线(开发概述)

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

Pixhawk/PX4 支持:

  • 连接那些需要比严格的串行通用异步收发器(UART)所能提供的数据速率更高的板外组件,例如测距仪。
  • 与仅支持 I2C 的外围设备兼容。
  • 允许多个设备连接到单个总线(有效保护端口)。 例如,LED、指南针、测距仪等。

INFO

硬件 > I2C 外设页面包含有关如何使用(而非集成)I2C 外设以及解决常见设置问题的信息。

TIP

惯性测量单元(IMU,包括加速度计/陀螺仪)不应通过 I2C 连接(通常使用的是 SPI 总线)。 即使只连接一个设备,该总线的速度也不够快,无法进行振动滤波(例如),并且随着总线上每增加一个设备,性能会进一步下降。

集成 I2C 设备

驱动程序应 #include <drivers/device/i2c.h>,然后针对目标硬件(即对于 NuttX,可参考 此处)提供在 I2C.hpp 中定义的抽象基类 I2C 的实现。

少数驱动程序还需要包含 /src/drivers/ 中对应设备类型的头文件(drv_*.h),例如 drv_led.h

要将驱动程序包含在固件中,必须将该驱动程序添加到与要构建的目标相对应的特定于开发板的 CMake 文件中。 可以针对单个驱动程序进行此操作:

drivers/sf1xx

也可以包含特定类型的所有驱动程序。

CONFIG_COMMON_DISTANCE_SENSOR=y

TIP

例如,可以在 px4_fmu-v4_default 配置中查找 CONFIG_DRIVERS_DISTANCE_SENSOR_LIGHTWARE_LASER_I2C

I2C 驱动程序示例

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

仅举几个例子:

更多信息