rland93 / ollyfc

A small rust-embedded flight computer. RTIC, FrSky protocols, and STM32F4 hardware.
Mozilla Public License 2.0
1 stars 0 forks source link

Configure interrupt lines for sync #43

Open rland93 opened 5 months ago

rland93 commented 5 months ago

BST-MIS-AN006-00

MI08x family is a system-in-package inertial measurement unit which offers accurate acceleration and angular rate measurements. Due to system-in-package approach (two sensors in single package), the gyroscope and acceleration data is acquired in a non-synchronized manner. However, the synchronization between accelerometer and gyroscope can be easily achieved. This document describes how synchronization between accelerometer and gyroscope can be achieved in a typical application such as augmented or virtual reality. To achieve data synchronization on BMI08x, the data ready interrupt signal from the gyroscope of the BMI08x needs to be connected to one of the interrupt pins of the BMI08x accelerometer (which can be configured as input pins). The internal signal processing unit of the accelerometer uses the data ready signal from the gyroscope to synchronize and interpolate the data of the accelerometer, considering the group delay of the sensors. The accelerometer part can then notify the host of available data. With this technique, it is possible to achieve synchronized data and provide accelerometer data up to ODR of 2 kHz. The data synchronization feature supports 400 Hz, 1000 Hz and 2 kHz data rates

The data synchronization feature supports for both BMI085 & BMI088 sensors. Synchronized data means that the acquisition of the gyroscope and accelerometer data is happening at the same time and the signals have same propagation time. The time between motion to register read-out depends on the physical propagation time mainly caused by signal processing path and analog-to-digital conversion and is sensor specific. The typical group delay of the gyroscope and accelerometer signals is disclosed in the tables below. The synchronization between accelerometer and gyroscope data to a common point of time and a common group delay can be realized with the help of the internal processing unit of the accelerometer. The internal processing unit of accelerometer part measures the timestamp of the accelerometer analog- to-digital conversion data ready signal and the timestamp of the gyroscope data ready signal. Finally, the processing unit interpolates the acceleration data by using the timestamp difference, the known group delay of every signal path, stores the synchronized data in the general purpose register and sets the interrupt data ready pin to high. The synchronized sensor data can be read from accelerometer and gyroscope data registers by the host. The refresh rate of the registers is linked to gyroscope data rate (400 Hz, 1 kHz, 2 kHz). The hardware interrupts pins (INT1 / INT3) of the BMI08x are used for data synchronization purposes. The interrupt pin INT2 can be used for data ready notification to the host by BMI08x

The typical application circuit diagram by using BMI08x synchronized data output is shown in the figure below. The interrupt pin INT1 and INT3 of BMI085 must be to be connected externally on pcb. For host notification, pin (INT2) shall be used. For latency-critical multisensory applications, it is recommended to use SPI interface for fastest sensor data read (recommended SPI clock speed is >2MHz). Additionally, it is recommended to use edge triggered interrupt configuration on the host mcu.

Schematic
rland93 commented 5 months ago

Maybe consider SPI for this sensor, instead of i2c?

I may need to re-think the i2c bus. broad implications for the board...