library to access typical i2c device

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?

UserRevisionLine numberNew 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,&reg_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,&reg_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 }