We are development a firmware that communication with BHI160 sensor, but i dont understand which commands i send for obtain the accelerometer data with frequency 1600 Hz. Can you help me ? There is a library for utilize this sensor in C code ?
Solved! Go to Solution.
See the BHI160 driver here: https://github.com/BoschSensortec/BHy1_driver_and_MCU_solution
But unfortunately the maximum data rate is 200Hz
Are you confirm me that it's not possible receive data from the Accelerometer with frequency of 1600 Hz ?
Is necessary manage the FIFO buffer as in the example for read data to accelerometer ? or can i read the data directamente without manage the FIFO buffer with this functions under ?
bhy_read_fifo(fifo + bytes_left_in_fifo, FIFO_SIZE - bytes_left_in_fifo, &bytes_read, &bytes_remaining);
result = bhy_parse_next_fifo_packet(&fifoptr, &bytes_read, &fifo_packet, &packet_type);
The issue is not the FIFO. BHI160 has a very large and fast FIFO and could stream a large quantity of data, the issue is the rate.
It is a limitation of this architecture that the FuserCore (generation 1) cannot run at more than 200Hz output data rate. The next generation BHI260 will have a turbo mode increasing the clock speed of the FuserCore(generation 2) which allows up to 800Hz data rate at the expense of current consumption.
Ok, but in the page 9 from the BST-BHI160-DS000-pdf manual (attached), i have read that max ODR is 1600 Hz on table 3, why ?
Sorry but i not understand as receive data from the accelerometer, i sending the follow commands sequence:
- VS_TYPE_ACCELEROMETER ( 0x01 ) :
I2CReadBytes ( BHY_I2C_ADDR , VS_TYPE_ACCELEROMETER , 246 , &rawData [ 0 ] ) ;
But the buffer rawData is empty, which commands i must send to read the FIFO buffer ? can you help me ?