My implementation of Bosh BMI160 Only I2C is tested so far.
Dependents: test_BMI160 TFT_test_MAX32630FTHR
Diff: BMI160.h
- 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