library to access typical i2c device

Committer:
j_rocket_boy
Date:
Tue Jul 03 10:14:45 2018 +0000
Revision:
0:712b59c07bd3
Child:
1:e7e87f75c0d5
i2c????????????????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
j_rocket_boy 0:712b59c07bd3 1 #include "i2c_general_io.h"
j_rocket_boy 0:712b59c07bd3 2 #include "mbed.h"
j_rocket_boy 0:712b59c07bd3 3
j_rocket_boy 0:712b59c07bd3 4
j_rocket_boy 0:712b59c07bd3 5 GEN_I2C::GEN_I2C(PinName sda, PinName scl)
j_rocket_boy 0:712b59c07bd3 6 :
j_rocket_boy 0:712b59c07bd3 7 i2c_p(new I2C(sda, scl)),
j_rocket_boy 0:712b59c07bd3 8 i2c(*i2c_p)
j_rocket_boy 0:712b59c07bd3 9 {
j_rocket_boy 0:712b59c07bd3 10 }
j_rocket_boy 0:712b59c07bd3 11
j_rocket_boy 0:712b59c07bd3 12 GEN_I2C::GEN_I2C(I2C &i2c_obj)
j_rocket_boy 0:712b59c07bd3 13 :
j_rocket_boy 0:712b59c07bd3 14 i2c_p(NULL),
j_rocket_boy 0:712b59c07bd3 15 i2c(i2c_obj)
j_rocket_boy 0:712b59c07bd3 16 {
j_rocket_boy 0:712b59c07bd3 17 }
j_rocket_boy 0:712b59c07bd3 18
j_rocket_boy 0:712b59c07bd3 19 GEN_I2C::~GEN_I2C()
j_rocket_boy 0:712b59c07bd3 20 {
j_rocket_boy 0:712b59c07bd3 21 if (NULL != i2c_p)
j_rocket_boy 0:712b59c07bd3 22 delete i2c_p;
j_rocket_boy 0:712b59c07bd3 23 }
j_rocket_boy 0:712b59c07bd3 24
j_rocket_boy 0:712b59c07bd3 25 //multi bytes read
j_rocket_boy 0:712b59c07bd3 26 int GEN_I2C::read_reg(char Device_add, char reg_add, char *data, int n){
j_rocket_boy 0:712b59c07bd3 27
j_rocket_boy 0:712b59c07bd3 28 int result;
j_rocket_boy 0:712b59c07bd3 29
j_rocket_boy 0:712b59c07bd3 30 i2c.write(Device_add,&reg_add,1);
j_rocket_boy 0:712b59c07bd3 31 result = i2c.read(Device_add|1,data,n);
j_rocket_boy 0:712b59c07bd3 32
j_rocket_boy 0:712b59c07bd3 33 return result;
j_rocket_boy 0:712b59c07bd3 34 }
j_rocket_boy 0:712b59c07bd3 35
j_rocket_boy 0:712b59c07bd3 36 //single byte read
j_rocket_boy 0:712b59c07bd3 37 char GEN_I2C::read_reg(char Device_add, char reg_add){
j_rocket_boy 0:712b59c07bd3 38
j_rocket_boy 0:712b59c07bd3 39 char result = 0xFF;
j_rocket_boy 0:712b59c07bd3 40
j_rocket_boy 0:712b59c07bd3 41 i2c.write(Device_add,&reg_add,1);
j_rocket_boy 0:712b59c07bd3 42 i2c.read(Device_add|1,&result,1);
j_rocket_boy 0:712b59c07bd3 43
j_rocket_boy 0:712b59c07bd3 44 return result;
j_rocket_boy 0:712b59c07bd3 45
j_rocket_boy 0:712b59c07bd3 46 }
j_rocket_boy 0:712b59c07bd3 47
j_rocket_boy 0:712b59c07bd3 48 //single byte write
j_rocket_boy 0:712b59c07bd3 49 int GEN_I2C::write_reg(char Device_add, char reg_add, char data){
j_rocket_boy 0:712b59c07bd3 50
j_rocket_boy 0:712b59c07bd3 51 int result;
j_rocket_boy 0:712b59c07bd3 52 char cmd[2];
j_rocket_boy 0:712b59c07bd3 53
j_rocket_boy 0:712b59c07bd3 54 cmd[0] = reg_add;
j_rocket_boy 0:712b59c07bd3 55 cmd[1] = data;
j_rocket_boy 0:712b59c07bd3 56
j_rocket_boy 0:712b59c07bd3 57 result = i2c.write(Device_add,cmd,2);
j_rocket_boy 0:712b59c07bd3 58
j_rocket_boy 0:712b59c07bd3 59 return result;
j_rocket_boy 0:712b59c07bd3 60 }