跳到主要内容

气压计配置

自 Betaflight 3.2 起,气压计驱动改为可在运行时完整配置和重新配置。

作为这一改动的影响,target.h 中相关定义的解释方式发生了较大变化。虽然已采取兼容措施,但原本可用的气压计配置仍可能无法在 3.2 中正常工作。

本文说明如何通过 CLI 变量和命令在运行时配置气压计,使其恢复工作;同时介绍 target 维护者应了解的默认配置规则变更。

使用 CLI 配置气压计

  • 气压计相关 CLI 变量:
变量取值范围说明
baro_bustypeNONEI2CSPI指定所选气压计连接的总线类型。
baro_i2c_device0 至该 MCU 支持的最大 I2C 总线序号(从 1 开始;等同于 target.hI2Cxxbaro_bustypeI2C 时,指定设备所在的 I2C 总线序号。0 表示未指定。
baro_i2c_address01190x77以 7 位地址形式指定 I2C 地址。0 是使用驱动默认地址的特殊值;17 无效,行为不可预期。
baro_spi_device0 至该 MCU 支持的最大 SPI 总线序号(从 1 开始;等同于 target.hSPIxxbaro_bustypeSPI 时,指定设备所在的 SPI 总线序号。0 表示未指定。
baro_hardwareNONEAUTOBMP280MS5611BMP085NONE:禁用气压计支持;AUTO:固件按预定义规则选择设备;其余值:明确选择对应设备。
  • SPI 气压计的 CS(片选)引脚可通过 resource CLI 命令指定:
资源名说明
BARO_CS指定用于启用 SPI 气压计的 CS(片选)引脚。
  • 并非每个 target 都内置所有总线类型与设备型号的组合。

  • baro_hardware = AUTObaro_bustype = I2Cbaro_i2c_address = 0 时,固件会在指定的 baro_i2c_device 上扫描已内置的 I2C 设备,扫描顺序为 BMP280MS5611BMP085

Target 定义变更

本节面向 target 维护者和开发者。

USE_BARO_xxxUSE_BARO_SPI_xxx 已彼此独立

在 3.2 之前,要在 SPI 上配置设备 xxx,必须同时定义 USE_BARO_xxxUSE_BARO_SPI_xxx;该组合还会禁用设备 xxx 的 I2C 支持。

从 3.2 起,这一依赖关系已移除:USE_BARO_xxx 配置 xxx 的 I2C 变体,USE_BARO_SPI_xxx 配置其 SPI 变体。若两者同时指定,则 I2C 和 SPI 变体都会被配置。

目前,继承自 3.1.7 的 SPI 气压计 target 通常同时定义这两个宏,因此会同时配置 I2C 和 SPI 变体;运行时将按下文规则选择 SPI 变体。

默认设备判定(编译期)

若 target 定义中只配置一个气压计设备,该设备即为默认设备。

若配置了多个设备,则按以下规则依次判定默认设备:

  1. 按预定义优先级选择:BMP280MS5611BMP085。该顺序基于设备的普及程度确定。
  2. 若同时配置 I2C 和 SPI 变体,则选择 SPI,因其更可能为板载设备。
  3. baro_bustype = I2Cbaro_i2c_address = 0baro_hardware = AUTO 时,运行时会按第 1 条的优先级扫描指定 I2C 总线上的设备。

覆盖默认配置

若以上规则无法得到预期的默认配置,可使用 DEFAULT_BARO_bbb_xxx 宏覆盖。具体宏名请参见 sensors/barometer.c 文件开头。