Bosch Sensortec Community

    Showing results for 
    Search instead for 
    Did you mean: 

    BMI088 SPI read example for LINUX

    BMI088 SPI read example for LINUX


    Recently, I try to read gyro chip id or acc chip id  from IMU BMI088 with SPI,  Linux and ARM  MCU (or liteos  CORTEX-M7).But I just get 0xFF,maybe my read function isn't right ....


    I can't find a good example code to read or write register  with SPI?  Does somebody have  written for Linux? Thanks in advance.

    The document said:

    The communication starts when the CSB (1 or 2) is pulled low by the SPI master and stops when CSB
    (1 or 2) is pulled high.SCK is also controlled by SPI master. SDI and SDO (1 or 2) are driven at the
    falling edge of SCK and should be captured at the rising edge of SCK.
    The data bits are used as follows:
    Bit #0: Read/Write bit. When 0, the data SDI is written into the chip. When 1, the data
    SDO from the chip is read.
    Bit #1-7: Address AD(6:0).
    Bit #8-15: when in write mode, these are the data SDI, which will be written into the

    SO bit 0 is  write or read bit? and is it the LSB?  But my spi just has a SPI_LSB_FIRST MODE. 

    So  I change  the MASK as below, is it right??

    /**\name SPI read/write mask to configure address */
    #define BMI088_SPI_RD_MASK UINT8_C(0x01) //0x80--->0x01 BIT0 READ/WRITE TEST 1122 |
    #define BMI088_SPI_WR_MASK UINT8_C(0xFE) // 0x7F--->0xFE &

    2 REPLIES 2


    NOW,We can get correct ACC chip id and gyro chip id.And the ACC data or gyro data.But when we try to get the ACC and GYRO data in successively, the ID read is right.But ACC values is not right!


    the ACC DATA and INT STATUS read is error as follows,

    IMU read 1209.png两个设备代码合并起来,读取 ,ACC INT 读到的是FF.PNG