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

Dependents:   test_BMI160 TFT_test_MAX32630FTHR

Revision:
0:9aed6f5a35c0
Child:
1:d56df81c389b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/BMI160.h	Fri Aug 25 05:07:26 2017 +0000
@@ -0,0 +1,46 @@
+#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_ */
\ No newline at end of file