基于TinyOS 操作系統的I/O控制
出處:電子技術網 發(fā)布于:2013-06-14 10:15:28
摘要:無線傳感器網絡中的Sink節(jié)點是數據匯聚的中心,它與數據采集終端通過一個串行接口連接.為了實現Sink節(jié)點與數據采集終端的通信,利用CC2430芯片的數據傳輸原理,用nesC語言編寫了一個TinyOS系統下的I/O控制程序,并給出在CC2340芯片上實現的結果,可用來控制對Sink節(jié)點的輸入和輸出.對該程序進行一定的擴展和改進便可以實現對Sink節(jié)點與節(jié)點通信和數據傳輸的控制.
0 引言
無線傳感器網由大量傳感器節(jié)點組成,傳感器節(jié)點負責對某區(qū)域內的某些特定數據進行采集,并將監(jiān)測數據通過某一路徑傳輸給匯聚節(jié)點(Sink 節(jié)點).Sink 節(jié)點再將數據經由互聯網或衛(wèi)星傳輸給用戶.整個無線傳感器網絡結構中,Sink節(jié)點是數據匯聚的中心,它負責將監(jiān)測數據傳輸給數據采集終端,數據采集終端可以是一個采集設備或一個采集軟件.Sink節(jié)點與數據采集終端之間的I/O問題成為數據傳輸的關鍵所在.
本文介紹了一個TinyOS系統下的I/O控制程序,用來控制對Sink節(jié)點的輸入和輸出,并在CC2430芯片上實現了該程序.對該程序進行一定的擴展便可以實現對Sink節(jié)點與節(jié)點通信的控制.
1 測試平臺的選擇
1.1 TinyOS操作系統
TinyOS是美國加州大學伯克利分校專門針對無線傳感器網絡設計的開源操作系統,它是一個事件驅動的.基于組件的無線傳感器網絡操作系統.TinyOS 系統.庫及應用程序都是用nesC語言寫的,這是一種新的用于編寫結構化的基于組件應用程序的語言.目前已經成為WSN研究領域實施上的標準平臺.
TinyOS全構件化.事件驅動.無內核和用戶空間區(qū)分的設計原則滿足了WSN的特殊需要.應用程序根據需要原配.修改和創(chuàng)建構件,使系統開銷化.構件與構件之間通過Command和Event相聯系,Command向下調用,Event向上調用.TinyOS沒有線程概念,不存在阻塞,也無需維護進程的上下文,只用維護返回棧.操作的調用與完成是分離的過程.Command的調用從不阻塞,返回時采用Event方式.因此,TinyOS被稱為“事件驅動”的操作系統.
1.2 nesC語言
nesC具有類似于C語言的語法,但支持TinyOS的并發(fā)模型,同時具有機構化機制.命名機制,能夠與其他軟組件鏈接在一起從而形成一個魯棒的網絡嵌入式系統.其主要目標是幫助應用程序設計者建立可易于組合成完整.并發(fā)式系統的組件,并能夠在編譯時執(zhí)行廣泛的檢查.
nesC 程序的基本單元是組件,在nesC 語言的定義中,存在兩種不同功能的組件:模塊(Module)和配件(Configuration),一個組件包括定義和實現兩部分.組件間的交互是通過組件的規(guī)范元素來實現的,包括接口實例.命令和時間等,可由組件提供(Provided),也可被組件使用(Used).
接口是一系列聲明的有名函數集合,同時接口是連接不同組件的紐帶.nesC 中的接口是雙向的,這種接口實際上是提供者組件和使用者組件間的一個多功能交互通道.一方面接口的提供者實現了接口的一組功能函數,稱為命令(Commands);另一方面接口的使用者實現了接口的一組功能函數,稱為事件(Events).
模塊是具體描述實現邏輯功能的組件,主要包括命令.事件.任務等的具體實現.必須實現模塊提供接口聲明的全部命令和模塊使用接口聲明的所有事件.
配件是具體描述組件間連接關系的組件,不同組件接口之間的關系是專門通過配件描述其實現過程.
2 CC2430 芯片I/O原理
CC2430 兩個串行通信接口USARTx(這里的x 是USART 的編號,其數值為0 或者1)能夠運行于異步UART模式或者是同步SPI模式.UART模式提供異步串行接口,全雙工傳送.當UxCSR.MODE 設置為1 時,就選擇了UART模式,UART操作由USART控制寄存器UxUCR 以及狀態(tài)寄存器UxCSR 來控制,UxBAUD 用于設置速率.
2.1 UART發(fā)送
當收/發(fā)數據緩沖器UxBUF寫入數據時,該字節(jié)數據會發(fā)送到輸出引腳TXDx.字節(jié)傳送過程中UxCSR.
ACTIVE位保持為1.UxCSR.TX_BYTE位自動設為1表示數據傳送結束.收/發(fā)數據緩沖寄存器準備接收新的發(fā)送數據時,就產生一個中斷請求.該中斷在傳送開始之后立刻發(fā)生,使得字節(jié)正在發(fā)送時,新的字節(jié)能夠裝入數據緩沖器.
2.2 UART接收
設置UxCSR.RE 位為1 使能數據接收.在UTART從輸入引腳RXDx 尋找有效起始位的過程中UxCSR.
ACTIVE保持為1,當檢測出有效起始位時,收到字節(jié)傳入接收寄存器,UxCSR.RX_BYTE位自動設置為1,然后產生接收中斷.通過寄存器UxBUF讀取收到數據字節(jié)的同時UxCSR.RX_BYTE位由硬件清0.
2.3 UART硬件流控制
UxUCR.FLOW設置為1使能硬件流控制,當接收寄存器為空且接收使能時,RTS 輸出為低,在CTS 輸入變低前不會發(fā)生字節(jié)傳送.
2.4 UART特征格式
如果寄存器UxUCR中的BIT9和奇偶校驗位設置為1,那么奇偶校驗產生而且檢測使能.奇偶校驗計算出來,作為第9位來傳送.在接收期間,奇偶校驗位計算出來而且與收到的第9位進行比較.如果奇偶校驗出錯,則UxCSR.ERR 位設置為1.當UxCSR 讀取時,UxCSR.
ERR位清零.要傳送的停止位的數量設置為1或者2,這取決于寄存器位UxUCR.STOP.接收器總是要核對一個停止位.如果在接收期間收到的個停止位不是期望的停止位電平,就通過設置寄存器位UxCSR.FE為1,發(fā)出幀出錯信號.當UxCSR 讀取時,UxCSR.FE 位清零,當UxCSR.SPB設置為1,接收器將核對兩個停止位.
2.5 硬件選擇及解決方案
根據上述CC2430 I/O 接口原理,在UART 模式下,發(fā)送/接收數據.數據傳送的停止與啟動均由UxCSR 和UxUCR 控制.選用CC2430 芯片板和編程采集板組合作為Sink節(jié)點,如圖1所示.對Sink節(jié)點的I/O 控制即轉換成對CC2430芯片的I/O控制.

