新聞中心

EEPW首頁 > 物聯(lián)網(wǎng)與傳感器 > 設計應用 > 基于IEEE802.11b的EPA溫度變送器設計

基于IEEE802.11b的EPA溫度變送器設計

——
作者:重慶郵電學院 楊云 王平 鐘剛 時間:2007-01-26 來源:《單片機與嵌入式系統(tǒng)應用》 收藏


引言

本文引用地址:http://www.butianyuan.cn/article/21245.htm

ieee802.11是ieee無線局域網(wǎng)標準,主要用于用戶終端的無線接入。ieee802.11只規(guī)定了開放式系統(tǒng)互聯(lián)參考模型的物理層和介質(zhì)訪問子層,其mac層利用載波監(jiān)聽多路訪問/沖突避免(csma/ca)協(xié)議;定義了單一的mac層和多樣的物理層,其物理層標準主要有ieee802.11b、ieee802.11a和ieee802.11g。ieee802.11b標準是ieee802.11協(xié)議標準的擴展,最高可以支持11mbps的數(shù)據(jù)速率,運行在2.4g赫茲的ism頻段上,采用的調(diào)制技術是cck,支持數(shù)據(jù)業(yè)務。

本文詳細分析了采用s3c2410處理器平臺具體實現(xiàn)運用于epa網(wǎng)絡的ieee802.11b無線實時溫度采集器的開發(fā)流程,并對串口通信的調(diào)試手段及常見問題進行了探討。

1 溫度變送器的硬件設計

溫度變送器系統(tǒng)平臺硬件系統(tǒng)功能如圖1所示,該平臺的核心器件是samsung公司的處理器s3c2410,外部擴展了16mb、16位的flash內(nèi)存和64mb、32位的sdram。處理器s3c2410通過uart接口和溫度變送器相連,通過usb接口和一個ieee802.11b網(wǎng)絡接口卡相連,通過rs232串口和外部pc相連。溫度變送器采集到的溫度數(shù)據(jù)輸入系統(tǒng)緩沖區(qū)中,處理器s3c2410可對緩沖數(shù)據(jù)直接進行相關處理,處理后的數(shù)據(jù)可以通過rs232串口傳送給外部宿主機pc,也可通過ieee802.11b網(wǎng)絡接口卡發(fā)送到無線局域網(wǎng)上。

s3c2410處理器功能十分強大,資源豐富。它內(nèi)部集成了arm公司的32位微處理器arm920t,主頻最高可達203m赫茲,具有獨立的16kb指令cache和16kb數(shù)據(jù)cache,還有l(wèi)cd控制器,ram控制器,nand閃存控制器、3路uart、4路dma、4路帶pwm的timer、并行i/o口、8路10位adc、觸摸屏接口、2個usb接口控制器和2路spi。

從外部溫度傳感器采集到的數(shù)據(jù)經(jīng)s3c2410 cpu數(shù)據(jù)處理模塊傳回到ieee802.11b usb接口卡;ieee802.11b的無線通信模塊經(jīng)ieee802.11b的接入點傳到外部以太網(wǎng)絡中。

2 溫度變送器的軟件系統(tǒng)設計

溫度變送器軟件系統(tǒng)設計流程如圖2所示,系統(tǒng)分3步實現(xiàn):1)為溫度變送器編寫內(nèi)核驅(qū)動程序;2)編寫溫度數(shù)據(jù)采集應用程序,通過串口獲取溫度數(shù)據(jù)并進行相應的epa報文打包處理;3)利用無線網(wǎng)絡將處理數(shù)據(jù)發(fā)送給上位機,前面提到系統(tǒng)平臺上運行的是arm linux。在啟動后啟用了mmu,系統(tǒng)進入保護模式,所以應用程序不能直接讀/寫外設的i/o區(qū)域(包括i/o端口和i/o內(nèi)存)。這時一般要借助于外設的驅(qū)動來進入內(nèi)核態(tài)完成這項工作。

2.1 串口的驅(qū)動實現(xiàn)

