123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- /*
- * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
- *
- * SPDX-License-Identifier: Apache-2.0
- */
- /**
- * @file
- * @brief ESP IO expander: TCA9554
- */
- #pragma once
- #include <stdint.h>
- #include "esp_err.h"
- #include "driver/i2c_master.h"
- #include "esp_io_expander.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- /**
- * @brief Create a TCA9554(A) IO expander object
- *
- * @param[in] i2c_bus I2C bus handle. Obtained from `i2c_new_master_bus()`
- * @param[in] dev_addr I2C device address of chip. Can be `ESP_IO_EXPANDER_I2C_TCA9554_ADDRESS_XXX` or `ESP_IO_EXPANDER_I2C_TCA9554A_ADDRESS_XXX`.
- * @param[out] handle_ret Handle to created IO expander object
- *
- * @return
- * - ESP_OK: Success, otherwise returns ESP_ERR_xxx
- */
- esp_err_t esp_io_expander_new_i2c_tca9554(i2c_master_bus_handle_t i2c_bus, uint32_t dev_addr, esp_io_expander_handle_t *handle_ret);
- /**
- * @brief I2C address of the TCA9554
- *
- * The 8-bit address format is as follows:
- *
- * (Slave Address)
- * ┌─────────────────┷─────────────────┐
- * ┌─────┐─────┐─────┐─────┐─────┐─────┐─────┐─────┐
- * | 0 | 1 | 0 | 0 | A2 | A1 | A0 | R/W |
- * └─────┘─────┘─────┘─────┘─────┘─────┘─────┘─────┘
- * └────────┯────────┘ └─────┯──────┘
- * (Fixed) (Hareware Selectable)
- *
- * And the 7-bit slave address is the most important data for users.
- * For example, if a chip's A0,A1,A2 are connected to GND, it's 7-bit slave address is 0100000b(0x20).
- * Then users can use `ESP_IO_EXPANDER_I2C_TCA9554_ADDRESS_000` to init it.
- */
- #define ESP_IO_EXPANDER_I2C_TCA9554_ADDRESS_000 (0x20)
- #define ESP_IO_EXPANDER_I2C_TCA9554_ADDRESS_001 (0x21)
- #define ESP_IO_EXPANDER_I2C_TCA9554_ADDRESS_010 (0x22)
- #define ESP_IO_EXPANDER_I2C_TCA9554_ADDRESS_011 (0x23)
- #define ESP_IO_EXPANDER_I2C_TCA9554_ADDRESS_100 (0x24)
- #define ESP_IO_EXPANDER_I2C_TCA9554_ADDRESS_101 (0x25)
- #define ESP_IO_EXPANDER_I2C_TCA9554_ADDRESS_110 (0x26)
- #define ESP_IO_EXPANDER_I2C_TCA9554_ADDRESS_111 (0x27)
- /**
- * @brief I2C address of the TCA9554A
- *
- * The 8-bit address format is as follows:
- *
- * (Slave Address)
- * ┌─────────────────┷─────────────────┐
- * ┌─────┐─────┐─────┐─────┐─────┐─────┐─────┐─────┐
- * | 0 | 1 | 1 | 1 | A2 | A1 | A0 | R/W |
- * └─────┘─────┘─────┘─────┘─────┘─────┘─────┘─────┘
- * └────────┯────────┘ └─────┯──────┘
- * (Fixed) (Hareware Selectable)
- *
- * And the 7-bit slave address is the most important data for users.
- * For example, if a chip's A0,A1,A2 are connected to GND, it's 7-bit slave address is 0111000b(0x38).
- * Then users can use `ESP_IO_EXPANDER_I2C_TCA9554A_ADDRESS_000` to init it.
- */
- #define ESP_IO_EXPANDER_I2C_TCA9554A_ADDRESS_000 (0x38)
- #define ESP_IO_EXPANDER_I2C_TCA9554A_ADDRESS_001 (0x39)
- #define ESP_IO_EXPANDER_I2C_TCA9554A_ADDRESS_010 (0x3A)
- #define ESP_IO_EXPANDER_I2C_TCA9554A_ADDRESS_011 (0x3B)
- #define ESP_IO_EXPANDER_I2C_TCA9554A_ADDRESS_100 (0x3C)
- #define ESP_IO_EXPANDER_I2C_TCA9554A_ADDRESS_101 (0x3D)
- #define ESP_IO_EXPANDER_I2C_TCA9554A_ADDRESS_110 (0x3E)
- #define ESP_IO_EXPANDER_I2C_TCA9554A_ADDRESS_111 (0x3F)
- #ifdef __cplusplus
- }
- #endif
|