I2C sensor test program, derived from testI2C program. Simple test for FXOS8700CQ, HIH6130, MAG3110, MMA8451Q, MMA8452Q, MPL3115A2, MAX44000, MAX44005, MAX44008, MAX30101 included beside simple I2C read/write from testI2C.
Dependencies: FXOS8700CQ HIH6130 IS31SE5000 MAG3110 MAX44000 MAX44005 MAX44008 MMA8451Q MMA8452Q MPL3115A2 VEML6040 VEML6075 mbed vt100 LM75B FXAS21002 MAX30101 VCNL4020 VCNL4100
dumb_i2c.cpp@18:ee6f43cbfcc1, 2017-12-27 (annotated)
- Committer:
- Rhyme
- Date:
- Wed Dec 27 08:31:24 2017 +0000
- Revision:
- 18:ee6f43cbfcc1
- Parent:
- 0:d4bbd473a83c
current saving at the end of 27-Dec-2017
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Rhyme | 0:d4bbd473a83c | 1 | #include "mbed.h" |
Rhyme | 0:d4bbd473a83c | 2 | #include "dumb_i2c.h" |
Rhyme | 0:d4bbd473a83c | 3 | |
Rhyme | 0:d4bbd473a83c | 4 | DUMB_I2C::DUMB_I2C(PinName sda, PinName scl, int addr) : m_i2c(sda, scl), m_addr(addr<<1) { |
Rhyme | 0:d4bbd473a83c | 5 | // activate the peripheral |
Rhyme | 0:d4bbd473a83c | 6 | freq = 100000 ; /* 100KHz */ |
Rhyme | 0:d4bbd473a83c | 7 | m_i2c.frequency(freq) ; |
Rhyme | 0:d4bbd473a83c | 8 | } |
Rhyme | 0:d4bbd473a83c | 9 | |
Rhyme | 0:d4bbd473a83c | 10 | DUMB_I2C::~DUMB_I2C() { } |
Rhyme | 0:d4bbd473a83c | 11 | |
Rhyme | 0:d4bbd473a83c | 12 | uint8_t DUMB_I2C::address(void) |
Rhyme | 0:d4bbd473a83c | 13 | { |
Rhyme | 0:d4bbd473a83c | 14 | return( m_addr >> 1 ) ; |
Rhyme | 0:d4bbd473a83c | 15 | } |
Rhyme | 0:d4bbd473a83c | 16 | |
Rhyme | 0:d4bbd473a83c | 17 | void DUMB_I2C::frequency(uint32_t f) |
Rhyme | 0:d4bbd473a83c | 18 | { |
Rhyme | 0:d4bbd473a83c | 19 | freq = f ; |
Rhyme | 0:d4bbd473a83c | 20 | m_i2c.frequency(freq) ; |
Rhyme | 0:d4bbd473a83c | 21 | } |
Rhyme | 0:d4bbd473a83c | 22 | |
Rhyme | 0:d4bbd473a83c | 23 | uint32_t DUMB_I2C::frequency(void) |
Rhyme | 0:d4bbd473a83c | 24 | { |
Rhyme | 0:d4bbd473a83c | 25 | return(freq) ; |
Rhyme | 0:d4bbd473a83c | 26 | } |
Rhyme | 0:d4bbd473a83c | 27 | |
Rhyme | 18:ee6f43cbfcc1 | 28 | void DUMB_I2C::start(void) |
Rhyme | 18:ee6f43cbfcc1 | 29 | { |
Rhyme | 18:ee6f43cbfcc1 | 30 | m_i2c.start() ; |
Rhyme | 18:ee6f43cbfcc1 | 31 | } |
Rhyme | 18:ee6f43cbfcc1 | 32 | |
Rhyme | 18:ee6f43cbfcc1 | 33 | void DUMB_I2C::stop(void) |
Rhyme | 18:ee6f43cbfcc1 | 34 | { |
Rhyme | 18:ee6f43cbfcc1 | 35 | m_i2c.stop() ; |
Rhyme | 18:ee6f43cbfcc1 | 36 | } |
Rhyme | 18:ee6f43cbfcc1 | 37 | |
Rhyme | 0:d4bbd473a83c | 38 | int DUMB_I2C::read(int addr, uint8_t *data, int len) |
Rhyme | 0:d4bbd473a83c | 39 | { |
Rhyme | 0:d4bbd473a83c | 40 | int result ; |
Rhyme | 0:d4bbd473a83c | 41 | result = readRegs(addr, data, len) ; |
Rhyme | 0:d4bbd473a83c | 42 | return( result ) ; |
Rhyme | 0:d4bbd473a83c | 43 | } |
Rhyme | 0:d4bbd473a83c | 44 | |
Rhyme | 0:d4bbd473a83c | 45 | int DUMB_I2C::write(int addr, uint8_t *data, int len) |
Rhyme | 0:d4bbd473a83c | 46 | { |
Rhyme | 0:d4bbd473a83c | 47 | uint8_t *buf ; |
Rhyme | 0:d4bbd473a83c | 48 | int ack ; |
Rhyme | 0:d4bbd473a83c | 49 | buf = new uint8_t[len+1] ; |
Rhyme | 0:d4bbd473a83c | 50 | buf[0] = addr ; |
Rhyme | 0:d4bbd473a83c | 51 | for (int i = 0 ; i < len ; i++ ) { |
Rhyme | 0:d4bbd473a83c | 52 | buf[i+1] = data[i] ; |
Rhyme | 0:d4bbd473a83c | 53 | } |
Rhyme | 0:d4bbd473a83c | 54 | ack = writeRegs(buf, len+1) ; |
Rhyme | 0:d4bbd473a83c | 55 | delete buf ; |
Rhyme | 0:d4bbd473a83c | 56 | return( ack ) ; |
Rhyme | 0:d4bbd473a83c | 57 | } |
Rhyme | 0:d4bbd473a83c | 58 | |
Rhyme | 0:d4bbd473a83c | 59 | int DUMB_I2C::readRegs(int addr, uint8_t * data, int len) { |
Rhyme | 0:d4bbd473a83c | 60 | int result ; |
Rhyme | 0:d4bbd473a83c | 61 | char t[1] = {addr}; |
Rhyme | 0:d4bbd473a83c | 62 | m_i2c.write(m_addr, t, 1, true); |
Rhyme | 0:d4bbd473a83c | 63 | result = m_i2c.read(m_addr, (char *)data, len); |
Rhyme | 0:d4bbd473a83c | 64 | return( result ) ; |
Rhyme | 0:d4bbd473a83c | 65 | } |
Rhyme | 0:d4bbd473a83c | 66 | |
Rhyme | 0:d4bbd473a83c | 67 | int DUMB_I2C::writeRegs(uint8_t * data, int len) { |
Rhyme | 0:d4bbd473a83c | 68 | int ack ; |
Rhyme | 0:d4bbd473a83c | 69 | ack = m_i2c.write(m_addr, (char *)data, len); |
Rhyme | 0:d4bbd473a83c | 70 | return( ack ) ; |
Rhyme | 0:d4bbd473a83c | 71 | } |