隨著科技的高速發展,現代工業測控領域的很多應用中都需要實現大量數據的定時采集存儲。以為海流計設計的海流數據采集存儲接口電路為例,介紹一種定時采集存儲系統的工作原理及其實現方法。
1 總體結構
在很多情況下,尤其是惡劣的工作環境下,高性能的單片機和大容量的Flash存儲器是數據采集存儲系統的最佳選擇,本文介紹的系統也是基于這樣的考慮。系統硬件結構并不復雜,包括高性能單片機C8051F021、實時時鐘芯片SD2300、大容量Flash存儲器K9G8G08及其外圍電路,如圖1所示。工作原理也較為簡單,通過串口將單片機C8051F021與海流計相連,通過對單片機的編程實現對海流計的控制和使用。同時,為了實現定時采集和數據存儲的功能,還需將實時時鐘芯片SD2300和大容量Flash存儲器K9G8G08的相應引腳與C8051F021的GPIO相連。SD2300通過發送定時中斷使得C8051F021在預定時刻通過串口采集若干組流速和流向數據,然后將其存儲在K9G8G08中。
2 硬件設計
2.1 高性能單片機C8051F021
C8051F021單片機是集成在一塊芯片上的混合信號系統級單片機。芯片上有64位數字I/O。C8051F021單片機具有片內看門狗定時器、VDD 監視器和時鐘發生器,可以說是真正的、可獨立工作的、完整的SoC(片上系統)。片上所有的模擬和數字設備都可以使能或關閉,也可以由用戶設置。片內的 Flash存儲器可以在電路(即由用戶程序在運行時)編程(讀寫),為用戶提供了非揮發性存儲器,并允許現場更新8051程序。
2.2 SD2300與C8051F021的硬件接口設計
SD2300是深圳市興威帆電子技術有限公司開發的一種具有內置晶振、兩線式串行接口的高精度實時時鐘芯片。較SD2000而言,SD2300具有更寬的定時范圍、更多的周期性中斷選擇,并增加了數字精度調整寄存器、30s時間調整和晶振停振檢測等功能。最顯著的改動是對時鐘數據/寄存器的訪問由通過不同命令字改為地址直接尋址,使得芯片的使用更加靈活,并提高了程序編寫的可讀性。
SD2300的接口為I2C總線。對于具有I2C總線接口的單片機,只需將SD2300的SCL、SDA腳與單片機的SCL、SDA腳相連;對于沒有 I2C總線接口的單片機,可以用通用I/O口來模擬I2C總線。如圖2所示,單片機C8051F021的PO.6模擬SCL,產生I2C總線的時序同步信號;PO.7模擬SDA,實現I2C總線的串行數據輸入/輸出。圖2中的INTRA、INTRB為定時中斷輸出,SDA和SCL為時鐘電路的串行時鐘腳, SDAE和SCLE為E2PROM的串行時鐘腳。
2.3 K9G8G08與C8051F021的硬件接口設計
K9G8G08容量為8 Gb(8 858 370 048位),包含524 288行(頁)和2 112×8列。在列地址2 048~2 111處有備用的64列存儲單元。2 112字節的數據寄存器與存儲器陣列相連,用來為在頁讀或頁編程操作時I/O端口和存儲陣列間的數據傳輸服務。存儲器陣列由32個存儲單元串行連接在一起,構成了一個NAND結構。每32個存儲單元處于不同的頁中。一個存儲單元包括2位數據。一個塊由2個NAND結構串組成,總共包含1 081 344個NAND結構。編程和讀操作均以頁為單位,而擦除操作以塊為單位。存儲器陣列包含4 096個256 KB的可擦除塊。K9G8G08采用8個I/O引腳的多次復用方案。這就使得其外部引腳數顯著減少,并且可以不改變現有系統的板級設計而進行系統升級。指令、地址和數據通過在CE為低電平時把WE引腳拉低而寫入I/O引腳,在麗的上升沿被鎖存。CLE和ALE通過I/O引腳分別被用在指令和地址的多路傳輸中。一些指令需要1個總線周期,例如重啟指令、讀狀態指令等;另一些指令則需要2個周期,例如頁讀、塊擦除和頁編程操作,一個周期用來設置,另一個周期用來執行。1 Gb的物理地址空問需要30位的地址,5個周期來尋址(2個列地址,3個行地址)。頁讀和頁編程操作在相應的指令后需要同樣的5個地址周期。而在一個塊擦除操作中,只需要3個行地址。因此,可將C8051F021的P2口直接與這8根I/O連接,其他控制引腳接C8051F021、的相應引腳,如圖3所示。K9G8G08通過CLE和ALE信號線實現I/O口上指令和地址的復用。指令、地址和數據都通過拉低WE和CE從I/O口寫入。
3 軟件設計
3.1 系統軟件設計
系統軟件的設計流程如圖4所示。首先完成系統的初始化工作,包括C8051F021的初始化和SD2300的定時中斷設置,然后系統進入等待狀態。待到達預定時刻后,SD2300發出定時中斷,使C8051F021進入中斷處理程序,進行數據采集和存儲。存儲完畢,系統再次進入等待狀態,等待下一次定時中斷的到來。
3.2 SD2300的軟件接口設計
SD2300的I2C接口與C8051F021的GPIO相連,通過GPIO來模擬I2C,編程簡單,操作方便。SD2300的訪問控制通過寄存器直接尋址實現,其內部的寄存器如表1所列。
SD2300通過兩線式串行接口方式接收各種命令并讀寫數據。下面具體介紹兩線式串行接口方式。
①開始條件:當SCL處于高電平時,SDA由高電平變成低電平構成一個開始條件。對SD2300的所有操作均必須由開始條件開始。
②停止條件:當SCL處于高電平時,SDA由低電平變成高電平構成一個停止條件。此時SD2300所有的操作均停止,系統進入待機狀態。
③數據傳輸:當SCL為低電平,且SDA電平變化時,數據由C8051F021傳輸給SD2300;當SCL為高電平,且SDA電平不變時, C8051F021讀取SD2300 E2PROM發送來的數據;當SCL為高電平,且SDA電平變化時,SD2300收到一個開始或停止條件。
④確認:數據傳輸以8位序列進行。SD2300在第9個時鐘周期時將SDA置位為低電平,即送出一個確認信號,標明數據被其收到。
鑒于篇幅所限,僅以SD2300的設定開始采集時間程序為例,介紹一下SD2300的軟件接口編寫。
3.3 K9G8G08的軟件接口設計
相比于三星公司的Flash存儲器KM29U128T,K9G8G08不僅在容量上得到了極大的提高,操作的多樣性和靈活性也有顯著改進。例如,支持一頁內的隨機數據讀寫,并提供了一種特殊的Two-Plane頁編程操作,可以支持兩頁的同時寫入,其操作指令如表2所列。
4 總結
為海流計設計的數據定時采集存儲系統,經過反復實驗,能夠按照預定時刻準時進行數據采集工作,數據存儲完整準確,整個系統工作穩定可靠。該系統的設計為相關應用提供了參考。
責任編輯:gt
-
芯片
+關注
關注
454文章
50423瀏覽量
421856 -
單片機
+關注
關注
6032文章
44520瀏覽量
633074 -
數據采集
+關注
關注
38文章
5911瀏覽量
113521
發布評論請先 登錄
相關推薦
評論