I2C Class

class I2CClass : public Acroname::BrainStem::EntityClass

The I2CClass is the interface the I2C busses on BrainStem modules. The class provides a way to send read and write commands to I2C devices on the entitie’s bus.

Public Functions

I2CClass(void)

Constructor.

virtual ~I2CClass(void)

Destructor.

void init(Module *pModule, const uint8_t index)

Initialize the class.

Parameters
  • pModule: The module to which this entity belongs.
  • index: The index of the digital entity being initialized.

aErr read(const uint8_t address, const uint8_t length, uint8_t *result)

Read from a device on this I2C bus.

Return
Returns common entity return values
Parameters
  • address: - The I2C address (7bit <XXXX-XXX0>) of the device to read.
  • length: - The length of the data to read in bytes.
  • result: - The array of bytes that will be filled with the result, upon success. This array should be larger or equivalent to aBRAINSTEM_MAXPACKETBYTES - 5

aErr write(const uint8_t address, const uint8_t length, const uint8_t *data)

Write to a device on this I2C bus.

Return
Returns common entity return values
Parameters
  • address: - The I2C address (7bit <XXXX-XXX0>) of the device to read.
  • length: - The length of the data to read in bytes.
  • data: - The data to send to the device, This array should be no larger than aBRAINSTEM_MAXPACKETBYTES - 5

aErr setPullup(const bool bEnable)

Set bus pullup state. This call only works with stems that have software controlled pullups. Check the datasheet for more information. This parameter is saved when system.save is called.

Return
Returns common entity return values
Parameters
  • bEnable: - true enables pullups false disables them.

aErr setSpeed(const uint8_t speed)

Set I2C bus speed.

This call sets the communication speed for I2C transactions through this API. Speed is an enumeration value which can take the following values. 1 - 100Khz 2 - 400Khz 3 - 1MHz

Return
Returns common entity return values
Parameters
  • speed: - The speed setting value.

aErr getSpeed(uint8_t *speed)

Get I2C bus speed.

This call gets the communication speed for I2C transactions through this API. Speed is an enumeration value which can take the following values. 1 - 100Khz 2 - 400Khz 3 - 1MHz

Return
Returns common entity return values
Parameters
  • speed: - The speed setting value.