程式碼下載
Compass Pmod 控制器(頂層檔案):pmod_compass.vhd (13.7 KB)
I2C 主控(必須包含在專案中):i2c_master.vhd (14.1 KB)
特點
- Digilent Pmod CMPS2(用於 Memsic 的 MMC34160PJ 磁力計的 Pmod)精簡介面的 VHDL 原始碼
- 透過 3 個平行介面(每個軸一個)持續輸出最新磁場數據
- 處理 I2C 通訊以及從羅盤 Pmod 檢索所有數據
- 處理磁感測器分辨率和測量頻率的配置
- 使用者可選分辨率和測量頻率
- 可設定系統時脈頻率
介紹
本文詳細介紹了一個 VHDL 組件,用於將 FPGA 連接到 Digilent 的三軸數位羅盤 Pmod,如圖 1 所示。圖 2 展示了此羅盤 Pmod 控制器整合到系統中的典型範例。如圖所示,羅盤 Pmod 控制器連接到 Pmod 連接埠並執行傳輸以配置 Pmod 並收集資料。資料會持續更新,並顯示在 3 個簡單的平行介面上,分別對應 x 軸、y 軸和 z 軸的磁場資料值。
圖 1. Digilent 三軸數位羅盤 Pmod
圖 2. 範例實現
工作原理
Compass Pmod 控制器主要由一個狀態機和一個 I2C 主控組件組成。
狀態機
此設計使用圖 3 所示的狀態機來實現其操作。組件啟動後立即進入 start 狀態。它會在該狀態保持 10ms,以確保 Pmod 有足夠的時間完成上電。然後,它會進入 configure 狀態,在此狀態下設定磁力計輸出的分辨率,將磁力計設於連續測量模式,並設定這些連續測量的頻率。pause 狀態會達到與測量頻率週期相同的暫停。在接下來的 read_data 狀態中,控制器會從 Pmod 收集最新的磁場資料。最後,它會在 output_result 狀態中輸出資料。然後,它會在 pause、read_data 和 output_result 狀態之間不斷循環,以保持磁場資料的更新。雖然狀態圖中未顯示,但隨時重置組件都會使其返回 start 狀態。
圖 3. 狀態圖
I2C 主控
在 configure 和 read_data 狀態下,狀態機控制 I2C 主控元件與 Pmod 上的 MMC34160PJ 磁力計進行通訊。I2C 主控的文件可在此處取得。
配置羅盤 Pmod 控制器
羅盤 Pmod 控制器的配置是透過設定實體中的通用參數來實現的。
系統時脈頻率
通用參數 sys_clk_freq 必須設定為羅盤 Pmod 控制器在其 clk 連接埠上提供的系統時脈頻率。
解析度
通用參數 resolution 用於設定磁場測量的分辨率。此參數也用於設定 x、y 和 z 資料輸出的寬度。有效選項為 12、14 和 16-bit。預設值為 16-bit。將 resolution 設為任何無效值也會導致解析度為 16-bit。
更新頻率
通用參數 update_freq 用於設定測量頻率以及 x、y 和 z 資料輸出更新的頻率。這些參數值對應於磁力計控制暫存器設定測量頻率所需的位元。表 1 列出了有效的參數設定和對應的更新頻率。預設為「11」(50 Hz)。
表 1. 更新頻率設定
連接埠描述
表 2 描述了羅盤 Pmod 控制器的連接埠。
表 2. 連接埠描述
連接
此 Pmod 有一個 6 針連接器。表 3 提供了此連接器的引腳排列。羅盤 Pmod 控制器的連接埠需要指派給連接到此連接器的 FPGA 引腳,具體如下表所示。
表 3. 羅盤 Pmod 引腳排列及與羅盤 Pmod 控制器的連接
Pmod 還配有兩條跳線。必須啟用(即連接)這些跳線才能連接 SCL 和 SDA 所需的 I2C 上拉電阻。
重置
reset_n 輸入連接埠必須為邏輯高電平,Compass Pmod 控制器元件才能運作。此連接埠上的邏輯低電平會非同步重置元件。在重置期間,元件會中止目前與 Pmod 的傳輸,並清除 x、y 和 z 資料輸出以及 i2c_ack_err 輸出。重置解除後,羅盤 Pmod 控制器將重新啟動運作。它會重新配置 Pmod,並恢復磁場資料的收集和輸出。
結論
羅盤 Pmod 控制器是一個可編程邏輯組件,可與 Digilent 的 Pmod CMPS2(三軸數位羅盤 Pmod)介接。它處理與 Pmod 的所有通訊,以配置 Pmod 的磁力計,並在平行輸出上提供持續更新的磁場資料流。





