к1986ве92fi подключение датчика LPS25HB по I2C_часть2
к1986ве92fi подключение датчика LPS25HB по I2C_часть2
сдесь 2 функции для получения температуры и давления к ним нужна библиотека она в следующих видео // ===== ЧТЕНИЕ ТЕМПЕРАТУРЫ ===== void Press_Get_Temp(float* pData) { uint8_t buffer[2]; int16_t raw = 0; // Читаем младший и старший байты температуры buffer[0] = Press_IO_Read(LPS25HB_ADDRESS, LPS25HB_TEMP_OUT_L); buffer[1] = Press_IO_Read(LPS25HB_ADDRESS, LPS25HB_TEMP_OUT_H); // Собираем 16-битное значение (дополнительный код) raw = (int16_t)((buffer[1] ﹤﹤ 8) | buffer[0]); // Формула из даташита: T(°C) = 42.5 + raw / 480 *pData = 42.5f + (raw / 480.0f); } // ===== ЧТЕНИЕ ДАВЛЕНИЯ ===== void Press_Get_Pressure(float* pData) { uint8_t buffer[3]; int32_t raw = 0; // Читаем 3 байта давления (XL, L, H) buffer[0] = Press_IO_Read(LPS25HB_ADDRESS, LPS25HB_PRESS_OUT_XL); buffer[1] = Press_IO_Read(LPS25HB_ADDRESS, LPS25HB_PRESS_OUT_L); buffer[2] = Press_IO_Read(LPS25HB_ADDRESS, LPS25HB_PRESS_OUT_H); // Собираем 24-битное значение (дополнительный код) raw = (int32_t)((buffer[2] ﹤﹤ 16) | (buffer[1] ﹤﹤ 8) | buffer[0]); // Расширение знака для отрицательных значений if (raw & 0x800000) { raw |= 0xFF000000; } // Формула из даташита: P(мбар) = raw / 4096 *pData = raw / 4096.0f; }