library to access typical i2c device
i2c_general_io.cpp@3:648d68018302, 2018-07-11 (annotated)
- Committer:
- j_rocket_boy
- Date:
- Wed Jul 11 16:27:47 2018 +0000
- Revision:
- 3:648d68018302
- Parent:
- 2:1984bcde6d95
modify license year
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
j_rocket_boy | 1:e7e87f75c0d5 | 1 | // -*- coding: utf-8 -*- |
j_rocket_boy | 1:e7e87f75c0d5 | 2 | /** |
j_rocket_boy | 1:e7e87f75c0d5 | 3 | @file i2c_general_io.cpp |
j_rocket_boy | 2:1984bcde6d95 | 4 | @brief This is a library for accessing registers of a typical i2c sensor to set or read measurement value. |
j_rocket_boy | 1:e7e87f75c0d5 | 5 | |
j_rocket_boy | 1:e7e87f75c0d5 | 6 | @author D.Nakayama |
j_rocket_boy | 1:e7e87f75c0d5 | 7 | @version 1.0 |
j_rocket_boy | 1:e7e87f75c0d5 | 8 | @date 2018-07-08 D.Nakayama Written for C++/mbed. |
j_rocket_boy | 1:e7e87f75c0d5 | 9 | |
j_rocket_boy | 1:e7e87f75c0d5 | 10 | |
j_rocket_boy | 1:e7e87f75c0d5 | 11 | @see |
j_rocket_boy | 3:648d68018302 | 12 | Copyright (C) 2018 D.Nakayama. |
j_rocket_boy | 1:e7e87f75c0d5 | 13 | Released under the MIT license. |
j_rocket_boy | 1:e7e87f75c0d5 | 14 | http://opensource.org/licenses/mit-license.php |
j_rocket_boy | 1:e7e87f75c0d5 | 15 | |
j_rocket_boy | 1:e7e87f75c0d5 | 16 | */ |
j_rocket_boy | 1:e7e87f75c0d5 | 17 | |
j_rocket_boy | 0:712b59c07bd3 | 18 | #include "i2c_general_io.h" |
j_rocket_boy | 0:712b59c07bd3 | 19 | #include "mbed.h" |
j_rocket_boy | 0:712b59c07bd3 | 20 | |
j_rocket_boy | 0:712b59c07bd3 | 21 | |
j_rocket_boy | 0:712b59c07bd3 | 22 | GEN_I2C::GEN_I2C(PinName sda, PinName scl) |
j_rocket_boy | 0:712b59c07bd3 | 23 | : |
j_rocket_boy | 0:712b59c07bd3 | 24 | i2c_p(new I2C(sda, scl)), |
j_rocket_boy | 0:712b59c07bd3 | 25 | i2c(*i2c_p) |
j_rocket_boy | 0:712b59c07bd3 | 26 | { |
j_rocket_boy | 0:712b59c07bd3 | 27 | } |
j_rocket_boy | 0:712b59c07bd3 | 28 | |
j_rocket_boy | 0:712b59c07bd3 | 29 | GEN_I2C::GEN_I2C(I2C &i2c_obj) |
j_rocket_boy | 0:712b59c07bd3 | 30 | : |
j_rocket_boy | 0:712b59c07bd3 | 31 | i2c_p(NULL), |
j_rocket_boy | 0:712b59c07bd3 | 32 | i2c(i2c_obj) |
j_rocket_boy | 0:712b59c07bd3 | 33 | { |
j_rocket_boy | 0:712b59c07bd3 | 34 | } |
j_rocket_boy | 0:712b59c07bd3 | 35 | |
j_rocket_boy | 0:712b59c07bd3 | 36 | GEN_I2C::~GEN_I2C() |
j_rocket_boy | 0:712b59c07bd3 | 37 | { |
j_rocket_boy | 0:712b59c07bd3 | 38 | if (NULL != i2c_p) |
j_rocket_boy | 0:712b59c07bd3 | 39 | delete i2c_p; |
j_rocket_boy | 0:712b59c07bd3 | 40 | } |
j_rocket_boy | 0:712b59c07bd3 | 41 | |
j_rocket_boy | 0:712b59c07bd3 | 42 | //multi bytes read |
j_rocket_boy | 0:712b59c07bd3 | 43 | int GEN_I2C::read_reg(char Device_add, char reg_add, char *data, int n){ |
j_rocket_boy | 0:712b59c07bd3 | 44 | |
j_rocket_boy | 0:712b59c07bd3 | 45 | int result; |
j_rocket_boy | 0:712b59c07bd3 | 46 | |
j_rocket_boy | 0:712b59c07bd3 | 47 | i2c.write(Device_add,®_add,1); |
j_rocket_boy | 0:712b59c07bd3 | 48 | result = i2c.read(Device_add|1,data,n); |
j_rocket_boy | 0:712b59c07bd3 | 49 | |
j_rocket_boy | 0:712b59c07bd3 | 50 | return result; |
j_rocket_boy | 0:712b59c07bd3 | 51 | } |
j_rocket_boy | 0:712b59c07bd3 | 52 | |
j_rocket_boy | 0:712b59c07bd3 | 53 | //single byte read |
j_rocket_boy | 0:712b59c07bd3 | 54 | char GEN_I2C::read_reg(char Device_add, char reg_add){ |
j_rocket_boy | 0:712b59c07bd3 | 55 | |
j_rocket_boy | 0:712b59c07bd3 | 56 | char result = 0xFF; |
j_rocket_boy | 0:712b59c07bd3 | 57 | |
j_rocket_boy | 0:712b59c07bd3 | 58 | i2c.write(Device_add,®_add,1); |
j_rocket_boy | 0:712b59c07bd3 | 59 | i2c.read(Device_add|1,&result,1); |
j_rocket_boy | 0:712b59c07bd3 | 60 | |
j_rocket_boy | 0:712b59c07bd3 | 61 | return result; |
j_rocket_boy | 0:712b59c07bd3 | 62 | |
j_rocket_boy | 0:712b59c07bd3 | 63 | } |
j_rocket_boy | 0:712b59c07bd3 | 64 | |
j_rocket_boy | 0:712b59c07bd3 | 65 | //single byte write |
j_rocket_boy | 0:712b59c07bd3 | 66 | int GEN_I2C::write_reg(char Device_add, char reg_add, char data){ |
j_rocket_boy | 0:712b59c07bd3 | 67 | |
j_rocket_boy | 0:712b59c07bd3 | 68 | int result; |
j_rocket_boy | 0:712b59c07bd3 | 69 | char cmd[2]; |
j_rocket_boy | 0:712b59c07bd3 | 70 | |
j_rocket_boy | 0:712b59c07bd3 | 71 | cmd[0] = reg_add; |
j_rocket_boy | 0:712b59c07bd3 | 72 | cmd[1] = data; |
j_rocket_boy | 0:712b59c07bd3 | 73 | |
j_rocket_boy | 0:712b59c07bd3 | 74 | result = i2c.write(Device_add,cmd,2); |
j_rocket_boy | 0:712b59c07bd3 | 75 | |
j_rocket_boy | 0:712b59c07bd3 | 76 | return result; |
j_rocket_boy | 0:712b59c07bd3 | 77 | } |