3I2C_device::I2C_device( uint8_t i2c_address,
bool repeated_start_enable ) : i2c( Wire ), i2c_addr( i2c_address ), rs_dis( !repeated_start_enable )
7I2C_device::I2C_device( TwoWire& wire, uint8_t i2c_address,
bool repeated_start_enable ) : i2c( wire ), i2c_addr( i2c_address ), rs_dis( !repeated_start_enable )
23 return !
i2c.endTransmission();
30 for ( uint8_t i = 0; i < stop; i++ ) {
31 target_i2c.beginTransmission( i );
32 result[i] = !target_i2c.endTransmission();
35 for ( uint8_t i = stop; i < 128; i++ ) {
39 Serial.print(
"\nI2C scan result\n " );
40 for ( uint8_t x = 0; x < 16; x++ ) {
42 Serial.print( x, HEX );
45 for ( uint8_t i = 0; i < 128; i++ ) {
48 Serial.print( i / 16, HEX );
54 Serial.print( i, HEX );
57 Serial.print(
" --" );
66 size =
i2c.write( data, size );
67 uint8_t rtn =
i2c.endTransmission( stop );
77 uint16_t r_size =
i2c.requestFrom(
i2c_addr, size );
79 if ( size && !r_size )
82 for ( uint16_t i = 0; i < size; i++ ) {
83 while ( !
i2c.available() )
85 data[ i ] =
i2c.read();
92 uint8_t buffer[ size + 1 ];
94 buffer[ 0 ] = reg_adr;
95 for ( uint16_t i = 0; i < size; i++)
96 buffer[ i + 1 ] = data[ i ];
98 return tx( buffer,
sizeof( buffer ) );
105 buffer[ 0 ] = reg_adr;
108 return tx( buffer,
sizeof( buffer ) );
114 return rx( data, size );
135 buff[ 0 ] = val >> 8;
136 buff[ 1 ] = val & 0xFF;
138 reg_w( reg, buff,
sizeof( buff ) );
150 reg_r( reg, buff,
sizeof( buff ) );
152 return (buff[ 0 ] << 8) | buff[ 1 ];
int rx(uint8_t *data, uint16_t size)
uint8_t read_r8(uint8_t reg)
void write_r8(uint8_t reg, uint8_t val)
void bit_op8(uint8_t reg, uint8_t mask, uint8_t value)
int tx(uint8_t *data, uint16_t size, bool stop=true)
int reg_w(uint8_t reg_adr, uint8_t *data, uint16_t size)
static void scan(TwoWire &target_i2c=Wire, uint8_t stop=128)
uint16_t read_r16(uint8_t reg)
void write_r16(uint8_t reg, uint16_t val)
void repeated_start_enable(bool en=true)
int reg_r(uint8_t reg_adr, uint8_t *data, uint16_t size)
void bit_op16(uint8_t reg, uint16_t mask, uint16_t value)
I2C_device(uint8_t i2c_address, bool repeated_start_enable=true)