353 #if IS_USED(MODULE_SAUL_GPIO) || DOXYGEN
357 #if !IS_USED(MODULE_MCP23X17_I2C) && !IS_USED(MODULE_MCP23X17_SPI)
358 #error "Please provide the MCP23x17 variants used by the application."
359 #error "At least one variant has to be specified (mcp23017 and/or mcp23s17)."
362 #if IS_USED(MODULE_MCP23X17_IRQ) || DOXYGEN
379 #define MCP23X17_BASE_ADDR (0x20)
384 #define MCP23X17_GPIO_PIN_NUM (16)
397 #define MCP23X17_GPIO_PIN(port, pin) ((gpio_t)((port << 3) | pin))
418 #if IS_USED(MODULE_MCP23X17_I2C) || DOXYGEN
421 #if IS_USED(MODULE_MCP23X17_SPI) || DOXYGEN
429 #if IS_USED(MODULE_MCP23X17_I2C) || DOXYGEN
438 #if IS_USED(MODULE_MCP23X17_SPI) || DOXYGEN
452 #if IS_USED(MODULE_MCP23X17_I2C) || DOXYGEN
455 #if IS_USED(MODULE_MCP23X17_SPI) || DOXYGEN
487 #if IS_USED(MODULE_MCP23X17_IRQ) || DOXYGEN
519 #if IS_USED(MODULE_MCP23X17_IRQ) || DOXYGEN
528 #if IS_USED(MODULE_SAUL_GPIO) || DOXYGEN
572 #if IS_USED(MODULE_MCP23X17_IRQ) || DOXYGEN
652 #if IS_USED(MODULE_MCP23X17_IRQ) || DOXYGEN
Low-level GPIO peripheral driver interface definitions.
gpio_mode_t
Available pin modes.
int mcp23x17_gpio_init_int(mcp23x17_t *dev, gpio_t pin, gpio_mode_t mode, gpio_flank_t flank, gpio_cb_t isr, void *arg)
Initialize a MCP23x17 pin for external interrupt usage.
void mcp23x17_gpio_toggle(mcp23x17_t *dev, gpio_t pin)
Toggle the value of the MCP23x17 output pin.
#define MCP23X17_GPIO_PIN_NUM
MCP23x17 has 16 I/O pins.
void mcp23x17_gpio_set(mcp23x17_t *dev, gpio_t pin)
Set the MCP23x17 output pin.
void mcp23x17_gpio_irq_disable(mcp23x17_t *dev, gpio_t pin)
Disable pin interrupt.
void mcp23x17_gpio_irq_enable(mcp23x17_t *dev, gpio_t pin)
Enable pin interrupt.
mcp23x17_if_t
MCP23x17 interface types.
int mcp23x17_init(mcp23x17_t *dev, const mcp23x17_params_t *params)
Initialize the MCP23x17 I/O expander.
int mcp23x17_gpio_init(mcp23x17_t *dev, gpio_t pin, gpio_mode_t mode)
Initialize a MCP23x17 pin.
void mcp23x17_gpio_clear(mcp23x17_t *dev, gpio_t pin)
Clear the MCP23x17 output pin.
mcp23x17_error_codes_t
Named MCP23x17 driver error codes.
void mcp23x17_gpio_write(mcp23x17_t *dev, gpio_t pin, int value)
Write the value to MCP23x17 input pin.
int mcp23x17_gpio_read(mcp23x17_t *dev, gpio_t pin)
Get the value from MCP23x17 input pin.
@ MCP23X17_SPI
SPI interface used.
@ MCP23X17_I2C
I2C interface used.
@ MCP23X17_ERROR_RESET_PIN
RESET pin error
@ MCP23X17_ERROR_INV_FLANK
invalid interrupt flank
@ MCP23X17_ERROR_SPI
SPI communication error.
@ MCP23X17_ERROR_NO_DEV
no MCP23x17 I/O expander device
@ MCP23X17_ERROR_I2C
I2C communication error.
@ MCP23X17_ERROR_INV_MODE
invalid pin mode
@ MCP23X17_ERROR_GPIO
GPIO pin error.
@ MCP23X17_ERROR_INT_PIN
INTA/INTB pin error
void(* gpio_cb_t)(void *arg)
Signature of event callback functions triggered from interrupts.
uint_fast8_t i2c_t
Default i2c_t type definition.
Low-level I2C peripheral driver interface definition.
Parameter definitions for mapping peripherals directly to SAUL.
Low-level SPI peripheral driver interface definition.
Default interrupt context for GPIO pins.
i2c_t dev
I2C device used.
MCP23x17 Hardware interface parameters union.
mcp23x17_if_t type
I2C/SPI interface type selector.
mcp23x17_spi_params_t spi
SPI specific interface parameters.
mcp23x17_i2c_params_t i2c
I2C specific interface parameters.
void * dev
MCP23x17 device reference.
event_t event
Super event data structure.
Struct containing the peripheral configuration.
uint8_t addr
MCP2317 device address.
mcp23x17_if_params_t if_params
specific I2C/SPI interface parameters
gpio_t reset_pin
GPIO pin used for RESET signal.
gpio_t int_pin
GPIO pin used for combined INTA/INTB signal.
MCP23x17 configuration structure for mapping expander pins to SAUL.
uint8_t dev
MCP23x17 device index.
saul_gpio_params_t gpio
GPIO configuration for mapping to SAUL.
spi_t dev
SPI device used.
spi_clk_t clk
SPI clock speed.
gpio_t cs
SPI chip Select pin.
Device descriptor for MCP23x17 I/O expanders.
mcp23x17_irq_event_t irq_event
IRQ event object used for the device.
uint16_t od_pins
Pins defined as GPIO_OD or GPIO_OD_PU.
mcp23x17_params_t params
Device initialization parameters.
Direct mapped GPIO configuration values.