基于LPC2210和DS18B20設計網絡化的智能溫度傳感器
NET_RST為LPC2210輸出引腳,RTL8019AS中斷信號為中斷輸入信號,且為外部中斷。RTL8019AS的SDO~SDl5串了一個470 Ω電阻連接到LPC2210的D0~D15。此外,該系統還加入了LCM接口,可以直接支持SMG240128A點陣圖形液晶模塊,便于通過液晶實時顯示傳感器所接收的溫度。本文引用地址:http://www.104case.com/article/162967.htm
3 系統軟件分析
3.1 總體設計
系統開發采用的是ARM公司的ADS1.2作為開發編譯環境。移植了μC/OS―II操作系統,主要采用C語言編寫。將μC/OS―II移植到ARM處理器上,需要修改3個與ARM體系結構相關的文件:OS_CPU.H、0S_CPU_A.ASM、OS_CPU_C.C。具體移植請參考相關書籍。
程序首先調用OSinit()初始化μC/OS―II,完成對操作系統內部一些變量、數據結構和宏定義的初始化。在開始多任務之前,還需建立一個名為Task0()的任務,這一點是非常重要的,否則用戶的應用程序就會崩潰。主任務中首先調用TargetInit()函數將目標板初始化,模板中包含這個初始化函數,它完成對板上硬件的一些初始化工作。之后啟動多任務環境,創建3個任務來實現系統最終的目標。這3個任務包括:傳感器對溫度的采集和處理;溫度比較與液晶顯示;建立Web服務器。下面對設計過程中比較關鍵問題進行詳細的闡述。
3.2 軟件設計中的關鍵技術問題
3.2.1 傳感器的溫度采集
在對傳感器數據采集的軟件編程中,采用的是單線總線協議。通過單線總線訪問DSl8820的協議包括:初始化DSl8820、ROM操作命令、存儲器操作命令和讀數據/處理數據。
根據DSl8820的初始化時序、寫時序和讀時序,分別編寫3個子程序:Init_DSl8820為初始化子程序;WriteOneChar為寫(命令或數據)子程序;ReadOneChar為讀數據子程序。所有的數據讀/寫均由最低位開始。
該系統的讀字節子程序的流程如圖4所示。
溫度傳感器采集的關鍵任務程序代碼如下:
3.2.2 Web服務器的建立
要在微處理器中建立Web服務器,主要需要實現TCP/IP協議棧的移植。設計中主要采用ZLG/IP軟件包,它是廣州周立功單片機發展有限公司開發的面向嵌入式系統開發的TCP/IP協議棧,是ZLG系列中間件的重要成員之一。ZLG/IP提供實現Internet網絡上IP接點的功能,是一種高性能的嵌入式TCP/IP協議棧軟件。它使用μC/OS―II實時操作系統的信號機制來實現一個多任務并行、可重入的協議棧,完全使用ANSI C編寫,可以像μC/OS―II那樣支持多種CPU。ZLG/IP還具有層次清晰、易于升級和修改等特點。該ZLG/IP軟件包具體可見參考文獻。
ZLG/IP采用模塊化層次結構設計,其結構如圖5所示。
圖5中,TCP/IP應用程序是用戶自己編寫的μC/OS―II任務,是ZLG/IP的使用者,位于整個程序的最高層。TCP/IP應用程序調用ZLG/IP提供的Socket API接口函數對網絡進行相應的操作。Socket API接口位于TCP/IP協議與應用程序之間,是用戶操作協議棧程序的工具,在應用程序中通過調用Socket API接口函數來對協議棧軟件進行操作。TCP、UDP處理模塊是協議棧程序中處理傳輸層協議的模塊,負責對傳輸層的數據進行封裝和解拆,保存傳輸層連接狀態。點劃線內部就是接收處理,包括IP報、ARP報、ICMP報的處理,及以太網層的數據接收驅動。接收驅動模塊在接收到數據后先進行分類,若是IP報就由IP處理模塊處理,若是ARP報就進行ARP協議處理。ARP請求報調用以太網發送模塊發送ARP應答報。IP處理模塊把數據分類,TCP或UDP報則轉由上層的傳輸層模塊處理,而ICMP協議處理模塊負責對IC―MP協議進行處理。IP發送模塊負責封裝IP報,并把封裝好的IP報傳送到下層發送模塊。IP發送模塊有4個上層模塊調用:分別是Socket API接口、UDP處理、TCP處理和ICMP處理。它們把相應的參數傳送給IP發送模塊,由IP發送模塊來封裝。Ethernet發送驅動模塊是屬于以太網層的處理模塊,負責封裝以太網報和數據的發送,調用它的模塊有ARP處理模塊和IP發送模塊。
評論