I2C_device_Arduino 1.2.0
An I²C utility class for Arduino
Loading...
Searching...
No Matches
I2C_device.h
Go to the documentation of this file.
1
10
11#ifndef ARDUINO_I2C_DEVICE_H
12#define ARDUINO_I2C_DEVICE_H
13
14#include <Arduino.h>
15#include <stdint.h>
16#include <Wire.h>
17#include <SPI.h>
18
20{
21public:
27 I2C_device( uint8_t i2c_address, bool repeated_start_enable = true );
28
35 I2C_device( TwoWire& wire, uint8_t i2c_address, bool repeated_start_enable = true );
36
40
45 void repeated_start_enable( bool en = true );
46
51 bool ping( void );
52
60 int tx( const uint8_t *data, uint16_t size, bool stop = true );
61
69 int rx( uint8_t *data, uint16_t size, bool stop = true );
70
79 virtual int reg_w( uint8_t reg_adr, const uint8_t *data, uint16_t size, bool stop = true );
80
88 virtual int reg_w( uint8_t reg_adr, uint8_t data, bool stop = true );
89
98 virtual int reg_r( uint8_t reg_adr, uint8_t *data, uint16_t size, bool stop = true );
99
106 virtual uint8_t reg_r( uint8_t reg_adr, bool stop = true );
107
114 void write_r8( uint8_t reg, uint8_t val, bool stop = true );
115
124 void write_r16( uint8_t reg, uint16_t val, bool stop = true );
125
132 uint8_t read_r8( uint8_t reg, bool stop = true );
133
142 uint16_t read_r16( uint8_t reg, bool stop = true );
143
152 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
153
162 void bit_op16( uint8_t reg, uint16_t mask, uint16_t value );
163
169 static bool ping( uint8_t addr );
170
176 static void scan( TwoWire& target_i2c = Wire, uint8_t stop = 128 );
177
178protected:
179 void txrx( const uint8_t *w_data, uint8_t *r_data, uint16_t size );
180 uint8_t i2c_addr;
181 SPISettings spi_setting;
182
183private:
184 TwoWire& i2c;
185 bool rs_dis;
186};
187
188#endif // ARDUINO_I2C_DEVICE_H
int rx(uint8_t *data, uint16_t size, bool stop=true)
bool ping(void)
SPISettings spi_setting
Definition I2C_device.h:181
uint8_t read_r8(uint8_t reg, bool stop=true)
int tx(const uint8_t *data, uint16_t size, bool stop=true)
void write_r8(uint8_t reg, uint8_t val, bool stop=true)
void bit_op8(uint8_t reg, uint8_t mask, uint8_t value)
static void scan(TwoWire &target_i2c=Wire, uint8_t stop=128)
TwoWire & i2c
Definition I2C_device.h:184
static bool ping(uint8_t addr)
void write_r16(uint8_t reg, uint16_t val, bool stop=true)
virtual int reg_r(uint8_t reg_adr, uint8_t *data, uint16_t size, bool stop=true)
virtual int reg_w(uint8_t reg_adr, const uint8_t *data, uint16_t size, bool stop=true)
void txrx(const uint8_t *w_data, uint8_t *r_data, uint16_t size)
void repeated_start_enable(bool en=true)
void bit_op16(uint8_t reg, uint16_t mask, uint16_t value)
uint8_t i2c_addr
Definition I2C_device.h:180
I2C_device(uint8_t i2c_address, bool repeated_start_enable=true)
Definition I2C_device.cpp:3
uint16_t read_r16(uint8_t reg, bool stop=true)