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

Dependents:   test_BMI160 TFT_test_MAX32630FTHR

BMI160.h

Committer:
Rhyme
Date:
2017-08-25
Revision:
0:9aed6f5a35c0
Child:
1:d56df81c389b

File content as of revision 0:9aed6f5a35c0:

#ifndef _BMI160_H_
#define _BMI160_H_
class BMI160 {
public:
 /**
  * BMI160 I2C Interface
  *
  * @param sda SDA pin
  * @param scl SCL pin
  * @param addr address of the I2C peripheral
  */
  BMI160(PinName sda, PinName scl, int addr) ;

 /**
  * BMI160 SPI Interface
  *
  * @param sck  SPI SCKL pin
  * @param miso SPI Master In Slave Out pin
  * @param mosi SPI Master Out Slave In pin
  * @param cs   SPI Chip Select pin
  */
  BMI160(PinName sck, PinName miso, PinName mosi, PinName cs) ;

/**
 * BMI160 destructor
 */
  ~BMI160() ;
  
  uint8_t getChipID(void) ;

private:
  SPI *m_spi ;
  I2C *m_i2c ;
  DigitalOut *m_cs ;
  int m_addr ;
  
  void init(void) ;
  void i2c_readRegs(int addr, uint8_t *data, int len) ;
  void i2c_writeRegs(uint8_t *data, int len) ;
  void spi_readRegs(int addr, uint8_t *data, int len) ;
  void spi_writeRegs(uint8_t *data, int len) ;
  void readRegs(int addr, uint8_t *data, int len) ;
  void writeRegs(uint8_t *data, int len) ;
} ;

#endif /* _BMI160_H_ */