I²C 总线
此组件为你的 esp32、esp8266、rp2040、nrf52 或 host 平台设置 I²C 总线。为了让这些组件
正常工作,你需要在配置中定义 I²C 总线。在 ESP32 上(Arduino 和 ESP-IDF
框架均可),内部上拉电阻默认启用。在 ESP8266 上,内部 10kΩ 上拉电阻
始终启用。对于较长的布线或多个设备,仍然建议使用外部上拉电阻。
你可以在一条 I²C 总线上使用多个设备,因为每个设备都被赋予一个
唯一地址用于与 ESP 通信。你可以通过将两条线(SDA 和 SCL)从每个设备板
依次跳线到下一个设备板来实现,或者将每个设备的线都连回 ESP 上的两个 I²C 引脚。
# Example configuration entry for ESP32i2c: sda: GPIOXX scl: GPIOXX scan: true id: bus_a# Example configuration entry for host platformi2c: device: /dev/i2c-1 scan: true-
id(可选,ID):如果你需要多个 I²C 总线,手动指定此 I²C 总线的 ID。
-
scan(可选,boolean):ESPHome 是否应在启动时搜索 I²C 地址空间。 默认值为
true。 -
frequency(可选,frequency):设置 I²C 总线的工作频率。 默认值为
50kHz。取值有10kHz、50kHz、100kHz、200kHz、…800kHz。
esp32、esp8266、rp2040、nrf52
Section titled “esp32、esp8266、rp2040、nrf52”-
sda(可选,Pin):I²C 总线数据线的引脚。 默认为你的开发板默认引脚(ESP32 通常为 GPIO21,ESP8266 通常为 GPIO4)。
-
scl(可选,Pin):I²C 总线时钟线的引脚。 默认为你的开发板默认引脚(ESP32 通常为 GPIO22,ESP8266 通常为 GPIO5)。
-
timeout(可选,Time):设置 I²C 总线超时时间。 默认为框架默认值(
esp32上为100us,esp8266上为1s,rp2040上为1s)。esp32上最大为 13ms。
仅 esp32
Section titled “仅 esp32”-
sda_pullup_enabled(可选,boolean):启用 SDA 引脚的内部上拉电阻。 默认值为
true。 -
scl_pullup_enabled(可选,boolean):启用 SCL 引脚的内部上拉电阻。 默认值为
true。 -
low_power_mode(可选,boolean):启用低功耗(仅主模式)I²C 总线。 仅在 ESP32C5、ESP32C6 和 ESP32P4 上可用。默认值为
false,除非必需。
- device(必选,string):要使用的 I²C 设备路径(例如
/dev/i2c-0、/dev/i2c-1)。
多个 I²C 总线
Section titled “多个 I²C 总线”如果设备支持多个 I²C 总线,它们需要单独定义,并且传感器需要指定正确的总线:
# Example configuration entryi2c: - id: bus_a sda: GPIOXX scl: GPIOXX scan: true - id: bus_b sda: GPIOXX scl: GPIOXX scan: true# Sensors should be specified as followssensor: - platform: bme680 i2c_id: bus_b address: 0x76有关 I²C 多路复用,请参见 Tca9548A。