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;
}