void iic_pressure()
{
uint8_t Measure_Command = 0x0A, Command_address = 0x30, Device_address = 0x6D << 1;
uint8_t result = 0;
uint8_t pressure[3];
HAL_I2C_Mem_Write(&hi2c1, Device_address, Command_address, I2C_MEMADD_SIZE_8BIT, &Measure_Command, 1, 10000);
HAL_Delay(30);
HAL_I2C_Mem_Read(&hi2c1, Device_address, Command_address, I2C_MEMADD_SIZE_8BIT, &result, 1, 10000);
HAL_Delay(20);
HAL_I2C_Mem_Read(&hi2c1, Device_address, 0x06, I2C_MEMADD_SIZE_8BIT, &pressure[0], 1, 100);
HAL_I2C_Mem_Read(&hi2c1, Device_address, 0x07, I2C_MEMADD_SIZE_8BIT, &pressure[1], 1, 100);
HAL_I2C_Mem_Read(&hi2c1, Device_address, 0x08, I2C_MEMADD_SIZE_8BIT, &pressure[2], 1, 100);
pressure_adc = pressure[0] * 65536 + pressure[1] * 256 + pressure[2];
if (pressure_adc > 8388608)
{
pressure_adc = (pressure_adc - 16777216) / 16;
}
else
{
pressure_adc = pressure_adc / 16;
}
pressure_now = pressure_adc / 1000 + weather_Data[0];
}
该传感器取得值是表压值,与绝压值(大气压)相加后才是真正气压值。