程式碼下載
溫濕度感測器 Pmod 控制器(頂層檔案):pmod_hygrometer.vhd (15.1 KB)
I2C 主控(必須包含在專案中):i2c_master.vhd (14.1 KB)
特點
- Digilent Pmod HYGRO(適用於 TI 的 HDC1080 濕度計的 Pmod)精簡介面的 VHDL 原始碼
- 透過平行介面持續輸出最新的相對濕度和溫度數據
- 處理 I2C 通訊以及從濕度計 Pmod 檢索所有數據
- 處理濕度計採集模式、濕度解析度和溫度解析度的配置
- 使用者可選擇相對濕度分辨率和溫度分辨率
- 可設定系統時脈頻率
介紹
本文詳細介紹了一個 VHDL 組件,用於將 FPGA 與 Digilent 的數位溫濕度感測器(濕度計)Pmod 介面連接起來,如圖 1 所示。圖 2 展示了此濕度計 Pmod 控制器整合到系統中的典型範例。如圖所示,濕度計 Pmod 控制器連接到 Pmod 連接埠並執行傳輸以配置 Pmod 並收集資料。相對濕度資料和溫度資料會持續更新,並透過簡單的平行介面顯示出來。
圖 1. Digilent 濕度計 Pmod
圖 2. 範例實現
工作原理
濕度計 Pmod 控制器主要由一個狀態機和一個 I2C 主控組件組成。
狀態機
此設計使用圖 3 所示的狀態機來實現其操作。啟動後,組件立即進入start 狀態。它會在該狀態保持 100ms,以確保 Pmod 有足夠的時間完成上電。然後,它會進入configure 狀態,在此狀態下設定濕度計的採集模式以測量濕度和溫度,並設定濕度計相對濕度和溫度測量的解析度。在initiate 狀態下,它透過執行指標寫入傳輸來觸發測量,將濕度計的位址指標設為 0x00。pause狀態會實現暫停,暫停時間等於濕度計依序完成溫度和濕度測量所需的時間。在接下來的 read_data 狀態中,控制器從 Pmod 檢索測量結果。最後,它會在 output_result 狀態中輸出資料。然後,它會在 initiate、pause、read_data 和 output_result 狀態之間不斷循環,以保持濕度和溫度資料的更新。儘管狀態圖中未顯示,但隨時重置組件都會使其返回 start 狀態。
圖 3. 狀態圖
I2C 主控
在 configure、initial 和 read_data 狀態下,狀態機控制 I2C 主控元件與 Pmod 上的 HDC1080 濕度計進行通訊。I2C 主控的文件可在此處取得。
配置濕度計 Pmod 控制器
透過設定實體中的通用參數來配置濕度計 Pmod 控制器。
系統時脈頻率
通用參數 sys_clk_freq 必須設定為透過其 clk 連接埠提供給濕度計 Pmod 控制器的系統時脈頻率。
濕度分辨率
通用參數 humidity_resolution 設定相對濕度測量的解析度和 relative_humidity 輸出的資料寬度。有效選項為 8、11 和 14bit。預設值為14bit。將 humidity_resolution 設為任何無效值也會導致解析度為14bit。
濕度測量的持續時間取決於分辨率,因此該值也會影響輸出資料更新的頻率。表1列出了每種解析度的測量時間。
表1. 濕度測量時間
溫度分辨率
通用參數 temperature_resolution 用於設定溫度測量的分辨率和溫度輸出的資料寬度。有效選項為 11bit 和 14 bit。預設值為 14bit。將 temperature_resolution 設為任何無效值也會導致解析度為 14bit。
溫度測量的持續時間取決於分辨率,因此該值也會影響輸出資料更新的頻率。表 2 列出了每種解析度的測量時間。
表 2. 溫度測量時間
連接埠描述
表 3 描述了濕度計 Pmod 控制器的連接埠。
表 3. 連接埠描述
連接
此 Pmod 有一個 6 針連接器。表 4 提供了此連接器的引腳排列。濕度計 Pmod 控制器的連接埠需要分配給連接到此連接器的 FPGA 引腳,具體如下表所示。
表 4. 濕度計 Pmod 引腳排列及與濕度計 Pmod 控制器的連接
Pmod 還配有兩條跳線。必須啟用(即連接)這些跳線才能連接 SCL 和 SDA 所需的 I2C 上拉電阻。
重置
reset_n 輸入連接埠必須為邏輯高電平,濕度計 Pmod 控制器元件才能運作。此連接埠上的邏輯低電平會非同步重置元件。重置期間,元件會中止目前與 Pmod 的傳輸,並清除relative_humidity 和溫度資料輸出以及 i2c_ack_err 輸出。重置完成後,濕度計 Pmod 控制器將重新啟動工作。它會重新配置 Pmod,並恢復收集和輸出相對濕度和溫度資料。
結論
這款濕度計 Pmod 控制器是一款可編程邏輯元件,可與 Digilent 的 Pmod HYGRO(數位溫濕度感測器 Pmod)進行介面。它負責處理與 Pmod 的所有通訊,以配置 Pmod 的採集模式和數據分辨率,並透過並行輸出提供持續更新的相對濕度和溫度數據流。