From f17fe13da66b22fe6136a96fd6fb50a6db58d5af Mon Sep 17 00:00:00 2001 From: Steve Rodgers Date: Wed, 21 Dec 2022 21:39:29 -0800 Subject: [PATCH] Add PCA9554 docs (#2532) --- components/pca9554.rst | 83 +++++++++++++++++++++++++++++++++++++++++ images/pca9554a.jpg | Bin 0 -> 11030 bytes index.rst | 1 + 3 files changed, 84 insertions(+) create mode 100644 components/pca9554.rst create mode 100644 images/pca9554a.jpg diff --git a/components/pca9554.rst b/components/pca9554.rst new file mode 100644 index 000000000..373466cf4 --- /dev/null +++ b/components/pca9554.rst @@ -0,0 +1,83 @@ +PCA9554 I/O Expander +==================== + +The PCA9554 component allows you to use PCA9554, PCA9554A or PCA9536 I/O expanders +(`PCA9554 datasheet `__, +`PCA9554A datasheet `__, +`PCA9536 datasheet `__) in ESPHome. +It uses :ref:`I²C Bus ` for communication. + +Once configured, you can use any of the 8 pins (PCA9554, PCA9554A) or 4 pins (PCA9536) as +pins for your projects. Within ESPHome they emulate a real internal GPIO pin +and can therefore be used with many of ESPHome's components such as the GPIO +binary sensor or GPIO switch. + +The 7 bit I2C device address ranges are: + +PCA9554 : 0x20 to 0x27 + +PCA9554A : 0x38 to 0x3F + +PCA9536 : 0x41 + +For the PCA9554 and PCA9554A, the actual choice of the I2C device address depends on state of the 3 address pins. +Please refer to the individual datasheets for further details. + +Up to eight PCA9554 and an additional eight PCA9554A devices can reside on the same I2C bus. +Please note that only one PCA9536 device is allowed per I2C bus due to its fixed address. + +The PCA9554 and PCA9554A provide 8 bits of GPIO's (pin numbers 0-7) +The PCA9536 provides 4 bits of GPIO's (pin numbers 0-3). + +Any option accepting a :ref:`Pin Schema ` can theoretically be used, but some more +complicated components that do communication through this I/O expander will +not work. + +.. code-block:: yaml + + # Example configuration entry + pca9554: + - id: 'pca9554a_device' + address: 0x38 + + + # Individual outputs + switch: + - platform: gpio + name: "PCF9554A Pin #0" + pin: + pca9554: pcf9554a_device + # Use pin number 0 + number: 0 + # One of INPUT or OUTPUT + mode: + output: true + inverted: false + +Configuration variables: +************************ + +- **id** (**Required**, :ref:`config-id`): The id to use for this PCF9554 component. +- **address** (*Optional*, int): The I²C address of the driver. + Defaults to ``0x20``. + + + +Pin configuration variables: +**************************** + +- **pca9554** (**Required**, :ref:`config-id`): The id of the PCA9554 component of the pin. +- **number** (**Required**, int): The pin number. +- **inverted** (*Optional*, boolean): If all read and written values + should be treated as inverted. Defaults to ``false``. +- **mode** (*Optional*, string): A pin mode to set for the pin at. One of ``INPUT`` or ``OUTPUT``. + + +See Also +-------- + +- :ref:`i2c` +- :doc:`switch/gpio` +- :doc:`binary_sensor/gpio` +- :apiref:`pca9554/pca9554.h` +- :ghedit:`Edit` diff --git a/images/pca9554a.jpg b/images/pca9554a.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2085ce23210eb621bfda53c4d68df14027177980 GIT binary patch literal 11030 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≤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 i&V>B2R-BBoQ(~p~ENaru*otW!!*