My implementation of Bosh BMI160 Only I2C is tested so far.
Dependents: test_BMI160 TFT_test_MAX32630FTHR
BMI160.h@3:9d3079170b35, 2017-09-12 (annotated)
- Committer:
- Rhyme
- Date:
- Tue Sep 12 00:34:16 2017 +0000
- Revision:
- 3:9d3079170b35
- Parent:
- 2:4cc456503e9f
- Child:
- 4:93f16677f730
started adding documents
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Rhyme | 0:9aed6f5a35c0 | 1 | #ifndef _BMI160_H_ |
Rhyme | 0:9aed6f5a35c0 | 2 | #define _BMI160_H_ |
Rhyme | 2:4cc456503e9f | 3 | /** |
Rhyme | 2:4cc456503e9f | 4 | * @brief BMI160 Bosch Small, low power inertial measurement unit |
Rhyme | 2:4cc456503e9f | 5 | * |
Rhyme | 2:4cc456503e9f | 6 | */ |
Rhyme | 0:9aed6f5a35c0 | 7 | class BMI160 { |
Rhyme | 0:9aed6f5a35c0 | 8 | public: |
Rhyme | 0:9aed6f5a35c0 | 9 | /** |
Rhyme | 0:9aed6f5a35c0 | 10 | * BMI160 I2C Interface |
Rhyme | 0:9aed6f5a35c0 | 11 | * |
Rhyme | 0:9aed6f5a35c0 | 12 | * @param sda SDA pin |
Rhyme | 0:9aed6f5a35c0 | 13 | * @param scl SCL pin |
Rhyme | 0:9aed6f5a35c0 | 14 | * @param addr address of the I2C peripheral |
Rhyme | 0:9aed6f5a35c0 | 15 | */ |
Rhyme | 0:9aed6f5a35c0 | 16 | BMI160(PinName sda, PinName scl, int addr) ; |
Rhyme | 0:9aed6f5a35c0 | 17 | |
Rhyme | 0:9aed6f5a35c0 | 18 | /** |
Rhyme | 0:9aed6f5a35c0 | 19 | * BMI160 SPI Interface |
Rhyme | 0:9aed6f5a35c0 | 20 | * |
Rhyme | 0:9aed6f5a35c0 | 21 | * @param sck SPI SCKL pin |
Rhyme | 0:9aed6f5a35c0 | 22 | * @param miso SPI Master In Slave Out pin |
Rhyme | 0:9aed6f5a35c0 | 23 | * @param mosi SPI Master Out Slave In pin |
Rhyme | 0:9aed6f5a35c0 | 24 | * @param cs SPI Chip Select pin |
Rhyme | 0:9aed6f5a35c0 | 25 | */ |
Rhyme | 0:9aed6f5a35c0 | 26 | BMI160(PinName sck, PinName miso, PinName mosi, PinName cs) ; |
Rhyme | 0:9aed6f5a35c0 | 27 | |
Rhyme | 0:9aed6f5a35c0 | 28 | /** |
Rhyme | 0:9aed6f5a35c0 | 29 | * BMI160 destructor |
Rhyme | 0:9aed6f5a35c0 | 30 | */ |
Rhyme | 0:9aed6f5a35c0 | 31 | ~BMI160() ; |
Rhyme | 3:9d3079170b35 | 32 | |
Rhyme | 3:9d3079170b35 | 33 | /** |
Rhyme | 3:9d3079170b35 | 34 | * setCMD set value to the CMD register (0x7E) |
Rhyme | 3:9d3079170b35 | 35 | * |
Rhyme | 3:9d3079170b35 | 36 | * @param cmd uint8_t value to write |
Rhyme | 3:9d3079170b35 | 37 | * @returns none |
Rhyme | 3:9d3079170b35 | 38 | */ |
Rhyme | 1:d56df81c389b | 39 | void setCMD(uint8_t cmd) ; |
Rhyme | 3:9d3079170b35 | 40 | |
Rhyme | 3:9d3079170b35 | 41 | /** |
Rhyme | 3:9d3079170b35 | 42 | * getStatus get value of the STATUS register (0x1B) |
Rhyme | 3:9d3079170b35 | 43 | * @param none |
Rhyme | 3:9d3079170b35 | 44 | * @returns the value of the STATUS register |
Rhyme | 3:9d3079170b35 | 45 | */ |
Rhyme | 1:d56df81c389b | 46 | uint8_t getStatus(void) ; |
Rhyme | 3:9d3079170b35 | 47 | |
Rhyme | 3:9d3079170b35 | 48 | /** |
Rhyme | 3:9d3079170b35 | 49 | * getChipID get value of the CHIP_ID register (0x10) |
Rhyme | 3:9d3079170b35 | 50 | * @param none |
Rhyme | 3:9d3079170b35 | 51 | * @returns the chip ID (supposed to be 0xD1) |
Rhyme | 3:9d3079170b35 | 52 | */ |
Rhyme | 0:9aed6f5a35c0 | 53 | uint8_t getChipID(void) ; |
Rhyme | 1:d56df81c389b | 54 | uint8_t getAccRange(void) ; |
Rhyme | 1:d56df81c389b | 55 | int16_t getGyrRange(void) ; |
Rhyme | 3:9d3079170b35 | 56 | |
Rhyme | 3:9d3079170b35 | 57 | int16_t getAccRawX(void) ; |
Rhyme | 3:9d3079170b35 | 58 | int16_t getAccRawY(void) ; |
Rhyme | 3:9d3079170b35 | 59 | int16_t getAccRawZ(void) ; |
Rhyme | 3:9d3079170b35 | 60 | int16_t getGyrRawX(void) ; |
Rhyme | 3:9d3079170b35 | 61 | int16_t getGyrRawY(void) ; |
Rhyme | 3:9d3079170b35 | 62 | int16_t getGyrRawZ(void) ; |
Rhyme | 3:9d3079170b35 | 63 | void getAccRaw(int16_t *value) ; |
Rhyme | 3:9d3079170b35 | 64 | void getGyrRaw(int16_t *value) ; |
Rhyme | 1:d56df81c389b | 65 | |
Rhyme | 3:9d3079170b35 | 66 | float getAccX(void) ; |
Rhyme | 3:9d3079170b35 | 67 | float getAccY(void) ; |
Rhyme | 3:9d3079170b35 | 68 | float getAccZ(void) ; |
Rhyme | 3:9d3079170b35 | 69 | float getGyrX(void) ; |
Rhyme | 3:9d3079170b35 | 70 | float getGyrY(void) ; |
Rhyme | 3:9d3079170b35 | 71 | float getGyrZ(void) ; |
Rhyme | 3:9d3079170b35 | 72 | void getAcc(float *value) ; |
Rhyme | 3:9d3079170b35 | 73 | void getGyr(float *value) ; |
Rhyme | 3:9d3079170b35 | 74 | |
Rhyme | 0:9aed6f5a35c0 | 75 | private: |
Rhyme | 0:9aed6f5a35c0 | 76 | SPI *m_spi ; |
Rhyme | 0:9aed6f5a35c0 | 77 | I2C *m_i2c ; |
Rhyme | 0:9aed6f5a35c0 | 78 | DigitalOut *m_cs ; |
Rhyme | 0:9aed6f5a35c0 | 79 | int m_addr ; |
Rhyme | 3:9d3079170b35 | 80 | int acc_range ; |
Rhyme | 3:9d3079170b35 | 81 | int gyr_range ; |
Rhyme | 0:9aed6f5a35c0 | 82 | |
Rhyme | 0:9aed6f5a35c0 | 83 | void init(void) ; |
Rhyme | 0:9aed6f5a35c0 | 84 | void i2c_readRegs(int addr, uint8_t *data, int len) ; |
Rhyme | 0:9aed6f5a35c0 | 85 | void i2c_writeRegs(uint8_t *data, int len) ; |
Rhyme | 0:9aed6f5a35c0 | 86 | void spi_readRegs(int addr, uint8_t *data, int len) ; |
Rhyme | 0:9aed6f5a35c0 | 87 | void spi_writeRegs(uint8_t *data, int len) ; |
Rhyme | 0:9aed6f5a35c0 | 88 | void readRegs(int addr, uint8_t *data, int len) ; |
Rhyme | 0:9aed6f5a35c0 | 89 | void writeRegs(uint8_t *data, int len) ; |
Rhyme | 0:9aed6f5a35c0 | 90 | } ; |
Rhyme | 0:9aed6f5a35c0 | 91 | |
Rhyme | 1:d56df81c389b | 92 | #define ACC_PMU_SUSPEND 0x00 |
Rhyme | 1:d56df81c389b | 93 | #define ACC_PMU_NORMAL 0x01 |
Rhyme | 1:d56df81c389b | 94 | #define ACC_PMU_LOWPOWER 0x02 |
Rhyme | 1:d56df81c389b | 95 | #define GYR_PMU_SUSPEND 0x00 |
Rhyme | 1:d56df81c389b | 96 | #define GYR_PMU_NORMAL 0x01 |
Rhyme | 1:d56df81c389b | 97 | #define GYR_PMU_FASTSU 0x03 |
Rhyme | 1:d56df81c389b | 98 | #define MAG_PMU_SUSPEND 0x00 |
Rhyme | 1:d56df81c389b | 99 | #define MAG_PMU_NORMAL 0x01 |
Rhyme | 1:d56df81c389b | 100 | #define MAG_PMU_LOWPOWER 0x02 |
Rhyme | 0:9aed6f5a35c0 | 101 | #endif /* _BMI160_H_ */ |