跳转到内容

MCP230xx I/O 扩展器

Microchip MCP230xx 系列是适用于 I²C 总线应用的通用并行 I/O 扩展器件。

支持的变体:

MCP23008 组件(数据手册、 Adafruit)具有 8 个可独立配置的 GPIO。

# 示例配置条目
mcp23008:
- id: 'mcp23008_hub'
address: 0x20
# 单独的输出
switch:
- platform: gpio
name: "MCP23008 Pin #0"
pin:
mcp23xxx: mcp23008_hub
# 使用引脚号 0
number: 0
mode:
output: true
inverted: false
# 单独的输入
binary_sensor:
- platform: gpio
name: "MCP23008 Pin #1"
pin:
mcp23xxx: mcp23008_hub
# 使用引脚号 1
# 为 INPUT 或 INPUT_PULLUP 之一
mode:
input: true
inverted: false
  • id (必选, ID): 用于此 MCP23008 组件的 id。

  • address (可选, int): 驱动器的 I²C 地址。 默认为 0x20。

  • open_drain_interrupt (可选, boolean): 将中断引脚配置为开漏模式。 当 MCP23008 的电源电压大于 3.3 伏特时很有用。请注意,启用此模式后,此引脚 需要一个上拉电阻(到 3.3 伏特)。

  • interrupt_pin (可选, Pin Schema): 连接到 MCP23008 的 INT 输出的引脚。配置后,组件将变为中断驱动而非 轮询——它只在引脚实际改变状态时才读取芯片,从而显著减少 I²C 总线流量 和 CPU 占用。必须是内部 GPIO 引脚(不能是另一个扩展器的引脚)。

  • mcp23xxx (必选, ID): MCP23008 组件的 id。

  • interrupt (可选): 将此引脚设置为触发组件上的 INT 引脚。可以是 CHANGE、RISING、FALLING 之一。

  • number (必选, int): 引脚号。

  • inverted (可选, boolean): 所有读取和写入的值 是否应视为反转的。默认为 false。

  • mode (可选, string): 为此引脚设置的引脚模式。为 INPUT 或 OUTPUT 之一。

MCP23016 组件(数据手册) 具有 16 个 GPIO,可以与其他变体相同的方式进行配置。

NOTE

此设备不支持 ‘INPUT_PULLUP’ 模式。

# 示例配置条目
mcp23016:
- id: 'mcp23016_hub'
address: 0x20
interrupt_pin: GPIOXX
# 单独的输出
switch:
- platform: gpio
name: "MCP23016 Pin #0"
pin:
mcp23016: mcp23016_hub
# 使用引脚号 0
number: 0
mode:
output: true
inverted: false
# 单独的输入
binary_sensor:
- platform: gpio
name: "MCP23016 Pin #1"
pin:
mcp23016: mcp23016_hub
# 使用引脚号 1
number: 1
mode:
input: true
inverted: false
  • id (必选, ID): 用于此 MCP23016 组件的 id。
  • address (可选, int): 驱动器的 I²C 地址。 默认为 0x20。
  • interrupt_pin (可选, Pin Schema): 连接到 MCP23016 的 INT 输出的引脚。配置后,组件将变为中断驱动而非 轮询——它只在引脚实际改变状态时才读取芯片,从而显著减少 I²C 总线流量 和 CPU 占用。INT 引脚为低电平有效且为开漏,因此需要一个外部或内部上拉电阻。 必须是内部 GPIO 引脚(不能是另一个扩展器的引脚)。
  • mcp23xxx (必选, ID): MCP23016 组件的 id。
  • Pin Schema 的所有其他选项。

MCP23017 组件允许你在 ESPHome 中使用 MCP23017 I/O 扩展器 (数据手册、 Adafruit)。 它使用 I²C 总线进行通信。

配置完成后,你可以将 16 个引脚中的任意一个用作 项目的引脚。在 ESPHome 中,它们模拟真实的内部 GPIO 引脚, 因此可以与 ESPHome 的许多组件一起使用,例如 GPIO 二进制传感器或 GPIO 开关。

数据手册中的 GPIO 引脚标注为 A0 至 A7 和 B0 至 B7,本组件将这些引脚 依次映射为 0 至 15 的编号。

# 示例配置条目
mcp23017:
- id: 'mcp23017_hub'
address: 0x20
# 单独的输出
switch:
- platform: gpio
name: "MCP23017 Pin A0"
pin:
mcp23xxx: mcp23017_hub
# 使用引脚 A0
number: 0
mode:
output: true
inverted: false
# 单独的输入
binary_sensor:
- platform: gpio
name: "MCP23017 Pin B7"
pin:
mcp23xxx: mcp23017_hub
# 使用引脚 B7
number: 15
# 为 INPUT 或 INPUT_PULLUP 之一
mode:
input: true
pullup: true
inverted: false
  • id (必选, ID): 用于此 MCP23017 组件的 id。

  • address (可选, int): 驱动器的 I²C 地址。 默认为 0x20。

  • open_drain_interrupt (可选, boolean): 将中断引脚配置为开漏模式。 当 MCP23017 的电源电压大于 3.3 伏特时很有用。请注意,启用此模式后,这些引脚 需要上拉电阻(到 3.3 伏特)。

  • interrupt_pin (可选, Pin Schema): 连接到 MCP23017 的 INTA 或 INTB 输出的引脚。配置后,组件将变为中断驱动而非 轮询——它只在引脚实际改变状态时才读取芯片,从而显著减少 I²C 总线流量 和 CPU 占用。必须是内部 GPIO 引脚(不能是另一个扩展器的引脚)。

  • mcp23xxx (必选, ID): MCP23017 组件的 id。
  • interrupt (可选): 将此引脚设置为触发组件上的端口 INT 引脚。可以是 CHANGE、RISING、FALLING 之一。
  • Pin Schema 的所有其他选项。