My implementation of Bosh BMI160 Only I2C is tested so far.

Dependents:   test_BMI160 TFT_test_MAX32630FTHR

Committer:
Rhyme
Date:
Fri Aug 25 08:23:39 2017 +0000
Revision:
1:d56df81c389b
Parent:
0:9aed6f5a35c0
Child:
2:4cc456503e9f
Minimum data acquisition functions are in place.; Still needs some more work though.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Rhyme 0:9aed6f5a35c0 1 #ifndef _BMI160_H_
Rhyme 0:9aed6f5a35c0 2 #define _BMI160_H_
Rhyme 0:9aed6f5a35c0 3 class BMI160 {
Rhyme 0:9aed6f5a35c0 4 public:
Rhyme 0:9aed6f5a35c0 5 /**
Rhyme 0:9aed6f5a35c0 6 * BMI160 I2C Interface
Rhyme 0:9aed6f5a35c0 7 *
Rhyme 0:9aed6f5a35c0 8 * @param sda SDA pin
Rhyme 0:9aed6f5a35c0 9 * @param scl SCL pin
Rhyme 0:9aed6f5a35c0 10 * @param addr address of the I2C peripheral
Rhyme 0:9aed6f5a35c0 11 */
Rhyme 0:9aed6f5a35c0 12 BMI160(PinName sda, PinName scl, int addr) ;
Rhyme 0:9aed6f5a35c0 13
Rhyme 0:9aed6f5a35c0 14 /**
Rhyme 0:9aed6f5a35c0 15 * BMI160 SPI Interface
Rhyme 0:9aed6f5a35c0 16 *
Rhyme 0:9aed6f5a35c0 17 * @param sck SPI SCKL pin
Rhyme 0:9aed6f5a35c0 18 * @param miso SPI Master In Slave Out pin
Rhyme 0:9aed6f5a35c0 19 * @param mosi SPI Master Out Slave In pin
Rhyme 0:9aed6f5a35c0 20 * @param cs SPI Chip Select pin
Rhyme 0:9aed6f5a35c0 21 */
Rhyme 0:9aed6f5a35c0 22 BMI160(PinName sck, PinName miso, PinName mosi, PinName cs) ;
Rhyme 0:9aed6f5a35c0 23
Rhyme 0:9aed6f5a35c0 24 /**
Rhyme 0:9aed6f5a35c0 25 * BMI160 destructor
Rhyme 0:9aed6f5a35c0 26 */
Rhyme 0:9aed6f5a35c0 27 ~BMI160() ;
Rhyme 0:9aed6f5a35c0 28
Rhyme 1:d56df81c389b 29 void setCMD(uint8_t cmd) ;
Rhyme 1:d56df81c389b 30 uint8_t getStatus(void) ;
Rhyme 0:9aed6f5a35c0 31 uint8_t getChipID(void) ;
Rhyme 1:d56df81c389b 32 uint8_t getAccRange(void) ;
Rhyme 1:d56df81c389b 33 int16_t getGyrRange(void) ;
Rhyme 1:d56df81c389b 34 int16_t getAccX(void) ;
Rhyme 1:d56df81c389b 35 int16_t getAccY(void) ;
Rhyme 1:d56df81c389b 36 int16_t getAccZ(void) ;
Rhyme 1:d56df81c389b 37 int16_t getGyrX(void) ;
Rhyme 1:d56df81c389b 38 int16_t getGyrY(void) ;
Rhyme 1:d56df81c389b 39 int16_t getGyrZ(void) ;
Rhyme 1:d56df81c389b 40 void getAcc(int16_t *value) ;
Rhyme 1:d56df81c389b 41 void getGyr(int16_t *value) ;
Rhyme 1:d56df81c389b 42
Rhyme 0:9aed6f5a35c0 43
Rhyme 0:9aed6f5a35c0 44 private:
Rhyme 0:9aed6f5a35c0 45 SPI *m_spi ;
Rhyme 0:9aed6f5a35c0 46 I2C *m_i2c ;
Rhyme 0:9aed6f5a35c0 47 DigitalOut *m_cs ;
Rhyme 0:9aed6f5a35c0 48 int m_addr ;
Rhyme 0:9aed6f5a35c0 49
Rhyme 0:9aed6f5a35c0 50 void init(void) ;
Rhyme 0:9aed6f5a35c0 51 void i2c_readRegs(int addr, uint8_t *data, int len) ;
Rhyme 0:9aed6f5a35c0 52 void i2c_writeRegs(uint8_t *data, int len) ;
Rhyme 0:9aed6f5a35c0 53 void spi_readRegs(int addr, uint8_t *data, int len) ;
Rhyme 0:9aed6f5a35c0 54 void spi_writeRegs(uint8_t *data, int len) ;
Rhyme 0:9aed6f5a35c0 55 void readRegs(int addr, uint8_t *data, int len) ;
Rhyme 0:9aed6f5a35c0 56 void writeRegs(uint8_t *data, int len) ;
Rhyme 0:9aed6f5a35c0 57 } ;
Rhyme 0:9aed6f5a35c0 58
Rhyme 1:d56df81c389b 59 #define ACC_PMU_SUSPEND 0x00
Rhyme 1:d56df81c389b 60 #define ACC_PMU_NORMAL 0x01
Rhyme 1:d56df81c389b 61 #define ACC_PMU_LOWPOWER 0x02
Rhyme 1:d56df81c389b 62 #define GYR_PMU_SUSPEND 0x00
Rhyme 1:d56df81c389b 63 #define GYR_PMU_NORMAL 0x01
Rhyme 1:d56df81c389b 64 #define GYR_PMU_FASTSU 0x03
Rhyme 1:d56df81c389b 65 #define MAG_PMU_SUSPEND 0x00
Rhyme 1:d56df81c389b 66 #define MAG_PMU_NORMAL 0x01
Rhyme 1:d56df81c389b 67 #define MAG_PMU_LOWPOWER 0x02
Rhyme 0:9aed6f5a35c0 68 #endif /* _BMI160_H_ */