uBit.i2c

Overview

i2c is a very common, widely used protocol for communicating with other devices over a wire. i2c uses a very simple addressing scheme to access these other devices.

Onboard the micro:bit itself there are two components which use i2c bus as a communication mechanism, the accelerometer and the compass.

As well as being used internally, the i2c bus is exposed on two edge connector pins, P19 and P20. This means other accessories that use i2c to communicate can be used in conjunction with the micro:bit.

Message Bus ID

None.

Message Bus Events

None.

API

Constructor


MicroBitI2C(
PinName
sda,
PinName
scl)

Description

Constructor.

Create an instance of MicroBitI2C for I2C communication.

Parameters

PinName
sda - the Pin to be used for SDA

PinName
scl - the Pin to be used for SCL

Example
 MicroBitI2C i2c(I2C_SDA0, I2C_SCL0); 

Note

This class presents a wrapped mbed call to capture failed I2C operations caused by a known silicon bug in the nrf51822. Attempts to automatically reset and restart the I2C hardware if this case is detected.

read


int
read
(
int
address,
char *
data,
int
length)

Description

Performs a complete read transaction. The bottom bit of the address is forced to 1 to indicate a read.

Parameters

int
address - 8-bit I2C slave address [ addr | 1 ]

char *
data - A pointer to a byte buffer used for storing retrieved data.

int
length - Number of bytes to read.

Returns

MICROBIT_OK on success, MICROBIT_I2C_ERROR if an unresolved read failure is detected.

int
read
(
int
address,
char *
data,
int
length,
bool
repeated)

Description

Performs a complete read transaction. The bottom bit of the address is forced to 1 to indicate a read.

Parameters

int
address - 8-bit I2C slave address [ addr | 1 ]

char *
data - A pointer to a byte buffer used for storing retrieved data.

int
length - Number of bytes to read.

bool
repeated - if true, stop is not sent at the end. Defaults to false.

Returns

MICROBIT_OK on success, MICROBIT_I2C_ERROR if an unresolved read failure is detected.

write


int
write
(
int
address,
const char *
data,
int
length)

Description

Performs a complete write transaction. The bottom bit of the address is forced to 0 to indicate a write.

Parameters

int
address - 8-bit I2C slave address [ addr | 0 ]

const char *
data - A pointer to a byte buffer containing the data to write.

int
length - Number of bytes to write

Returns

MICROBIT_OK on success, MICROBIT_I2C_ERROR if an unresolved write failure is detected.

int
write
(
int
address,
const char *
data,
int
length,
bool
repeated)

Description

Performs a complete write transaction. The bottom bit of the address is forced to 0 to indicate a write.

Parameters

int
address - 8-bit I2C slave address [ addr | 0 ]

const char *
data - A pointer to a byte buffer containing the data to write.

int
length - Number of bytes to write

bool
repeated - if true, stop is not sent at the end. Defaults to false.

Returns

MICROBIT_OK on success, MICROBIT_I2C_ERROR if an unresolved write failure is detected.