在linux下,設備驅(qū)動程序可以看成linux內(nèi)核與外部設備之間的接口。設備驅(qū)動程序向應用程序屏蔽了硬件實現(xiàn)上的細節(jié),使得應用程序可以像操作普通文件一樣來操作外部設備,可以使用和操作文件中相同的、標準的系統(tǒng)調(diào)用接口函數(shù)來完成對硬件設備的打開、關閉、讀/寫以及i/o控制操作,而驅(qū)動程序的主要任務也就是要實現(xiàn)這些系統(tǒng)調(diào)用函數(shù)。本系統(tǒng)平臺使用的嵌入式arm linux系統(tǒng)在內(nèi)核主要功能上與linux操作系統(tǒng)沒有本身區(qū)別,所以驅(qū)動程序要完成的任務也一樣,只是編譯時使用的編譯器、部分頭文件和庫文件等要涉及具體處理器體系結(jié)構(gòu),這些都可在makefile文件中具體指定。當應用程序?qū)υO備文件進行諸如open、close、read、write等系統(tǒng)調(diào)用操作時,linux內(nèi)核將調(diào)用file_operations結(jié)構(gòu)訪問驅(qū)動程序提供的函數(shù),例如,應用程序?qū)υO備文件執(zhí)行讀操作時,內(nèi)核將調(diào)用file_operations結(jié)構(gòu)中的read函數(shù)。在系統(tǒng)平臺上對串口數(shù)碼攝像頭驅(qū)動,首先把串口驅(qū)動模塊靜態(tài)編譯進內(nèi)核,使平臺支持串口,再在須使用溫度采集時,使用insmode動態(tài)加載其驅(qū)動模塊。這樣溫度傳感器就可正常工作了,接著進行下一步--對溫度的采集編程。

2.2 溫度數(shù)據(jù)采集模塊

在溫度變送器串口被驅(qū)動后,需要再編寫一個采集溫度的應用程序。根據(jù)嵌入式系統(tǒng)開發(fā)特征,先在宿主機上編寫應用程序,再使用交叉編譯器進行編譯、鏈接、生成目標平臺的可執(zhí)行文件,宿主機與目標板通信采用打印終端的方式進行交叉調(diào)試,成功后移植到目標平臺。編寫采集程序是在安裝linux操作系統(tǒng)的宿主pc機上進行的,其程序流程如圖3所示。

程序運行流程如下:

1)初始化設備功能,發(fā)送03h給溫度變送器。如果初始化失敗,則重復發(fā)送初始化功能碼2次,若都失敗則返回;若成功則進入下一步。

2)進行數(shù)據(jù)查詢,查詢消息中的功能代碼告之被選中的從設備要實現(xiàn)何種功能,數(shù)據(jù)段包含了從設備要實現(xiàn)功能的任何附加信息,即讀取或修改的起始地址以及數(shù)據(jù)數(shù)量。crc校驗為從設備提供了一種驗證消息內(nèi)容是否正確的方法。

3)如果從設備產(chǎn)生一個正常的響應,則響應消息中的功能代碼是查詢消息中的功能代碼的回應。數(shù)據(jù)段包括了從設備收集的數(shù)據(jù)。如果有錯誤發(fā)生,則從設備將修改功能代碼以表明此回應是一個異常的回應;同時數(shù)據(jù)段中包含相應的錯誤代碼,crc校驗用于主設備判斷響應幀內(nèi)容的正確性。

4)將從設備得到的數(shù)據(jù)運用epa協(xié)議棧進行數(shù)據(jù)的封裝,然后通過ieee802.11b無線網(wǎng)卡發(fā)送到數(shù)據(jù)分析設備。

5)根據(jù)對數(shù)據(jù)的處理,將得到返回的數(shù)據(jù),程序再將返回數(shù)據(jù)寫入從設備。如果寫入失敗,則連續(xù)寫兩次,若仍失敗則跳出。

系統(tǒng)采用主從通信技術,s3c2410處理器模塊作為主設備,溫度傳感器作為從設備,主設備可以對溫度傳感器進行初始化,并出發(fā)出查詢指令;溫度傳感器根據(jù)主設備查詢指令實現(xiàn)相應的功能。s3c2410處理器模塊查詢的格式包括功能代碼、所有要發(fā)送的數(shù)據(jù)和crc校驗域;從設備回應消息也包括相應的功能代碼、任何要返回的數(shù)據(jù)和crc校驗域。如果在消息接收過程中發(fā)生錯誤,從設備將構(gòu)造一錯誤幀并將其作為應答回應。程序中構(gòu)造的幀格式如下:

當主設備查詢從設備時,它希望得到從設備的正常響應,但可能有3種處理情形:

1)從設計收到了主設備的查詢,且全部校驗正確。從設備就產(chǎn)生正確的響應。

2)從設備由于通信錯誤等沒有收到主設備的查詢,因此有就無法產(chǎn)生響應,這時主設備將通過超時判斷查詢的錯誤。

3)從設備收到了主設備的查詢,但檢測出通信幀內(nèi)容出錯(如crc校驗出錯或非法的起始地址等),這時從設備將產(chǎn)生異常響應通知主設備相關的錯誤信息。

最后將采集數(shù)據(jù)用epa協(xié)議棧打包,并利用無線網(wǎng)絡進行傳輸。

2.3 無線網(wǎng)絡模塊

無線網(wǎng)絡模塊是將無線網(wǎng)卡注入內(nèi)核,“插槽”驅(qū)動層通過api為pc卡服務層提供服務,編寫“插槽”層驅(qū)動就是實現(xiàn)這些api函數(shù),pc卡服務層維護著一張函數(shù)表,記錄已登記的“插槽”驅(qū)動層的api函數(shù),相應地提供了兩個接口函數(shù)用來登記和取消登記一個“插槽”驅(qū)動層的api函數(shù),定義如下:

int register_ss_entry(int nsock,ss_entry_t ss_entry);

int unregister_ss_entry(int nsock,ss_entry_t ss _entry);

typedef int(*ss_entry_t)(u_int sock,u_int cmd,void*arg);

◆函數(shù)register_ss_entry:用來登記一個“插槽”驅(qū)動層服務函數(shù)。

◆函數(shù)unregister_ss_entry:用來取消指定函數(shù)的登記,表明“插槽”層不再提供該服務。

◆具體服務函數(shù)ss_sentry:該函數(shù)的編寫是核心。它包括3個參數(shù):第1個參數(shù)sock是插槽編號;第2個參數(shù)cmd是命令,即服務函數(shù)的編碼;第3個參數(shù)是一個void類型的指針,用來傳遞任意的參數(shù)。

pcmcia“卡和插槽服務”(card and socket services)軟件規(guī)范要求插槽層提供的服務共有12項,linux操作系統(tǒng)定義在inchudepcmicass.h為文件里。

3 測試

首先在宿主機pc上使用交叉編譯器編譯、鏈接溫度數(shù)據(jù)采集程序,使之生成可執(zhí)行代碼,然后移植到目標平臺上。為進一步觀察采集的溫度數(shù)據(jù)效果,可在目標平臺帶網(wǎng)絡支持的基礎上編寫一個網(wǎng)絡通信程序,把采集到并處理成浮點型的溫度數(shù)據(jù)通過網(wǎng)絡傳輸?shù)絧c機上進行顯示。搭建無線溫度變送器的測試系統(tǒng)如圖4所示。

無線監(jiān)控系統(tǒng)采集的基于s3c2410的ieee802.11b無線溫度變送器的實時數(shù)據(jù)如圖5所示。



4 結(jié)論

實際的溫度測量數(shù)據(jù)表明,基于ieee802.11b的epa溫度數(shù)據(jù)采集器可以很好地完成溫度數(shù)據(jù)的采集處理,并通過無線接入點與相關設備進行通信,另外,在基于epa標準的無線局域網(wǎng)系統(tǒng)應用中,驗證了此設計的可行性。



關鍵詞:

評論


相關推薦

技術專區(qū)

關閉