基于LPC2210的網絡化控制的智能溫度傳感器
3 系統(tǒng)軟件分析
3.1 總體設計
系統(tǒng)開發(fā)采用的是ARM公司的ADS1.2作為開發(fā)編譯環(huán)境。移植了μC/OS―II操作系統(tǒng),主要采用C語言編寫。將μC/OS―II移植到ARM處理器上,需要修改3個與ARM體系結構相關的文件:OS_CPU.H、0S_CPU_A.ASM、OS_CPU_C.C。具體移植請參考相關書籍。
程序首先調用OSinit()初始化μC/OS―II,完成對操作系統(tǒng)內部一些變量、數(shù)據(jù)結構和宏定義的初始化。在開始多任務之前,還需建立一個名為Task0()的任務,這一點是非常重要的,否則用戶的應用程序就會崩潰。主任務中首先調用TargeTInit()函數(shù)將目標板初始化,模板中包含這個初始化函數(shù),它完成對板上硬件的一些初始化工作。之后啟動多任務環(huán)境,創(chuàng)建3個任務來實現(xiàn)系統(tǒng)最終的目標。這3個任務包括:傳感器對溫度的采集和處理;溫度比較與液晶顯示;建立Web服務器。下面對設計過程中比較關鍵問題進行詳細的闡述。
3.2 軟件設計中的關鍵技術問題
在對傳感器數(shù)據(jù)采集的軟件編程中,采用的是單線總線協(xié)議。通過單線總線訪問DSl8820的協(xié)議包括:初始化DSl8820、ROM操作命令、存儲器操作命令和讀數(shù)據(jù)/處理數(shù)據(jù)。
根據(jù)DSl8820的初始化時序、寫時序和讀時序,分別編寫3個子程序:Init_DSl8820為初始化子程序;WriteOneChar為寫(命令或數(shù)據(jù))子程序;ReadOneChar為讀數(shù)據(jù)子程序。所有的數(shù)據(jù)讀/寫均由最低位開始。
該系統(tǒng)的讀字節(jié)子程序的流程如圖4所示。
溫度傳感器采集的關鍵任務程序代碼如下:
3.2.2 Web服務器的建立
要在微處理器中建立Web服務器,主要需要實現(xiàn)TCP/IP協(xié)議棧的移植。設計中主要采用ZLG/IP軟件包,它是廣州周立功單片機發(fā)展有限公司開發(fā)的面向嵌入式系統(tǒng)開發(fā)的TCP/IP協(xié)議棧,是ZLG系列中間件的重要成員之一。ZLG/IP提供實現(xiàn)Internet網絡上IP接點的功能,是一種高性能的嵌入式TCP/IP協(xié)議棧軟件。它使用μC/OS―II實時操作系統(tǒng)的信號機制來實現(xiàn)一個多任務并行、可重入的協(xié)議棧,完全使用ANSI C編寫,可以像μC/OS―II那樣支持多種CPU。ZLG/IP還具有層次清晰、易于升級和修改等特點。該ZLG/IP軟件包具體可見參考文獻。
ZLG/IP采用模塊化層次結構設計,其結構如圖5所示。
評論