# 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
例如,您可以查看/搜索 配置驱动程序_距离传感器_激光器_i2c
在 px4_fmu-v4_default (打开新窗口) 配置。
# I2C 驱动程序示例
要查找 I2C 驱动程序示例,请搜索 i2c.h 于 /src/drivers/ (打开新窗口).
仅举几例
- 驱动程序/distance_sensor/lightware_laser_i2c (打开新窗口) - 的 I2C 驱动程序 Lightware SF1XX 激光雷达.
- 驱动程序/distance_sensor/lightware_laser_serial (打开新窗口) - 串行驱动程序 Lightware SF1XX 激光雷达.
- 驱动程序/ms5611 (打开新窗口) - 用于通过 I2C(或 SPI)连接 MS5611 和 MS6507 气压传感器的 I2C 驱动程序。
# 更多信息
- I2C (打开新窗口) (维基百科)
- I2C 比较概述 (打开新窗口) (learn.sparkfun.com)
- 驱动程序框架
← DroneCAN 端口可配置串行驱动器 →