I2C_device_Arduino 0.2
An I²C utility class for Arduino
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Private Attributes | List of all members
I2C_device Class Reference

#include <I2C_device.h>

Inheritance diagram for I2C_device:
test_LM75B

Public Member Functions

 I2C_device (uint8_t i2c_address, bool repeated_start_enable=true)
 
 ~I2C_device ()
 
void repeated_start_enable (bool en=true)
 
uint16_t tx (uint8_t *data, uint16_t size, bool stop=true)
 
uint16_t rx (uint8_t *data, uint16_t size)
 
uint16_t reg_w (uint8_t reg_adr, uint8_t *data, uint16_t size)
 
uint16_t reg_w (uint8_t reg_adr, uint8_t data)
 
uint16_t reg_r (uint8_t reg_adr, uint8_t *data, uint16_t size)
 
uint8_t reg_r (uint8_t reg_adr)
 
void write_r8 (uint8_t reg, uint8_t val)
 
void write_r16 (uint8_t reg, uint16_t val)
 
uint8_t read_r8 (uint8_t reg)
 
uint16_t read_r16 (uint8_t reg)
 
void bit_op8 (uint8_t reg, uint8_t mask, uint8_t value)
 
void bit_op16 (uint8_t reg, uint16_t mask, uint16_t value)
 

Static Public Member Functions

static bool ping (uint8_t addr)
 
static void scan (void)
 

Private Attributes

uint8_t i2c_addr
 
bool rs_dis
 

Detailed Description

I2C device abstracting class

This class provides common methods for all I2C devices

Author
Tedd OKANO
Version
0.1
Date
29-Mar-2023

Released under the MIT license License

Definition at line 20 of file I2C_device.h.

Constructor & Destructor Documentation

◆ I2C_device()

I2C_device::I2C_device ( uint8_t  i2c_address,
bool  repeated_start_enable = true 
)

Create a I2C_device instance with specified address

Parameters
i2c_addressI2C-bus address
repeated_start_enablerepeated-START-condition enable between write and read transaction for register reading. Default: true

Definition at line 3 of file I2C_device.cpp.

◆ ~I2C_device()

I2C_device::~I2C_device ( )

Destructor of I2C_device

Definition at line 9 of file I2C_device.cpp.

Member Function Documentation

◆ bit_op16()

void I2C_device::bit_op16 ( uint8_t  reg,
uint16_t  mask,
uint16_t  value 
)

Definition at line 157 of file I2C_device.cpp.

◆ bit_op8()

void I2C_device::bit_op8 ( uint8_t  reg,
uint8_t  mask,
uint8_t  value 
)

Register overwriting with bit-mask

Register can be updated by bit level

Parameters
regregister index/address/pointer
maskbit-mask to protect overwriting
valuevalue to overwrite

Definition at line 147 of file I2C_device.cpp.

◆ ping()

bool I2C_device::ping ( uint8_t  addr)
static

ping (class method)

Parameters
targetaddress
Returns
true, if ACKed

Definition at line 18 of file I2C_device.cpp.

Referenced by scan().

◆ read_r16()

uint16_t I2C_device::read_r16 ( uint8_t  reg)

Register read, 16 bit

This 16 bit access may ot be common but it's useful for sensor devices

Parameters
regregister index/address/pointer
Returns
data value

Definition at line 138 of file I2C_device.cpp.

Referenced by bit_op16(), and test_LM75B::read().

◆ read_r8()

uint8_t I2C_device::read_r8 ( uint8_t  reg)

Register read, 8 bit

Parameters
regregister index/address/pointer
Returns
data value

Definition at line 133 of file I2C_device.cpp.

Referenced by bit_op8(), and test_LM75B::os_mode().

◆ reg_r() [1/2]

uint8_t I2C_device::reg_r ( uint8_t  reg_adr)

Single register read

Parameters
regregister index/address/pointer
Returns
read data

Definition at line 109 of file I2C_device.cpp.

◆ reg_r() [2/2]

uint16_t I2C_device::reg_r ( uint8_t  reg_adr,
uint8_t *  data,
uint16_t  size 
)

Multiple register read

Parameters
regregister index/address/pointer
datapointer to data buffer
sizedata size
Returns
transferred data size

Definition at line 103 of file I2C_device.cpp.

Referenced by read_r16(), and read_r8().

◆ reg_w() [1/2]

uint16_t I2C_device::reg_w ( uint8_t  reg_adr,
uint8_t *  data,
uint16_t  size 
)

Multiple register write

Parameters
regregister index/address/pointer
datapointer to data buffer
sizedata size
Returns
transferred data size

Definition at line 82 of file I2C_device.cpp.

Referenced by write_r16(), and write_r8().

◆ reg_w() [2/2]

uint16_t I2C_device::reg_w ( uint8_t  reg_adr,
uint8_t  data 
)

Single register write

Parameters
regregister index/address/pointer
datapointer to data buffer
sizedata size
Returns
transferred data size

Definition at line 93 of file I2C_device.cpp.

◆ repeated_start_enable()

void I2C_device::repeated_start_enable ( bool  en = true)

repeated-START-condition enable

Parameters
enrepeated-START-condition enable between write and read transaction for register reading. Default: true

Definition at line 13 of file I2C_device.cpp.

◆ rx()

uint16_t I2C_device::rx ( uint8_t *  data,
uint16_t  size 
)

Receive data

Parameters
datapointer to data buffer
sizedata size
Returns
transferred data size

Definition at line 67 of file I2C_device.cpp.

Referenced by reg_r().

◆ scan()

void I2C_device::scan ( void  )
static

scan (class method)

Definition at line 24 of file I2C_device.cpp.

◆ tx()

uint16_t I2C_device::tx ( uint8_t *  data,
uint16_t  size,
bool  stop = true 
)

Send data

Parameters
datapointer to data buffer
sizedata size
stopoption: generating STOP-condition after transaction. Defailt: true
Returns
transferred data size

Definition at line 55 of file I2C_device.cpp.

Referenced by reg_r(), and reg_w().

◆ write_r16()

void I2C_device::write_r16 ( uint8_t  reg,
uint16_t  val 
)

Register write, 16 bit

This 16 bit access may ot be common but it's useful for sensor devices

Parameters
regregister index/address/pointer
valdata value

Definition at line 123 of file I2C_device.cpp.

Referenced by bit_op16(), and test_LM75B::thresholds().

◆ write_r8()

void I2C_device::write_r8 ( uint8_t  reg,
uint8_t  val 
)

Register write, 8 bit

Parameters
regregister index/address/pointer
valdata value

Definition at line 118 of file I2C_device.cpp.

Referenced by bit_op8(), and test_LM75B::os_mode().

Member Data Documentation

◆ i2c_addr

uint8_t I2C_device::i2c_addr
private

Definition at line 146 of file I2C_device.h.

Referenced by rx(), and tx().

◆ rs_dis

bool I2C_device::rs_dis
private

Definition at line 147 of file I2C_device.h.

Referenced by reg_r(), and repeated_start_enable().


The documentation for this class was generated from the following files: