TinyOS的CC1100驅(qū)動程序設(shè)計_第1頁
TinyOS的CC1100驅(qū)動程序設(shè)計_第2頁
TinyOS的CC1100驅(qū)動程序設(shè)計_第3頁
TinyOS的CC1100驅(qū)動程序設(shè)計_第4頁
TinyOS的CC1100驅(qū)動程序設(shè)計_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、【W(wǎng)ord版本下載可任意編輯】 TinyOS的CC1100驅(qū)動程序設(shè)計 摘 要:在無線傳感器網(wǎng)絡(luò)中,網(wǎng)絡(luò)整體性能取決于節(jié)點上的通信模塊。該文根據(jù)實際需要,在實現(xiàn)網(wǎng)絡(luò)基本功能的前提下,選用功耗較小的CC1100芯片作為節(jié)點的無線收發(fā)單元。在分析CC1100功能特性并介紹嵌入式操作系統(tǒng)TinyOS的根底上,闡述如何使用NesC語言實現(xiàn)基于MSP430F1611平臺的CC1100驅(qū)動程序。 1 概述 無線傳感器網(wǎng)絡(luò)(Wireless Sensor Network, WSN)是當(dāng)前信息技術(shù)領(lǐng)域的熱點研究方向之一,它綜合了傳感器技術(shù)、遙測技術(shù)、嵌入式計算技術(shù)、分布式信息處理技術(shù)和無線通信技術(shù),是一種通過

2、無線通信方式形成的多跳自組織網(wǎng)絡(luò)系統(tǒng)。無線傳感器網(wǎng)絡(luò)由大量體積小、功耗低、具有無線通信、傳感和數(shù)據(jù)處理功能的傳感器節(jié)點組成。節(jié)點是無線傳感器網(wǎng)絡(luò)的基本單元,它一般由傳感器模塊(傳感器、A/D轉(zhuǎn)換器)、處理器模塊(微處理器、存儲器)、無線通信模塊(無線收發(fā)器)和能量供給模塊(電池)組成。 本文研發(fā)的無線傳感器網(wǎng)絡(luò)節(jié)點選用Chipcon公司低功耗低成本單片收發(fā)芯片CC1100作為無線通信模塊,將其通過SPI串行總線技術(shù)與MCU(MSP430F1611)相連。采用加州大學(xué)伯克利分校人員專門為無線傳感器網(wǎng)絡(luò)開發(fā)的嵌入式操作系統(tǒng)TinyOS作為軟件平臺。 2 設(shè)計需求分析 無線傳感器網(wǎng)絡(luò)由大量資源受限的

3、節(jié)點組成。資源受限的特點決定了在選擇無線收發(fā)芯片以及開發(fā)驅(qū)動時,必須滿足低功耗,并實現(xiàn)收發(fā)分組的基本功能。節(jié)點對CC1100的主要功能要求如下:發(fā)送時把MCU遞交過來的數(shù)據(jù)封裝成幀并實現(xiàn)分組發(fā)送;接收時完成分組接收后把數(shù)據(jù)提取出來交給MCU.無線傳感器網(wǎng)絡(luò)中節(jié)點發(fā)送一個比特所消耗的能量約等于其處理器開展1 000次32位加法運算消耗的能量,因此,為了減少分組碰撞,降低因分組重發(fā)而消耗的能量,CC1100應(yīng)實現(xiàn)發(fā)送數(shù)據(jù)之前的信道監(jiān)聽即載波監(jiān)聽功能。為了進一步降低能耗,節(jié)點在沒有數(shù)據(jù)發(fā)送或接收時應(yīng)置于休眠狀態(tài),并可以按指定方式激活,即具有休眠喚醒功能。具體設(shè)計需求如下: (1)收發(fā)分組。這是CC1

4、100需要實現(xiàn)的主要功能,CC1100在發(fā)送數(shù)據(jù)前,要完成數(shù)據(jù)的分組封裝,CC1100無線通信協(xié)議的分組格式如下: 其中,前導(dǎo)碼是一連串的10101010?,其數(shù)量為8n個比特,n的大小由用戶編程決定。同步字的內(nèi)容和數(shù)量均可編程確定,長度為數(shù)據(jù)域的字節(jié)數(shù),數(shù)據(jù)域內(nèi)容為MCU遞交的數(shù)據(jù),CRC校驗可以編程選擇使用,灰色部分均可編程選擇。 (2)載波監(jiān)聽。由于無線傳感器中節(jié)點數(shù)量眾多,節(jié)點密度大,如果不加控制就互相通信,必然會發(fā)生分組碰撞。為了減少碰撞時機,提高節(jié)點能量效率,本文通過CC1100的電平檢測功能實現(xiàn)載波監(jiān)聽。CC1100提供了2種載波監(jiān)聽方式:門限監(jiān)聽和相對門限監(jiān)聽。門限監(jiān)聽是當(dāng)信道

