library to access typical i2c device
i2c_general_io.cpp@0:712b59c07bd3, 2018-07-03 (annotated)
- 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?
User | Revision | Line number | New 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,®_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,®_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 | } |