HDC1080溫溼度驅動 IIC I2C STM32

作者:AnthonyYMH

Pin引腳以功能

IIC時序要求

串行總線地址

要與HDC1080通信,主機必須首先通過從機地址字節尋址從機設備。 該地址字節由七個地址位和一個指示執行讀或寫操作意圖的方向位組成。 HDC1080的I2C地址爲1000000(7位地址)。

讀寫操作

要訪問HDC1080上的特定寄存器,請將所需的寄存器地址值寫入指針寄存器。指針值是從地址字節後R / W位爲低的第一個字節。 對HDC1080的每次寫操作都需要一個指針寄存器的值(參見圖10)。

當從HDC1080讀取時,通過寫操作存儲在指針中的最後一個值用於確定讀操作訪問哪個寄存器。 要更改讀操作的指針寄存器,必須將新值寫入指針寄存器。 該事務通過發出R / W位爲低的從地址字節,然後是指針字節來完成。 無需其他數據(參見圖11)。

主器件可以產生START條件併發送R / W位爲高的從器件地址字節以啓動讀命令。 注意,寄存器字節首先發送MSB,然後發送LSB。 只讀寄存器中的寫操作,例如(DEVICE ID,MANUFACTURER ID,SERIAL ID),在每個數據後返回NACK字節; 對未使用地址的讀/寫操作在指針後返回NACK; I2C地址錯誤的讀/寫操作會在I2C地址後返回NACK。

設備測量配置

默認情況下,HDC1080將首先執行溫度測量,然後進行溼度測量。 上電時,HDC1080進入低功耗睡眠模式,無法主動測量。 使用以下步驟執行溫度和溼度測量,然後檢索結果:

  1. 在寄存器地址0x02中配置採集參數:

(a)通過將位[12]設置爲1,將採集模式設置爲測量溫度和溼度

(b)設置所需的溫度測量分辨率:

 - 將位[10]設置爲0以獲得14分辨率。

 - 將位[10]設置爲1以獲得11分辨率。

(c)設置所需的溼度測量分辨率:

 - 將位[9:8]設置爲00,以獲得14位分辨率。

 - 將位[9:8]設置爲01以獲得11位分辨率。

 - 將位[9:8]設置爲10,分辨率爲8位。

  1. 通過執行指針寫入事務並將地址指針設置爲0x00來觸發測量

 - 將地址指針設置爲0x00以進行溫度測量。

 - 將地址指針設置爲0x01以進行溼度測量。

  1. 根據轉換時間等待測量完成
  2. 讀取輸出數據:

從寄存器地址0x00讀取溫度數據,然後在單個事務中讀取寄存器地址0x01的溼度數據,如圖14所示。如果測量結果尚不可用,則讀操作將返回NACK,如圖13所示。

如果只需要測量溼度或溫度,以下步驟將執行測量並檢索結果:

1.在寄存器地址0x02中配置採集參數:

(a)通過將位[12]設置爲0,將採集模式設置爲獨立測量溫度或溼度

(b)對於溫度測量,設置所需的溫度測量分辨率:

 - 將位[10]設置爲0以獲得14位分辨率。

 - 將位[10]設置爲1以獲得11位分辨率。

(c)對於溼度測量,設置所需的溼度測量分辨率:

 - 將位[9:8]設置爲00,以獲得14位分辨率。

 - 將位[9:8]設置爲01以獲得11位分辨率。

 - 將位[9:8]設置爲10,分辨率爲8位。

後面的步驟和同時測量溫度和溼度的一樣

【注意】

在溫度或相對溼度測量期間,可以讀取輸出寄存器(地址0x00和0x01),而不會影響任何正在進行的測量。 請注意,在測量正在進行時寫入地址0x00或0x01將中止正在進行的測量。

寄存器

HDC1080有一個8指針,用於尋址給定的數據寄存器。 指針標識哪個數據寄存器應響應雙線總線上的讀或寫命令。 該寄存器隨每個寫命令設置。 在執行讀取命令之前,必須發出寫入命令以在指針中設置正確的值。 指針的上電覆位(POR)值爲0x00,選擇溫度測量。

溫度寄存器

溫度寄存器是二進制格式的16位結果寄存器(2個LSB D1和D0始終爲0)。 採集的結果總是14位值。 結果的準確性與所選的轉換時間有關。 可以從輸出數據計算溫度:

溼度寄存器

溼度寄存器是二進制格式的16位結果寄存器(2個LSB D1和D0始終爲0)。 採集結果始終爲14位值,而精度與所選轉換時間有關。 可以從輸出數據計算溼度:

配置寄存器

轉化時間

精度

範圍

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章