mcp23008 - Driver for 8-bit I2C GPIO expander MCP23008¶
- group mcp23008
ESP-IDF driver for I2C 8 bit GPIO expander MCP23008.
Copyright (c) 2018 Ruslan V. Uss unclerus@gmail.com
BSD Licensed as described in the file LICENSE
Defines
-
MCP23008_I2C_ADDR_BASE¶
Enums
-
enum mcp23008_gpio_mode_t¶
GPIO mode.
Values:
-
enumerator MCP23008_GPIO_OUTPUT¶
-
enumerator MCP23008_GPIO_INPUT¶
-
enumerator MCP23008_GPIO_OUTPUT¶
Functions
-
esp_err_t mcp23008_init_desc(i2c_dev_t *dev, uint8_t addr, i2c_port_t port, gpio_num_t sda_gpio, gpio_num_t scl_gpio)¶
Initialize device descriptor.
default SCL frequency is 1MHz
- Parameters
dev – Pointer to I2C device descriptor
port – I2C port number
addr – I2C address,
sda_gpio – SDA GPIO
scl_gpio – SCL GPIO
- Returns
ESP_OK
on success
-
esp_err_t mcp23008_free_desc(i2c_dev_t *dev)¶
Free device descriptor.
- Parameters
dev – Pointer to I2C device descriptor
- Returns
ESP_OK
on success
-
esp_err_t mcp23008_get_int_out_mode(i2c_dev_t *dev, mcp23008_int_out_mode_t *mode)¶
Get INT pins mode.
- Parameters
dev – Pointer to I2C device descriptor
mode – [out] Buffer to store mode
- Returns
ESP_OK
on success
-
esp_err_t mcp23008_set_int_out_mode(i2c_dev_t *dev, mcp23008_int_out_mode_t mode)¶
Set INT pins mode.
- Parameters
dev – Pointer to I2C device descriptor
mode – INT pins mode
- Returns
ESP_OK
on success
-
esp_err_t mcp23008_port_get_mode(i2c_dev_t *dev, uint8_t *val)¶
Get GPIO pins mode.
0 - output, 1 - input for each bit in
val
- Parameters
dev – Pointer to I2C device descriptor
val – [out] Buffer to store mode, 0 bit for GPIO0..7 bit for GPIO7
- Returns
-
esp_err_t mcp23008_port_set_mode(i2c_dev_t *dev, uint8_t val)¶
Set GPIO pins mode.
0 - output, 1 - input for each bit in
val
- Parameters
dev – Pointer to I2C device descriptor
val – Mode, 0 bit for GPIO0..7 bit for GPIO7
- Returns
ESP_OK
on success
-
esp_err_t mcp23008_port_get_pullup(i2c_dev_t *dev, uint8_t *val)¶
Get GPIO pullups status.
0 - pullup disabled, 1 - pullup enabled for each bit in
val
- Parameters
dev – Pointer to I2C device descriptor
val – [out] Pullup status, 0 bit for GPIO0..7 bit for GPIO7
- Returns
ESP_OK
on success
-
esp_err_t mcp23008_port_set_pullup(i2c_dev_t *dev, uint8_t val)¶
Set GPIO pullups status.
0 - pullup disabled, 1 - pullup enabled for each bit in
val
- Parameters
dev – Pointer to I2C device descriptor
val – Pullup status, 0 bit for GPIO0..7 bit for GPIO7
- Returns
ESP_OK
on success
-
esp_err_t mcp23008_port_read(i2c_dev_t *dev, uint8_t *val)¶
Read GPIO port value.
- Parameters
dev – Pointer to I2C device descriptor
val – [out] 8-bit GPIO port value, 0 bit for GPIO0..7 bit for GPIO7
- Returns
ESP_OK
on success
-
esp_err_t mcp23008_port_write(i2c_dev_t *dev, uint8_t val)¶
Write value to GPIO port.
- Parameters
dev – Pointer to I2C device descriptor
val – GPIO port value, 0 bit for GPIO0..7 bit for GPIO7
- Returns
ESP_OK
on success
-
esp_err_t mcp23008_get_mode(i2c_dev_t *dev, uint8_t pin, mcp23008_gpio_mode_t *mode)¶
Get GPIO pin mode.
- Parameters
dev – Pointer to I2C device descriptor
pin – Pin number, 0..7
mode – [out] GPIO pin mode
- Returns
ESP_OK
on success
-
esp_err_t mcp23008_set_mode(i2c_dev_t *dev, uint8_t pin, mcp23008_gpio_mode_t mode)¶
Set GPIO pin mode.
- Parameters
dev – Pointer to I2C device descriptor
pin – Pin number, 0..7
mode – GPIO pin mode
- Returns
ESP_OK
on success
-
esp_err_t mcp23008_get_pullup(i2c_dev_t *dev, uint8_t pin, bool *enable)¶
Get pullup mode of GPIO pin.
- Parameters
dev – Pointer to I2C device descriptor
pin – Pin number, 0..7
enable – [out] pullup mode
- Returns
ESP_OK
on success
-
esp_err_t mcp23008_set_pullup(i2c_dev_t *dev, uint8_t pin, bool enable)¶
Set pullup mode of GPIO pin.
- Parameters
dev – Pointer to I2C device descriptor
pin – Pin number, 0..7
enable –
true
to enable pullup
- Returns
ESP_OK
on success
-
esp_err_t mcp23008_get_level(i2c_dev_t *dev, uint8_t pin, uint32_t *val)¶
Read GPIO pin level.
- Parameters
dev – Pointer to I2C device descriptor
pin – Pin number, 0..7
val – [out]
true
if pin currently in high state
- Returns
ESP_OK
on success
-
esp_err_t mcp23008_set_level(i2c_dev_t *dev, uint8_t pin, uint32_t val)¶
Set GPIO pin level.
Pin must be set up as output.
- Parameters
dev – Pointer to I2C device descriptor
pin – Pin number, 0..7
val – [out]
true
if pin currently in high state
- Returns
ESP_OK
on success
-
esp_err_t mcp23008_port_set_interrupt(i2c_dev_t *dev, uint8_t mask, mcp23008_gpio_intr_t intr)¶
Setup interrupt for group of GPIO pins.
- Parameters
dev – Pointer to I2C device descriptor
mask – Pins to setup
intr – Interrupt mode
- Returns
ESP_OK
on success
-
esp_err_t mcp23008_set_interrupt(i2c_dev_t *dev, uint8_t pin, mcp23008_gpio_intr_t intr)¶
Setup interrupt for GPIO pin.
- Parameters
dev – Pointer to I2C device descriptor
pin – Pin number, 0..7
intr – Interrupt mode
- Returns
ESP_OK
on success
-
MCP23008_I2C_ADDR_BASE¶