adafruit_bus_device.i2c_device – I2C Device Manager

class adafruit_bus_device.i2c_device.I2CDevice(i2c: busio.I2C, device_address: int, probe: bool = True)

Represents a single I2C device and manages locking the bus and the device address.

Parameters
  • i2c (I2C) – The I2C bus the device is on

  • device_address (int) – The 7 bit device address

  • probe (bool) – Probe for the device upon object creation, default is true

Example:

import busio
from board import *
from adafruit_bus_device.i2c_device import I2CDevice
with busio.I2C(SCL, SDA) as i2c:
    device = I2CDevice(i2c, 0x70)
    bytes_read = bytearray(4)
    with device:
        device.readinto(bytes_read)
    # A second transaction
    with device:
        device.write(bytes_read)
__enter__(self) I2CDevice

Context manager entry to lock bus.

__exit__(self) None

Automatically unlocks the bus on exit.

readinto(self, buffer: circuitpython_typing.WriteableBuffer, *, start: int = 0, end: int = sys.maxsize) None

Read into buffer from the device.

If start or end is provided, then the buffer will be sliced as if buffer[start:end] were passed. The number of bytes read will be the length of buffer[start:end].

Parameters
  • buffer (WriteableBuffer) – read bytes into this buffer

  • start (int) – beginning of buffer slice

  • end (int) – end of buffer slice; if not specified, use len(buffer)

write(self, buffer: circuitpython_typing.ReadableBuffer, *, start: int = 0, end: int = sys.maxsize) None

Write the bytes from buffer to the device, then transmit a stop bit.

If start or end is provided, then the buffer will be sliced as if buffer[start:end] were passed, but without copying the data. The number of bytes written will be the length of buffer[start:end].

Parameters
  • buffer (ReadableBuffer) – write out bytes from this buffer

  • start (int) – beginning of buffer slice

  • end (int) – end of buffer slice; if not specified, use len(buffer)

write_then_readinto(self, out_buffer: circuitpython_typing.ReadableBuffer, in_buffer: circuitpython_typing.WriteableBuffer, *, out_start: int = 0, out_end: int = sys.maxsize, in_start: int = 0, in_end: int = sys.maxsize) None

Write the bytes from out_buffer to the device, then immediately reads into in_buffer from the device.

If out_start or out_end is provided, then the buffer will be sliced as if out_buffer[out_start:out_end] were passed, but without copying the data. The number of bytes written will be the length of out_buffer[out_start:out_end].

If in_start or in_end is provided, then the input buffer will be sliced as if in_buffer[in_start:in_end] were passed, The number of bytes read will be the length of out_buffer[in_start:in_end].

Parameters
  • out_buffer (ReadableBuffer) – write out bytes from this buffer

  • in_buffer (WriteableBuffer) – read bytes into this buffer

  • out_start (int) – beginning of out_buffer slice

  • out_end (int) – end of out_buffer slice; if not specified, use len(out_buffer)

  • in_start (int) – beginning of in_buffer slice

  • in_end (int) – end of in_buffer slice; if not specified, use len(in_buffer)