3I2C_device::I2C_device( uint8_t i2c_address,
bool repeated_start_enable ) : i2c_addr( i2c_address ), rs_dis( !repeated_start_enable )
20 Wire.beginTransmission( addr );
21 return !Wire.endTransmission();
28 for ( uint8_t i = 0; i < 128; i++ )
31 Serial.print(
"\nI2C scan result\n " );
32 for ( uint8_t x = 0; x < 16; x++ ) {
34 Serial.print( x, HEX );
37 for ( uint8_t i = 0; i < 128; i++ ) {
40 Serial.print( i / 16, HEX );
46 Serial.print( i, HEX );
49 Serial.print(
" --" );
58 size = Wire.write( data, size );
59 uint8_t rtn = Wire.endTransmission( stop );
62 Serial.println(
"i2c_tx: ERROR" );
69 uint16_t r_size = Wire.requestFrom(
i2c_addr, size );
72 Serial.println(
"i2c_rx: received size was shorter than specified" );
74 for ( uint16_t i = 0; i < size; i++ ) {
75 while ( !Wire.available() )
77 data[ i ] = Wire.read();
84 uint8_t buffer[ size + 1 ];
86 buffer[ 0 ] = reg_adr;
87 for ( uint16_t i = 0; i < size; i++)
88 buffer[ i + 1 ] = data[ i ];
90 return tx( buffer,
sizeof( buffer ) );
97 buffer[ 0 ] = reg_adr;
100 return tx( buffer,
sizeof( buffer ) );
106 return rx( data, size );
127 buff[ 0 ] = val >> 8;
128 buff[ 1 ] = val & 0xFF;
130 reg_w( reg, buff,
sizeof( buff ) );
142 reg_r( reg, buff,
sizeof( buff ) );
144 return (buff[ 0 ] << 8) | buff[ 1 ];
uint16_t tx(uint8_t *data, uint16_t size, bool stop=true)
uint8_t read_r8(uint8_t reg)
void write_r8(uint8_t reg, uint8_t val)
static bool ping(uint8_t addr)
void bit_op8(uint8_t reg, uint8_t mask, uint8_t value)
uint16_t rx(uint8_t *data, uint16_t size)
uint16_t read_r16(uint8_t reg)
void write_r16(uint8_t reg, uint16_t val)
void repeated_start_enable(bool en=true)
void bit_op16(uint8_t reg, uint16_t mask, uint16_t value)
I2C_device(uint8_t i2c_address, bool repeated_start_enable=true)
uint16_t reg_r(uint8_t reg_adr, uint8_t *data, uint16_t size)
uint16_t reg_w(uint8_t reg_adr, uint8_t *data, uint16_t size)