Sensor data type
Double precision floating point version and Integer version are two states regarding compensation functions for temperature and pressure.
The 24 bit pressure/temperature raw data is split and stored in three consecutive registers from 0x04 to 0x06 and 0x07 to 0x09 respectively.
From API side, static double compensate_temperature and static int64_t compensate_temperature are used to compensate the raw temperature data and return the compensated temperature data in integer data type.
Pressure sensor drift
Used to represent errors in measured values. Basically, two drifts will appear on the sensor: one is solder drifts, and the other is long term drift.
Pressure sensor TCO (Offset temperature coefficient)
The offset temperature coefficient is the change in the pressure signal introduced by a change of the temperature. The smaller for TCO value, the smaller the dependence on temperature. Two conditions need to be considered for offset temperature coefficient from pressure 700-1100hPa.
Pressure/temperature OSR (Oversampling)
Oversampling is the process of sampling a signal at a sampling frequency significantly higher than the Nyquist rate. The rate of oversampling can be 1, 2, 4, 8, 16, and 32. Increasing the value of oversampling, then will get longer testing time, lower ODR, lower noise and larger power consumption.
The default value for oversampling setting is 0x02 in register 0x1C for pressure and temperature measurement, bit 2..0 is for pressure measurement and bit 5..3 is for temperature measurement.
In API, using int8_t set_forced_mode_with_osr and int8_t set_normal_mode to configure the oversampling values.
The table below shows the recommended setting of oversampling.
Signal Filter for pressure/temperature
This is a sliding filter which is aim to reduce the noise from the received signal. The filter coefficient can be set to 0 (bypass mode), 1, 3, 7, 15, 31, 63, and 127.
In addition, it suppresses the disturbance in the output data without causing additional interface traffic and processor work load. The output of a next measurement step is filter using the following formula.
The “CONFIG” Register 0x1F control the IIR filter coefficients view from bit 3...1. The default value for “CONFIG” is 0x00.
3 bytes sensor time is split and stored in three consecutive registers which are 0x0C, 0x0D and 0x0E. Each register contain 8 bit sensor time data.
This feature is used to represent how much accuracy can be achieved within the certain pressure range. Two criteria as shown below
This is a 512 bytes FIFO (first-in-first-out) data buffer with feature used to enable data collecting in the FIFO. The register “FIFO_CONFIG_1” register contains the FIFO frame content configuration from bit 4…0. The default value for “FIFO_CONFIG_1” is 0x02.
Configuring and reading FIFO data from API using the function int8_t configure_and_get_fifo_data.
Allow to signal certain events to the host processor. Different event can be mapped to the interrupt pin, which all are processed with a logical OR.
The available interrupts are listed below and can be read in the “INT_STATUS” register”
Bit 0, 1, and 3 are used to represent the interrupt status and is cleared after reading in register.
The function static int8_t get_int_status can be used to get the interrupt status from the sensor in API.
Interrupt configuration can be set in the “INT_CTRL” register in 0x19. Bit 0, 1, 2, 3, 4 and 6 are used. The function static void fill_fifo_int_ctrl in API used to fill the FIFO interrupt control settings.
More BMP388 sensor information can check from the following website https://www.bosch-sensortec.com/bst/products/all_products/bmp388 .