34 #if IS_USED(MODULE_MCP23X17_SPI) || DOXYGEN
36 #ifndef MCP23X17_PARAM_SPI_ADDR
42 #define MCP23X17_PARAM_SPI_ADDR (0)
45 #ifndef MCP23X17_PARAM_SPI_DEV
47 #define MCP23X17_PARAM_SPI_DEV (SPI_DEV(0))
50 #ifndef MCP23X17_PARAM_SPI_CLK
52 #define MCP23X17_PARAM_SPI_CLK (SPI_CLK_10MHZ)
55 #ifndef MCP23X17_PARAM_SPI_CS
57 #define MCP23X17_PARAM_SPI_CS (GPIO_PIN(0, 0))
60 #ifndef MCP23X17_PARAM_SPI_INT
62 #define MCP23X17_PARAM_SPI_INT (GPIO_PIN(0, 1))
67 #if IS_USED(MODULE_MCP23X17_I2C) || DOXYGEN
69 #ifndef MCP23X17_PARAM_I2C_ADDR
71 #define MCP23X17_PARAM_I2C_ADDR (0)
74 #ifndef MCP23X17_PARAM_I2C_DEV
76 #define MCP23X17_PARAM_I2C_DEV (I2C_DEV(0))
79 #ifndef MCP23X17_PARAM_I2C_INT
81 #define MCP23X17_PARAM_I2C_INT (GPIO_PIN(0, 2))
86 #ifndef MCP23X17_PARAM_RESET_PIN
88 #define MCP23X17_PARAM_RESET_PIN (GPIO_UNDEF)
91 #if IS_USED(MODULE_MCP23X17_SPI) || DOXYGEN
92 #ifndef MCP23X17_SPI_PARAMS
94 #define MCP23X17_SPI_PARAMS { \
95 .addr = MCP23X17_PARAM_SPI_ADDR, \
96 .int_pin = MCP23X17_PARAM_SPI_INT, \
97 .reset_pin = MCP23X17_PARAM_RESET_PIN, \
98 .if_params.type = MCP23X17_SPI, \
99 .if_params.spi.dev = MCP23X17_PARAM_SPI_DEV, \
100 .if_params.spi.cs = MCP23X17_PARAM_SPI_CS, \
101 .if_params.spi.clk = MCP23X17_PARAM_SPI_CLK, \
106 #if IS_USED(MODULE_MCP23X17_I2C) || DOXYGEN
107 #ifndef MCP23X17_I2C_PARAMS
109 #define MCP23X17_I2C_PARAMS { \
110 .addr = MCP23X17_PARAM_I2C_ADDR, \
111 .int_pin = MCP23X17_PARAM_I2C_INT, \
112 .reset_pin = MCP23X17_PARAM_RESET_PIN, \
113 .if_params.type = MCP23X17_I2C, \
114 .if_params.i2c.dev = MCP23X17_PARAM_I2C_DEV, \
119 #if IS_USED(MODULE_SAUL_GPIO) || DOXYGEN
121 #ifndef MCP23X17_SAUL_GPIO_PARAMS
123 #define MCP23X17_SAUL_GPIO_PARAMS { \
126 .name = "MCP23x17_0 PA0 Input", \
127 .pin = MCP23X17_GPIO_PIN(0, 0), \
135 .name = "MCP23x17_0 PB5 Output", \
136 .pin = MCP23X17_GPIO_PIN(1, 5), \
138 .flags = SAUL_GPIO_INIT_CLEAR, \
150 #if IS_USED(MODULE_MCP23X17_SPI) || DOXYGEN
153 #if IS_USED(MODULE_MCP23X17_I2C) || DOXYGEN
158 #if IS_USED(MODULE_SAUL_GPIO) || DOXYGEN
Device driver interface for Microchip MCP23x17 I/O expanders.
static const mcp23x17_params_t mcp23x17_params[]
Allocation of MCP23x17 configuration.
#define MCP23X17_I2C_PARAMS
Default device parameters, if I2C interface is used.
static const mcp23x17_saul_gpio_params_t mcp23x17_saul_gpio_params[]
Additional meta information to keep in the SAUL registry.
#define MCP23X17_SPI_PARAMS
Default device parameters, if SPI interface is used.
#define MCP23X17_SAUL_GPIO_PARAMS
Example for mapping expander pins to SAUL.
SAUL registry interface definition.
Struct containing the peripheral configuration.
MCP23x17 configuration structure for mapping expander pins to SAUL.