STM32應用:透過I2C連結STM HTS221 MEMS感應器檢測溫溼度

關鍵字 :STM32I2CHTS221
STEVAL-MKI141V2是具備有STM HTS221 MEMS 溫溼度感應器的開發板,本文示範如何利用STM32 MCU和STEVAL-MKI141V2使用I2C通訊取得目前環境的溫溼度。本文範例使用STM32L053C8T6,主要是具備有COM-SEG LCD控制和超低待機功耗,適合長時間待機使用。

  大大购相关商品     STEVAL-MKI141V2  >> 查询存货及售价


首先利用CubeMX,開通I2C作為和HTS221 EVB通訊使用,參數不須特意更改。


HTS221_ReadID();
if (SensorID != 0xBC)
{
// Error Handler
}
首先讀取sensor ID,確保I2C和sensor已經可以通訊。

HTS221_Power_On();
通知sensor離開power down,轉換到active模式。
HTS221_Calibration();

讀取sensor的工廠校正值,稍後在做溫溼度讀取時會需要用到這些參數。
HTS221_Config();
設定sensor其他功能,如DRDY訊號輸出和轉換頻率等參數,到這邊準備工作基本上就已經完成了。

下面是讀取濕度的範例。

HAL_I2C_Mem_Read(&hi2c1, HTS221_ADDRESS, HTS221_HUMIDITY_OUT_L_ADDR | INCREMENTING_RW, I2C_MEMADD_SIZE_8BIT, tempReg, 2, I2C_TIMEOUT);
這邊讀取濕度資料的暫存器。
H_T_out = (int16_t)((((uint16_t)tempReg[1]) << 8) | (uint16_t)tempReg[0]);
H_rh = ((float)(H_T_out - H0_T0_out)) / (H1_T0_out - H0_T0_out) * (H1_rh - H0_rh) + H0_rh;
這邊是根據校正值後算出實際濕度。

下面是讀取溫度的範例。
HAL_I2C_Mem_Read(&hi2c1, HTS221_ADDRESS, HTS221_TEMP_OUT_L_ADDR | INCREMENTING_RW, I2C_MEMADD_SIZE_8BIT, tempReg, 2, I2C_TIMEOUT);
這邊是讀取溫度的暫存器。
T_out = (int16_t)((((uint16_t)tempReg[1]) << 8) | (uint16_t)tempReg[0]);
T_degC = ((float)(T_out - T0_out)) / (T1_out - T0_out) * (T1_degC - T0_degC) + T0_degC;
這邊是根據校正值後算出實際溫度。

本文後有提供HTS221的bsp driver,可以直接下載使用。

技術文檔

類型標題檔案
軟件bsp driver

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論