MojoScale Studio Docs
API Reference

i2c

I2C native Berry module.

Studio Docs Buses & Protocols

import i2c

The i2c module exposes the firmware I2C bus for sensors, displays, expanders, and other bus devices. It supports scanning, raw reads and writes, and common register helpers.

Quick example

import i2c
i2c.begin(21, 22, 100000)
devices = i2c.scan()
data = i2c.read_reg(0x40, 0x00, 2)

importi2c

I2C native Berry module.

The i2c module exposes the firmware I2C bus for sensors, displays, expanders, and other bus devices. It supports scanning, raw reads and writes, and common register helpers.

API 8 available

i2c.begin(sda: int, scl: int, frequency: int) -> any

Initialize the I2C bus.

Parameters
Name Type Pass as Required Description
sda int positional or keyword Yes GPIO used for SDA.
scl int positional or keyword Yes GPIO used for SCL.
frequency int positional or keyword Yes Bus frequency in hertz.
Returns

any Native initialization result.

i2c.scan() -> list

Scan the I2C bus for devices.

Returns

list List-like native value of detected device addresses.

i2c.write(address: int, data: list) -> any

Write bytes to an I2C address.

Parameters
Name Type Pass as Required Description
address int positional or keyword Yes 7-bit I2C device address.
data list positional or keyword Yes Bytes, string, or list-like payload accepted by firmware.
Returns

any Native write result.

i2c.read(address: int, length: any) -> bytes

Read bytes from an I2C address.

Parameters
Name Type Pass as Required Description
address int positional or keyword Yes 7-bit I2C device address.
length any positional or keyword Yes Number of bytes to read.
Returns

bytes Bytes-like native value.

i2c.write_read(address: int, data: list, read_length: any) -> bytes

Write a payload and then read a response without releasing the bus.

Parameters
Name Type Pass as Required Description
address int positional or keyword Yes 7-bit I2C device address.
data list positional or keyword Yes Bytes, string, or list-like payload to write first.
read_length any positional or keyword Yes Number of bytes to read after the write.
Returns

bytes Bytes-like native response.

i2c.read_reg(address: int, register: int, length: any) -> bytes

Read bytes from a device register.

Parameters
Name Type Pass as Required Description
address int positional or keyword Yes 7-bit I2C device address.
register int positional or keyword Yes Register address.
length any positional or keyword Yes Number of bytes to read.
Returns

bytes Bytes-like native value.

i2c.write_reg(address: int, register: int, data: list) -> any

Write bytes to a device register.

Parameters
Name Type Pass as Required Description
address int positional or keyword Yes 7-bit I2C device address.
register int positional or keyword Yes Register address.
data list positional or keyword Yes Bytes, string, integer, or list-like payload.
Returns

any Native write result.

i2c.deinit() -> any

Deinitialize the I2C bus.

Returns

any Native deinitialization result.