5、電平超過某個指定數(shù)值時通知信道忙,相對門限監(jiān)聽是當(dāng)信道電平增加量超過指定倍數(shù)(如6 dB)時,檢測為信道忙。門限監(jiān)聽需要大量信道特性統(tǒng)計來設(shè)置門限電平值,相對門限監(jiān)聽方式可以防止上述工作且能適應(yīng)時變噪聲場合。在本文項目中采用相對門限來監(jiān)聽信道,效果很好。 (3)睡眠喚醒。由于無線傳感器節(jié)點能量受限,因此在不必要的情況下,應(yīng)盡量減少節(jié)點上硬件資源的活動時間,在多數(shù)情況下,無線模塊應(yīng)處于休眠狀態(tài)。CC1100通過發(fā)送一個命令控制器可以關(guān)掉無線收發(fā)模塊。類似地,發(fā)送一個喚醒命令控制器可以激活該模塊。實現(xiàn)驅(qū)動時,筆者把上述命令封裝在一個接口中,供上層調(diào)用。 3 硬件連接關(guān)系 節(jié)點上MCU與無線收發(fā)模塊

6、的硬件連接關(guān)系如圖1所示。左側(cè)是MCU,采用美國Texas Instruments(TI)公司生產(chǎn)的超低功耗微處理器MSP430F1611,它是一個16 位、具有精簡指令集(RISC)、超低功耗的混合型單片機,其片上集成了豐富的外圍模塊,包括看門狗、定時器、硬件乘法器、A/D轉(zhuǎn)換器等,根據(jù)其運行打開的模塊數(shù)目不同(即采用不同的工作模式),芯片的功耗有著顯著差異,除了正常的活動模式外,它具有5種低功耗模式(LPM0LPM4),在等待方式下,其電流僅為0.7 A,在深睡眠情況下,電流僅為0.1 A .右側(cè)是無線收發(fā)模塊CC1100,它是Chipcon公司采用0.18 m CMOS技術(shù)生產(chǎn)的低功耗多

7、頻段無線收發(fā)芯片,具有尺寸小、功耗低、靈敏度高、獨立的64字節(jié)收發(fā)緩存(TXFIFO/ RXFIFO)、數(shù)字化接收信號強度輸出(RSSI)等特點,并有前向糾錯和數(shù)據(jù)白化等硬件處理模塊。它還具有3個通用數(shù)字輸出引腳GDOx(x=13),在實際應(yīng)用時,可以通過存放器配置讓它們?yōu)樯蠈訉崟r提供信道或分組狀態(tài).在硬件平臺上,CC1100的4個SPI通信管腳(SI, SO, SCLK, CSn)分別連接到相應(yīng)MSP430F1611的4個SPI串行通信引腳,即MOSI, MISO, UCLK, MCLK上。通過這4根線,處理器可以對CC1100開展存放器讀寫和功能配置。由于CC1100只是從機模式,因此處理

8、器只能采用主機模式。另外,本項目采用了其中2個通用數(shù)字輸出引腳GDO0和GDO2,分別用來實現(xiàn)分組發(fā)送指示和載波監(jiān)聽指示。 圖1 CC1100與MSP430F1611的硬件連接關(guān)系 CC1100與MSP430F1611通信時,時鐘源由MSP430F1611提供,經(jīng)過配置處理器存放器,本文采用其外圍時鐘模塊的系統(tǒng)子時鐘SMCLK.它們的通信方式為SPI串行通信方式。SPI通信是一種高速、全雙工的同步總線通信技術(shù),其硬件功能很強大,僅通過4個管腳,就可以在主機時鐘源SCLK節(jié)拍的控制下,通過2個雙向移位存放器實現(xiàn)CC1100與MSP430F1611的串行數(shù)據(jù)交換。CSn引腳主要用來控制數(shù)據(jù)通信的同

9、步性,在CC1100和MSP430F1611通信期間,要始終保證CSn引腳電平為低。 4 軟件平臺 TinyOS操作系統(tǒng)是目前無線傳感器網(wǎng)絡(luò)中應(yīng)用較廣泛的操作系統(tǒng),它是UC Berkeley開發(fā)的源代碼開放式操作系統(tǒng),專門為無線傳感網(wǎng)絡(luò)設(shè)計。它基于組件的架構(gòu)方式,可以快速實現(xiàn)各種應(yīng)用。此外,其輕量級線程技術(shù)、事件驅(qū)動模式、主動消息通信技術(shù)等思想極大提高了節(jié)點的資源利用率.TinyOS環(huán)境下編程語言為NesC,NesC是對C語言的擴展,擴展的目的是將C的模塊化思想與TinyOS的事件驅(qū)動機制結(jié)合起來。為了支持組件化編程模式,NesC語言引入了接口和組件的概念。接口是一系統(tǒng)功能類似或相關(guān)的函數(shù)聲明