3 I/O控制程序
通過鍵盤輸入指令對Sink節(jié)點的I/O進行控制.該程序的功能是通過鍵盤輸入指令對Sink節(jié)點的I/O接口進行控制,鍵盤輸入1時切換Sink節(jié)點板上的藍色LED燈,輸入2時切換黃色LED 燈,并將兩個LED 燈的狀態(tài)信息輸出到計算機終端上.將該程序燒錄到CC2430芯片上,接通Sink節(jié)點和計算機就可以實現該功能.
3.1 程序流程圖
程序流程圖如圖2所示.

3.2 程序結構
3.2.1 實現I/O控制的配件文件
配件中定義了I/O控制的模塊.TinyOS主模塊并提供了接口,是I/O控制的頂層配件.

3.2.2 模塊文件
模塊接口聲明:

塊中的接口和函數見表1.

3.3 運行結果
CC2430板插到Sink節(jié)點板上,執(zhí)行make antc3install編譯工程文件,并將程序燒錄到CC2430中.進入計算機超級終端,打開超級終端設置,進行如下設置:選擇COM1,波特率設為9 600,數據流控制選擇“無”.
將網關板的串口通過串口線與計算機的串口連接起來,通過串口輸入1.2 切換控制LED 燈亮.燈滅,其狀態(tài)輸出到計算機的超級終端上,如圖3所示.

4 結語
無線傳感器網絡(WSN)綜合了傳感器技術.嵌入式計算技術.現代網絡.無線通信技術及分布式信息處理技術,是備受關注的新興前沿研究熱點,可以實現人與自然物以及物與物的通信和計算.本文所述的程序可對無線傳感器網絡Sink節(jié)點的I/O進行控制以及一定的擴展和改進便可以實現對Sink節(jié)點與節(jié)點通信和數據傳輸的控制.例如:加入點對點射頻模塊可以實現Sink節(jié)點與節(jié)點的通信,加入溫濕度采集模塊可以實現溫濕度的采集和回傳.這對組件無線傳感器網具有一定的參考價值.
版權與免責聲明
凡本網注明“出處:維庫電子市場網”的所有作品,版權均屬于維庫電子市場網,轉載請必須注明維庫電子市場網,http://www.hbjingang.com,違反者本網將追究相關法律責任。
本網轉載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網贊同其觀點或證實其內容的真實性,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網站或個人從本網轉載時,必須保留本網注明的作品出處,并自負版權等法律責任。
如涉及作品內容、版權等問題,請在作品發(fā)表之日起一周內與本網聯系,否則視為放棄相關權利。
- 壓力傳感器技術特性與選型運維指南2026/1/5 10:23:00
- 工業(yè)級激光位移傳感器技術參數與選型運維指南2025/12/26 10:25:33
- 工業(yè)級壓力傳感器技術參數與選型運維指南2025/12/25 10:01:00
- 工業(yè)級溫濕度傳感器技術參數與選型運維指南2025/12/25 9:52:01
- 工業(yè)傳感器選型與信號采集抗干擾技術全解析2025/12/18 10:43:18









