Bosch Sensortec Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 
    SOLVED

    BOSCH BMI160 Sensor SensorTime reading issue

    nissim_u
    New Poster

    Re: BOSCH BMI160 Sensor SensorTime reading issue

    Hello Sir,

    any update with my issue ?

    Thanks,

    Nissim

    FAE_CA1
    Community Moderator

    Re: BOSCH BMI160 Sensor SensorTime reading issue

    Hi,

    We tried to use our BMI160 shuttle board + APP2.0 base board to just read 3 bytes timestamp registers to analyze the sensor time. We read the registers every 1sec, and here is the result,

    1. Delta between the reading around is about 25600

    2.Time is always going up until timer register(0x18 0x19 0x1A) value are reached 0xFFFFFF

    3. Timer registers value reach 0xFFFFFF, then value will be cleaned and start counting at 0x00000 again

    Your code is complex and maybe there is some setting or logic not right caused this abnormal behavior,

    Please try to just read our times resister value with your new simple code.

    Thanks.

    nissim_u
    New Poster

    Re: BOSCH BMI160 Sensor SensorTime reading issue

    Hello,

    this is my code: I am using STM32F769NI with BMI160 sensor

    main:

    typedef struct
    {
    struct bmi160_sensor_data accel;
    struct bmi160_sensor_data gyro;
    uint16_t temperature;
    uint16_t postfix;
    } new_data_t;

    static new_data_t sd_data0[SAMPLE_COUNT][BMI160_COUNT];

    HAL_Init();
    SystemClock_Config();
    MX_GPIO_Init();
    MX_DMA_Init();
    MX_SDMMC2_SD_Init();
    MX_SPI2_Init();

    BMI160_Init(0);
    BMI160_Config(0);

    while(1)
    {
    for(int k = 0; k < SAMPLE_COUNT; k++)
    {
    for(uint32_t i = 0; i < BMI160_COUNT; i++)
    {

    HAL_Delay(50)
    if ( BMI160_Read(0, &sd_data0[k][i].accel, &sd_data0[k][i].gyro) != BMI160_OK)
    err_counter_read++;
    if (k == 0)
    {
    if ( BMI160_ReadReg(i, 0x20, temp, 2) != BMI160_OK)
    err_counter_read++;
    sd_data0[k][i].temperature = (temp[1] << 😎 | temp[0];
    }
    else
    {
    sd_data0[k][i].temperature = 0xFFFF;
    }
    }
    }
    }

     

    I can read the data from the sensors but when I check it it look wrong, the sensor time counter should always go up, but what I recieve is that the timer going up and down.

    In addition I buy the APP2.0 board and tested the BMI160 shuttle board, in the BOSCH gui everything look ok and the value looks correct.

    also attached zip files with the BMI160 folder code that i downloaded in github.

    Can you maybe point to me what wrong with my code ? 

    FAE_CA1
    Community Moderator

    Re: BOSCH BMI160 Sensor SensorTime reading issue

    Hi,

    Thanks for your code. Which interface are you using STM32 MCU to talk to BMI160 I2C or SPI? I think the issue may happen during I2C or SPI communication when you read three bytes time stamp registers. The data you get from BMI160 may get coruupted so that the time stamp values go up and down sometimes instead of going up always. If you use a USB logic analyzer to capture the I2C or SPI communication, then you should be able to find out the root cause of the issue.

    Thanks.

    nissim_u
    New Poster

    Re: BOSCH BMI160 Sensor SensorTime reading issue

    Hello,

    I use SPI communication.

    I recieve HAL_OK on STM32 when the message recieved.

    I will check also the physical value of the message with logic analizer.

    Thanks, hope this will solve my issue.

    will update you once I will have the results.

    BR,

    Nissim

    Icon--AD-black-48x48Icon--address-consumer-data-black-48x48Icon--appointment-black-48x48Icon--back-left-black-48x48Icon--calendar-black-48x48Icon--center-alignedIcon--Checkbox-checkIcon--clock-black-48x48Icon--close-black-48x48Icon--compare-black-48x48Icon--confirmation-black-48x48Icon--dealer-details-black-48x48Icon--delete-black-48x48Icon--delivery-black-48x48Icon--down-black-48x48Icon--download-black-48x48Ic-OverlayAlertIcon--externallink-black-48x48Icon-Filledforward-right_adjustedIcon--grid-view-black-48x48IC_gd_Check-Circle170821_Icons_Community170823_Bosch_Icons170823_Bosch_Icons170821_Icons_CommunityIC-logout170821_Icons_Community170825_Bosch_Icons170821_Icons_CommunityIC-shopping-cart2170821_Icons_CommunityIC-upIC_UserIcon--imageIcon--info-i-black-48x48Icon--left-alignedIcon--Less-minimize-black-48x48Icon-FilledIcon--List-Check-grennIcon--List-Check-blackIcon--List-Cross-blackIcon--list-view-mobile-black-48x48Icon--list-view-black-48x48Icon--More-Maximize-black-48x48Icon--my-product-black-48x48Icon--newsletter-black-48x48Icon--payment-black-48x48Icon--print-black-48x48Icon--promotion-black-48x48Icon--registration-black-48x48Icon--Reset-black-48x48Icon--right-alignedshare-circle1Icon--share-black-48x48Icon--shopping-bag-black-48x48Icon-shopping-cartIcon--start-play-black-48x48Icon--store-locator-black-48x48Ic-OverlayAlertIcon--summary-black-48x48tumblrIcon-FilledvineIc-OverlayAlertwhishlist