10、,根據(jù)不同方向命名為命令或事件,具體實現(xiàn)在提供或使用該接口的組件中。組件包括配件和模塊,配件負(fù)責(zé)把不同組件通過接口連接起來,模塊提供程序所需的代碼實現(xiàn)。組件中的接口是雙向的,它給出使用者可以調(diào)用的命令或必須處理的事件。不同組件之間通過接口靜態(tài)連接,以提高程序的運行效率,增加程序的魯棒性。NesC的并發(fā)模型是基于運行到結(jié)束的任務(wù)實現(xiàn)的,程序運行任務(wù)時,硬件中斷服務(wù)程序能搶占任務(wù),且在中斷服務(wù)程序中也可能出現(xiàn)其他中斷服務(wù)程序來搶占的現(xiàn)象,甚至出現(xiàn)多級中斷嵌套。但由于中斷處理程序只做少量工作,會很快執(zhí)行完畢,因此沒有提交成功的任務(wù)不會被無限期掛起。 5 CC1100驅(qū)動實現(xiàn) 在TinyOS中,硬件抽

11、象體系構(gòu)造(Hardware Abstract Architecture, HAA)一般有3個不同的抽象層次,根據(jù)不同需要,可以靈活地實現(xiàn)不同芯片、不同平臺、甚至不同系統(tǒng)間的程序調(diào)用。但考慮到代碼數(shù)量、程序復(fù)雜度、節(jié)點資源等因素,在設(shè)計CC1100驅(qū)動程序時,需要借鑒TinyOS 3層抽象體系外,并兼顧節(jié)點存儲能力和運算能力。 5.1 TinyOS中的硬件抽象體系構(gòu)造 TinyOS 中的硬件抽象體系構(gòu)造一般分為3層,如圖2所示,分別為硬件表示層(HPL)、硬件抽象層(HAL)和硬件接口層(HIL).通過對硬件平臺開展不同層次的抽象,可以在系統(tǒng)開發(fā)中有區(qū)別地向上層屏蔽硬件特征,從而實現(xiàn)在不同程度

12、上隔離上層組件和物理平臺,便于程序移植。在功能上,硬件抽象組件相當(dāng)于底層硬件的驅(qū)動程序,上層組件通過硬件抽象組件提供的接口開展調(diào)用。 圖2 TinyOS 中的硬件抽象體系構(gòu)造 在圖2中,硬件表示層通過存儲器或端口映射對硬件平臺上某個模塊(如通信模塊、存儲模塊等)開展直接操作與控制,對上層屏蔽硬件特征,實現(xiàn)軟/硬件的分離,從而實現(xiàn)該模塊硬件功能的軟件語言表達。硬件接口層在硬件抽象層的根底上實現(xiàn)對該硬件的功能操作,這是該體系構(gòu)造的,通過調(diào)用該層接口,可以實現(xiàn)平臺上某個模塊提供的全部功能。硬件接口層是針對平臺上不同芯片(如一個硬件平臺上的2個通信模塊CC1100和CC2420)的更高層次的抽象,它通

13、過不同硬件抽象層提供的接口,把平臺上不同芯片的組件封裝成與底層組件芯片甚至硬件芯片無關(guān)的接口供高層調(diào)用,從而屏蔽不同芯片的差異,實現(xiàn)了兼容性較強的跨平臺抽象體 系構(gòu)造。 5.2 CC1100驅(qū)動體系構(gòu)造 在設(shè)計驅(qū)動程序時,由于CC1100硬件功能強大并能夠提供豐富的控制存放器資源,通過對這些存放器的配置可以實現(xiàn)基本功能,因此在設(shè)計時,筆者側(cè)重于構(gòu)建一個合理的組件層次構(gòu)造,以便模塊的修改與跨平臺應(yīng)用。在筆者開發(fā)的節(jié)點上只有一個通信模塊CC1100,未涉及多個無線收發(fā)芯片,加上節(jié)點處理、存儲能力的限制,在滿足需求的前提下,本文只設(shè)計了TinyOS 硬件抽象體系3層中的下2層,從而到達縮減代碼、節(jié)約

14、能量的目的。CC1100驅(qū)動體系構(gòu)造體系如圖3所示。 圖3 CC1100驅(qū)動體系構(gòu)造 在圖3中,硬件表示層配件HPLCC1100C向上層提供了3個接口:StdControl, Chipcon, CCFIFO,模塊HPLCC1100M完成對CC1100直接控制和基本功能的軟件表達,實現(xiàn)3個接口的全部命令執(zhí)行代碼。硬件抽象層配件CC1100RadioC向上層提供了4個接口:StdControl, PhyState, PhyPacket和CarriSns,模塊CC1100RadioM包含了CC1100全部功能的軟件實現(xiàn)。本文結(jié)合CC1100驅(qū)動體系構(gòu)造,簡要介紹其主要功能,即收發(fā)分組。 HAL層的C

