Functions providing an interrupt driven I2C slave interface.
This I2C slave helper library configures slave mode and hooks the relevant I2C IRQ so that a user supplied handler is called with enumerated I2C events.
An example application slave_mem_i2c
, which makes use of this library, can be found in pico_examples.
◆ i2c_slave_handler_t
I2C slave event handler.
The event handler will run from the I2C ISR, so it should return quickly (under 25 us at 400 kb/s). Avoid blocking inside the handler and split large data transfers across multiple calls for best results. When sending data to master, up to i2c_get_write_available() bytes can be written without blocking. When receiving data from master, up to i2c_get_read_available() bytes can be read without blocking.
- Parameters
-
◆ i2c_slave_event_t
I2C slave event types.
Enumerator |
---|
I2C_SLAVE_RECEIVE | Data from master is available for reading. Slave must read from Rx FIFO.
|
I2C_SLAVE_REQUEST | Master is requesting data. Slave must write into Tx FIFO.
|
I2C_SLAVE_FINISH | Master has sent a Stop or Restart signal. Slave may prepare for the next transfer.
|
◆ i2c_slave_deinit()
Restore an I2C instance to master mode.
- Parameters
-
◆ i2c_slave_init()
Configure an I2C instance for slave mode.
- Parameters
-
i2c | I2C instance. |
address | 7-bit slave address. |
handler | Callback for events from I2C master. It will run from the I2C ISR, on the CPU core where the slave was initialised. |