Ahmad Kobeissi / X_NUCLEO_COMMON

Fork of X_NUCLEO_COMMON by ST

Embed: (wiki syntax)

« Back to documentation index

DevI2C Class Reference

DevI2C Class Reference

Helper class DevI2C providing functions for multi-register I2C communication common for a series of I2C devices. More...

#include <DevI2C.h>

Public Member Functions

 DevI2C (PinName sda, PinName scl)
 Create a DevI2C Master interface, connected to the specified pins.
 DevI2C (PinName sda, int mode_sda, PinName scl, int mode_scl)
 Create a DevI2C Master interface, connected to the specified pins and set their pin modes.
int i2c_write (uint8_t *pBuffer, uint8_t DeviceAddr, uint8_t RegisterAddr, uint16_t NumByteToWrite)
 Writes a buffer towards the I2C peripheral device.
int i2c_read (uint8_t *pBuffer, uint8_t DeviceAddr, uint8_t RegisterAddr, uint16_t NumByteToRead)
 Reads a buffer from the I2C peripheral device.

Detailed Description

Helper class DevI2C providing functions for multi-register I2C communication common for a series of I2C devices.

Definition at line 51 of file DevI2C.h.


Constructor & Destructor Documentation

DevI2C ( PinName  sda,
PinName  scl 
)

Create a DevI2C Master interface, connected to the specified pins.

Parameters:
sdaI2C data line pin
sclI2C clock line pin

Definition at line 59 of file DevI2C.h.

DevI2C ( PinName  sda,
int  mode_sda,
PinName  scl,
int  mode_scl 
)

Create a DevI2C Master interface, connected to the specified pins and set their pin modes.

Parameters:
sdaI2C data line pin
sdaI2C data pin mode
sclI2C clock line pin
sclI2C clock pin mode
Note:
this is a workaround to provide a constructor which currently is somehow missing in the I2C base class and it's underlying implementations. In some circumstances (e.g. while debugging) where long latencies between the initialization of the i2c interface in the I2C constructor and the setting of the pin modes in the beyond constructor might occur, the i2c communication might be compromised.

Definition at line 76 of file DevI2C.h.


Member Function Documentation

int i2c_read ( uint8_t *  pBuffer,
uint8_t  DeviceAddr,
uint8_t  RegisterAddr,
uint16_t  NumByteToRead 
)

Reads a buffer from the I2C peripheral device.

Parameters:
pBufferpointer to the byte-array to read data in to
DaviceAddrspecifies the peripheral device slave address.
RegisterAddrspecifies the internal address register where to start reading from (must be correctly masked).
NumByteToReadnumber of bytes to be read.
Return values:
0if ok,
-1if an I2C error has occured
Note:
On some devices if NumByteToWrite is greater than one, the RegisterAddr must be masked correctly!

Definition at line 123 of file DevI2C.h.

int i2c_write ( uint8_t *  pBuffer,
uint8_t  DeviceAddr,
uint8_t  RegisterAddr,
uint16_t  NumByteToWrite 
)

Writes a buffer towards the I2C peripheral device.

Parameters:
pBufferpointer to the byte-array data to send
DeviceAddrspecifies the peripheral device slave address.
RegisterAddrspecifies the internal address register where to start writing to (must be correctly masked).
NumByteToWritenumber of bytes to be written.
Return values:
0if ok,
-1if an I2C error has occured, or
-2on temporary buffer overflow (i.e. NumByteToWrite was too high)
Note:
On some devices if NumByteToWrite is greater than one, the RegisterAddr must be masked correctly!

Definition at line 94 of file DevI2C.h.