15、C1100RadioM模塊是物理層組件構(gòu)造的高層,該模塊主要實現(xiàn)對分組的發(fā)送與接收、對無線發(fā)送模塊的狀態(tài)開展控制以及載波監(jiān)聽功能。其中,StdControl接口主要完成無線收發(fā)模塊的初始化和CC1100的啟動及停止;PhyState實現(xiàn)CC1100的各個工作狀態(tài)的切換,包括無線模塊的休眠和喚醒;PhyPacket實現(xiàn)分組的收發(fā),高層組件可以直接調(diào)用該接口開展數(shù)據(jù)發(fā)送或接收;CarriSns用來為上層提供載波監(jiān)聽功能,通過硬件引腳電平情況來判斷信道忙閑狀態(tài)。上述接口只是相關(guān)命令或事件的聲明,其真正實現(xiàn)在提供這些接口的模塊,即CC1100RadioM中。 HPL層的HPLCC1100M()模塊實現(xiàn)

16、對無線通信模塊的直接控制和軟件表達,實質(zhì)是對CC1100各個存放器開展讀寫。該模塊為整個硬件平臺提供了SPI同步串行通信機制,向上層提供了StdControl, Chipcon, CCFIFO接口。其中,StdControl接口完成CC1100復(fù)位并初始化底層芯片,包括SPI通信時鐘源選擇、波特率設(shè)置、引腳輸入輸出方式以及無線收發(fā)模塊的射頻頻率、調(diào)制方式、數(shù)據(jù)速率、信號檢測方式等;Chipcon接口實現(xiàn)控制存放器讀寫操作和命令控制器的發(fā)送,以實現(xiàn)對CC1100的配置和控制,其實現(xiàn)方式是SPI串行通信,CCFIFO主要完成TXFIFO和RXFIFO的數(shù)據(jù)連續(xù)讀寫操作,主要是在發(fā)送或接收數(shù)據(jù)時供C

17、C1100RadioM調(diào)用。上述接口只是相關(guān)命令或事件的聲明,其真正實現(xiàn)在提供這些接口的模塊即HPLCC1100M中。 當(dāng)上層組件把需要發(fā)送的數(shù)據(jù)遞交下來,并調(diào)用CC1100RadioM組件提供的接口PhyPacket中的發(fā)送命令時,CC1100RadioM會先調(diào)用HPLCC1100M中CCFIFO接口提供的寫FIFO命令把要發(fā)送的數(shù)據(jù)寫入發(fā)送緩存TXFIFO中,筆者使用CC1100的連續(xù)讀寫方式來實現(xiàn)。然后發(fā)送命令控制器STX使能CC1100開始發(fā)送分組,并把CC1100狀態(tài)切換到發(fā)送狀態(tài)。本文使用了CC1100的通用數(shù)字輸出引腳GDO2,通過適當(dāng)配置,該引腳電平會在CC1100發(fā)送/接收完

18、前導(dǎo)碼時產(chǎn)生上升沿跳變,在整個分組發(fā)送/接收完成后產(chǎn)生下降沿跳變??梢酝ㄟ^查詢GDO2引腳電平來判斷分組是否寫入完畢。當(dāng)發(fā)送數(shù)據(jù)寫完以后,CC1100會按第2節(jié)所述的分組格式對數(shù)據(jù)開展封裝,上層組件通過查詢GDO2引腳確定分組發(fā)送完畢后,根據(jù)需要再發(fā)送命令控制器把CC1100置于空閑或休眠狀態(tài)。 接收分組時節(jié)點會先檢測信道中的前導(dǎo)碼,如果按指定方式檢測到指定數(shù)量的前導(dǎo)碼,CC1100的GDO2引腳電平會產(chǎn)生一個上升沿跳變,上層組件得知引腳跳變后,會把CC1100切換到接收狀態(tài)并調(diào)用HPLCC1100M組件中的讀取接收緩存RXFIFO命令,然后開始讀取接收緩存,讀取完CC1100接收緩存中的分組并把有用數(shù)據(jù)提取出來交給上層后,可以根據(jù)需要把它置于空閑或休眠狀態(tài)。在程序?qū)崿F(xiàn)過程中,為了節(jié)約節(jié)點能源,減少MSP430F1611的活動時間,筆者沒有使用等待查詢方式而采用硬件中斷方式,即使用了GDO2引腳的電平跳

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論