cancel
Showing results for 
Search instead for 
Did you mean: 

LPS25HBTR pressure reading decreasing over time

2067
Associate II

I have bought a MKI-165V1 to test LPS25HBTR,but I find that the pressure value is decreasing for a long time ,from 1014.117 to 1002.970 in an hour.It is not stable,the next is my initial code,what is the reason for it

uint8_t data = 0x90;
HAL_I2C_Mem_Write(&hi2c4, 0xB8, 0x20 , I2C_MEMADD_SIZE_8BIT, &data, 1, HAL_MAX_DELAY);
HAL_Delay(10);
data = 0x00;
HAL_I2C_Mem_Write(&hi2c4, 0xB8, 0x21 , I2C_MEMADD_SIZE_8BIT, &data, 1, HAL_MAX_DELAY);
// HAL_Delay(10);
// HAL_I2C_Mem_Write(&hi2c4, 0xB8, 0x22 , I2C_MEMADD_SIZE_8BIT, pData, Size, 0xFF);
HAL_Delay(10);
HAL_I2C_Mem_Write(&hi2c4, 0xB8, 0x23 , I2C_MEMADD_SIZE_8BIT, &data, 1, HAL_MAX_DELAY);
HAL_Delay(10);
10 REPLIES 10

Here is the code I wrote in Keil for configuring and reading data from the LPS25. Please tell me if this code could cause the values to decrease.

void LPS25_Init(void)
{
uint8_t data;
 
data = 0x05;
HAL_I2C_Mem_Write(&hi2c4, 0xB8, 0x10 , I2C_MEMADD_SIZE_8BIT, &data, 1, HAL_MAX_DELAY);
HAL_Delay(10);
data = 0xC1;
HAL_I2C_Mem_Write(&hi2c4, 0xB8, 0x2E , I2C_MEMADD_SIZE_8BIT, &data, 1, HAL_MAX_DELAY);
HAL_Delay(10);
data = 0x40;
HAL_I2C_Mem_Write(&hi2c4, 0xB8, 0x21 , I2C_MEMADD_SIZE_8BIT, &data, 1, HAL_MAX_DELAY);
// HAL_Delay(10);
// HAL_I2C_Mem_Write(&hi2c4, 0xB8, 0x22 , I2C_MEMADD_SIZE_8BIT, pData, Size, 0xFF);
HAL_Delay(10);
// data = 0x00;
// HAL_I2C_Mem_Write(&hi2c4, 0xB8, 0x23 , I2C_MEMADD_SIZE_8BIT, &data, 1, HAL_MAX_DELAY);
// HAL_Delay(10);
 
data = 0x94;
HAL_I2C_Mem_Write(&hi2c4, 0xB8, 0x20 , I2C_MEMADD_SIZE_8BIT, &data, 1, HAL_MAX_DELAY);//注意用哪个IIC
HAL_Delay(10);
 
}
 
float LPS25_getdata(void)
{
uint8_t qiya_buff[3];
uint32_t qiya_data;
float qiya;
HAL_I2C_Mem_Read(&hi2c4, 0xB9, 0x28 , I2C_MEMADD_SIZE_8BIT, &qiya_buff[0], 1, HAL_MAX_DELAY);
HAL_I2C_Mem_Read(&hi2c4, 0xB9, 0x29 , I2C_MEMADD_SIZE_8BIT, &qiya_buff[1], 1, HAL_MAX_DELAY);
HAL_I2C_Mem_Read(&hi2c4, 0xB9, 0x2A , I2C_MEMADD_SIZE_8BIT, &qiya_buff[2], 1, HAL_MAX_DELAY);
qiya_data = (uint32_t)(qiya_buff[2] << 16) | (uint32_t)(qiya_buff[1] << 8) | (uint32_t)qiya_buff[0];
qiya = (float)qiya_data/4096.0f;
return qiya;
}