Device driver interface for Microchip MCP23x17 I/O expanders. More...

Detailed Description

Device driver interface for Microchip MCP23x17 I/O expanders.

Definition in file mcp23x17.h.

#include "periph/gpio.h"
#include "periph/i2c.h"
#include "periph/spi.h"
#include "saul/periph.h"
#include "event.h"
+ Include dependency graph for mcp23x17.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  mcp23x17_i2c_params_t
 MCP23017 I2C parameters. More...
 
struct  mcp23x17_spi_params_t
 MCP23S17 SPI parameters. More...
 
struct  mcp23x17_if_params_t
 MCP23x17 Hardware interface parameters union. More...
 
struct  mcp23x17_params_t
 Struct containing the peripheral configuration. More...
 
struct  mcp23x17_irq_event_t
 IRQ event type. More...
 
struct  mcp23x17_t
 Device descriptor for MCP23x17 I/O expanders. More...
 
struct  mcp23x17_saul_gpio_params_t
 MCP23x17 configuration structure for mapping expander pins to SAUL. More...
 

Macros

#define MCP23X17_BASE_ADDR   (0x20)
 MCP23x17 device base address. More...
 
#define MCP23X17_GPIO_PIN_NUM   (16)
 MCP23x17 has 16 I/O pins.
 
#define MCP23X17_GPIO_PIN(port, pin)   ((gpio_t)((port << 3) | pin))
 Conversion of (port x : pin y) to a pin number. More...
 

Enumerations

enum  mcp23x17_error_codes_t {
  MCP23X17_OK , MCP23X17_ERROR_I2C , MCP23X17_ERROR_SPI , MCP23X17_ERROR_NO_DEV ,
  MCP23X17_ERROR_INV_MODE , MCP23X17_ERROR_INV_FLANK , MCP23X17_ERROR_GPIO , MCP23X17_ERROR_INT_PIN ,
  MCP23X17_ERROR_RESET_PIN
}
 Named MCP23x17 driver error codes. More...
 
enum  mcp23x17_if_t { MCP23X17_I2C , MCP23X17_SPI }
 MCP23x17 interface types. More...
 

Functions

int mcp23x17_init (mcp23x17_t *dev, const mcp23x17_params_t *params)
 Initialize the MCP23x17 I/O expander. More...
 
int mcp23x17_gpio_init (mcp23x17_t *dev, gpio_t pin, gpio_mode_t mode)
 Initialize a MCP23x17 pin. More...
 
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. More...
 
int mcp23x17_gpio_read (mcp23x17_t *dev, gpio_t pin)
 Get the value from MCP23x17 input pin. More...
 
void mcp23x17_gpio_write (mcp23x17_t *dev, gpio_t pin, int value)
 Write the value to MCP23x17 input pin. More...
 
void mcp23x17_gpio_clear (mcp23x17_t *dev, gpio_t pin)
 Clear the MCP23x17 output pin. More...
 
void mcp23x17_gpio_set (mcp23x17_t *dev, gpio_t pin)
 Set the MCP23x17 output pin. More...
 
void mcp23x17_gpio_toggle (mcp23x17_t *dev, gpio_t pin)
 Toggle the value of the MCP23x17 output pin. More...
 
void mcp23x17_gpio_irq_enable (mcp23x17_t *dev, gpio_t pin)
 Enable pin interrupt. More...
 
void mcp23x17_gpio_irq_disable (mcp23x17_t *dev, gpio_t pin)
 Disable pin interrupt. More...