資深移動(dòng)通信工程師學(xué)習(xí)zigbee心得_第1頁
資深移動(dòng)通信工程師學(xué)習(xí)zigbee心得_第2頁
資深移動(dòng)通信工程師學(xué)習(xí)zigbee心得_第3頁
資深移動(dòng)通信工程師學(xué)習(xí)zigbee心得_第4頁
資深移動(dòng)通信工程師學(xué)習(xí)zigbee心得_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

資深移動(dòng)通信工程師學(xué)習(xí)zigbee心得資深移動(dòng)通信工程師學(xué)習(xí)zigbee心得

201*-11-12

物理層的PIB是什么概念?有什么用?201*-11-18

物理層的CCA.物理層是怎么知道信道的被占用狀況.

AODV+ENY是什么概念?

AODVjr協(xié)議[2]在考慮了無線節(jié)點(diǎn)的有限移動(dòng)性之后,以最大限度降低節(jié)點(diǎn)功耗為目的,

對(duì)AODV協(xié)議進(jìn)展了簡化。AODVjr協(xié)議僅保存了AODV協(xié)議按需路由的動(dòng)態(tài)特性,而將HELLO消息、路由錯(cuò)誤信息、問詢序列號(hào)等AODV協(xié)議為了適應(yīng)節(jié)點(diǎn)移動(dòng)性提出的優(yōu)化措施統(tǒng)統(tǒng)省略,對(duì)AODV協(xié)議進(jìn)展了最大限度的簡化。受益于這樣的簡化,AODVjr協(xié)議在能耗方面極大地優(yōu)于AODV協(xié)議,因此AODVjr協(xié)議被廣泛應(yīng)用于各種無線傳感器網(wǎng)絡(luò)。AODVjr協(xié)議最大的問題是沒有考慮路由的安全性,不僅數(shù)據(jù)在傳輸過程中極有可能被篡改或有意丟棄,路徑信息本身也有可能被更改。

為了維持路徑的可用性,路徑的生命期只有在收到數(shù)據(jù)包時(shí)才進(jìn)展更新,而發(fā)送數(shù)據(jù)包不進(jìn)展路徑更新。

Zigbee和adhoc網(wǎng)絡(luò)不同.在adhoc網(wǎng)絡(luò)中各個(gè)結(jié)點(diǎn)間的地位是一樣的.而zigbee中網(wǎng)元間的地位是不一樣的.

建網(wǎng)過程中,協(xié)調(diào)器對(duì)信道的主導(dǎo)掃描是干什么?發(fā)出信標(biāo)懇求又是干什么?PANID又是依據(jù)什么機(jī)制確定的?64為IEEE地址的作用是什么?

一個(gè)終端節(jié)點(diǎn)第一開機(jī),檢測信道,假如有1個(gè)以上信道上有信標(biāo),這個(gè)節(jié)點(diǎn)怎么做選擇呢?是不是所以拓?fù)錁?gòu)造的地址安排算法都是:An=Ak+Cship(d)*Rm+n?還是,只是樹狀拓?fù)錁?gòu)造時(shí),按這個(gè)算法安排地址呢?

官方的網(wǎng)絡(luò)層的路由協(xié)議是什么?是AODVjr和Cluster-Tree都有嗎?RF4CE是什么?

GTS是什么概念?

Beacon的一個(gè)作用是注冊(cè)/識(shí)別一個(gè)PAN?是什么概念?

路由表入口是什么概念?

CAPcontentionaccessperiodCFPcontentionfreeperiodGTSGuaranteedtimeslot

201*年12月31日星期五聽視頻Zigbee和藍(lán)牙紅外wifi是一個(gè)檔次的概念

201*年公布第一個(gè)zigbee標(biāo)準(zhǔn)?,F(xiàn)在有zigbee201*201*各個(gè)版本。

802.15只定義了物理層和MAC層。Zigbee在802.15上又定義了網(wǎng)絡(luò)層和應(yīng)用層。應(yīng)用層上可以連240個(gè)應(yīng)用層設(shè)備。

201*年1月4日星期二

201*年2月15日星期二學(xué)習(xí)《Zigbee無線組網(wǎng)技術(shù)的討論》心得

1找到適宜的信道后,協(xié)調(diào)器將為網(wǎng)絡(luò)選定一個(gè)網(wǎng)絡(luò)標(biāo)識(shí)符(PANID,取值_

個(gè)PANID是16位短地址中的一個(gè)嗎?不是吧

2主動(dòng)掃描和被動(dòng)掃描有區(qū)分嗎?無論怎么樣,掃描一遍不行嗎?

201*年2月16日星期三

1本文通過減小每個(gè)節(jié)點(diǎn)參加網(wǎng)絡(luò)的時(shí)間及原語數(shù)來到達(dá)減小這種沖突的目的,從參加網(wǎng)絡(luò)的時(shí)間分析,參加網(wǎng)絡(luò)的絕大局部時(shí)間花費(fèi)在主動(dòng)掃描、信標(biāo)周期和等待協(xié)調(diào)器處理時(shí)間上,而前兩者時(shí)間是固定不變的,但是等待協(xié)調(diào)器處理的時(shí)間卻是可變的,和協(xié)調(diào)器要處理的原語數(shù)量有關(guān),可以通過削減原語的數(shù)量,減小協(xié)調(diào)器處理這些原語通信握手過程所需要的時(shí)間,這樣協(xié)調(diào)器就能更快的響應(yīng)節(jié)點(diǎn)的關(guān)聯(lián)參加。

2節(jié)點(diǎn)參加過程是個(gè)半盲目的過程。估量是為了削減接入時(shí)間和削減簡單度的緣由吧。節(jié)點(diǎn)向協(xié)調(diào)器發(fā)Associationrequest后,協(xié)調(diào)器會(huì)發(fā)一個(gè)ACK。這個(gè)ACK只是用來說”哦“。

然后節(jié)點(diǎn)要等,再做一個(gè)CSMA?這里做CSMA估量是為了防沖突吧,估量不是必需要做的。接著,節(jié)點(diǎn)再去問協(xié)調(diào)器要地址等信息。這些信息應(yīng)當(dāng)在Associationresponse里。

假如節(jié)點(diǎn)等了一段時(shí)間,協(xié)調(diào)器不通過信令給他安排信息,節(jié)點(diǎn)會(huì)自己從協(xié)調(diào)器的信標(biāo)里提取響應(yīng)命令(?比擬奇妙)這個(gè)響應(yīng)命令里會(huì)有地址信息嗎?

傳統(tǒng)MAC設(shè)計(jì)目標(biāo)是:最大化吞吐量、最小時(shí)延、公正性

ZIGBEEMAC設(shè)計(jì)目標(biāo)是:最小化能耗、自組織力量。所以速率、時(shí)延、公正性都要做犧牲。

S-MAC提出用3種方法來削減能耗并支持自組織:1節(jié)點(diǎn)定期睡眠以削減空閑監(jiān)聽

2鄰近節(jié)點(diǎn)組成虛擬簇,使睡眠調(diào)度時(shí)間自動(dòng)同步3用消息傳遞方法來削減時(shí)延

在星型網(wǎng)拓?fù)錁?gòu)造中,網(wǎng)絡(luò)協(xié)調(diào)者定義了整個(gè)網(wǎng)絡(luò)的時(shí)分復(fù)用和多址接入方式。

依據(jù)業(yè)務(wù)流性質(zhì),zigbee應(yīng)用可以分成連續(xù)性、周期性(如流速計(jì))和連續(xù)性(如家電掌握)

三種。

Zigbee協(xié)議棧只要8位處理器再加4kbrom和32kbrom就可以了。SD和BI長度是由網(wǎng)絡(luò)協(xié)調(diào)器打算的。

超幀的的活潑期間劃分為3個(gè)階段:信標(biāo)發(fā)送時(shí)段、競爭訪問時(shí)段CAP、非競爭訪問時(shí)段CFP。超幀的活潑期被劃分成(默認(rèn)16)個(gè)等長的時(shí)隙。時(shí)隙個(gè)數(shù)、時(shí)隙長度等參數(shù)有協(xié)調(diào)者打算,并通過信標(biāo)幀播送

在超幀的競爭訪問階段,節(jié)點(diǎn)使用帶時(shí)隙的CSMA-CA訪問機(jī)制,并且任何通信都必需在競爭訪問時(shí)段完畢前完成。

GTS,在非競爭時(shí)段,這個(gè)時(shí)段被分成若干個(gè)GTS。每個(gè)GTS又由多個(gè)時(shí)隙組成。

2種通信模式:1帶信標(biāo)帶時(shí)隙的CSMA-CA

2不帶信標(biāo)使用非時(shí)隙的CSMA-CA機(jī)制訪問信道確認(rèn)幀不需要使用CSMA-CA機(jī)制

MAC幀通用構(gòu)造:幀頭、負(fù)荷、幀尾幀頭:幀掌握域幀號(hào)地址域

負(fù)荷:是可變的,詳細(xì)內(nèi)容由幀類型打算幀尾:16位CRC校驗(yàn)嗎

16位地址是一個(gè)zigbee網(wǎng)的內(nèi)部節(jié)點(diǎn),是協(xié)調(diào)者來安排的,在一個(gè)網(wǎng)內(nèi)是唯一的。也就意為著一個(gè)網(wǎng)做多有65000個(gè)左右的端點(diǎn)。PAN標(biāo)識(shí)也是16位的。

64為地址是,設(shè)備的出廠地址,是全球唯一的。類似每個(gè)計(jì)算機(jī)網(wǎng)卡的MAC地址。

信標(biāo)幀其中的待發(fā)送數(shù)據(jù)目標(biāo)地址字段的作用是:在協(xié)調(diào)器要給某個(gè)節(jié)點(diǎn)用間接發(fā)送方式時(shí),節(jié)點(diǎn)會(huì)去監(jiān)聽信標(biāo)幀的這個(gè)字段。假如在這個(gè)字段里有我的地址,那節(jié)點(diǎn)會(huì)隨后發(fā)起向

協(xié)調(diào)器要數(shù)據(jù)的流程。

樓教師膠片中的和藍(lán)牙比擬中,zigbee有254個(gè)節(jié)點(diǎn)設(shè)備。這個(gè)256是怎么來的?一個(gè)主節(jié)點(diǎn)下可以聯(lián)256個(gè)節(jié)點(diǎn)。簡潔理解,在星型拓?fù)淠J较?,一個(gè)FFD可以聯(lián)254個(gè)RFD。

擴(kuò)展閱讀:zigbee總結(jié)zigbee和GSCCDMA學(xué)習(xí)筆記

關(guān)于ZIGBEE技術(shù)

Zigbee的由來

在藍(lán)牙技術(shù)的使用過程中,人們發(fā)覺藍(lán)牙技術(shù)盡管有很多優(yōu)點(diǎn),但仍存在很多缺陷。對(duì)工業(yè),家庭自動(dòng)化掌握和遙測遙控領(lǐng)域而言,藍(lán)牙技術(shù)顯得太簡單,功耗大,距離近,組網(wǎng)規(guī)模太小等,而工業(yè)自動(dòng)化對(duì)無線通信的需求越來越劇烈。正因此,經(jīng)過人們長期努力,Zigbee協(xié)議在201*年中通過后,于201*正式問世了。

Zigbee是什么

Zigbee是一個(gè)由可多到65000個(gè)無線數(shù)傳模塊組成的一個(gè)無線數(shù)傳網(wǎng)絡(luò)平臺(tái),非常類似現(xiàn)有的移動(dòng)通信的CDMA網(wǎng)或GSM網(wǎng),每一個(gè)Zigbee網(wǎng)絡(luò)數(shù)傳模塊類似移動(dòng)網(wǎng)絡(luò)的一個(gè)基站,在整個(gè)網(wǎng)絡(luò)范圍內(nèi),它們之間可以進(jìn)展相互通信;每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)間的距離可以從標(biāo)準(zhǔn)的75米,到擴(kuò)展后的幾百米,甚至幾公里;另外整個(gè)Zigbee網(wǎng)絡(luò)還可以與現(xiàn)有的其它的各種網(wǎng)絡(luò)連接。例如,你可以通過互聯(lián)網(wǎng)在北京監(jiān)控云南某地的一個(gè)Zigbee掌握網(wǎng)絡(luò)。

不同的是,Zigbee網(wǎng)絡(luò)主要是為自動(dòng)化掌握數(shù)據(jù)傳輸而建立,而移動(dòng)通信網(wǎng)主要是為語音通信而建立;每個(gè)移動(dòng)基站價(jià)值一般都在百萬元人民幣以上,而每個(gè)Zigbee—基站‖卻不到1000元人民幣;每個(gè)Zigbee網(wǎng)絡(luò)節(jié)點(diǎn)不僅本身可以與監(jiān)控對(duì)對(duì)象,例如傳感器連接直接進(jìn)展數(shù)據(jù)采集和監(jiān)控,它還可以自動(dòng)中轉(zhuǎn)別的網(wǎng)絡(luò)節(jié)點(diǎn)傳過來的數(shù)據(jù)資料;除此之外,每一個(gè)Zigbee網(wǎng)絡(luò)節(jié)點(diǎn)(FFD)還可在自己信號(hào)掩蓋的范圍內(nèi),和多個(gè)不擔(dān)當(dāng)網(wǎng)絡(luò)信息中轉(zhuǎn)任務(wù)的孤立的子節(jié)點(diǎn)(RFD)無線連接。

每個(gè)Zigbee網(wǎng)絡(luò)節(jié)點(diǎn)(FFD和RFD)可以可支持多到31個(gè)的傳感器和受控設(shè)備,每一個(gè)傳感器和受控設(shè)備終可以有8種不同的接口方式??梢圆杉蛡鬏敂?shù)字量和模擬量。Zigbee技術(shù)的應(yīng)用領(lǐng)域

Zigbee技術(shù)的目標(biāo)就是針對(duì)工業(yè),家庭自動(dòng)化,遙測遙控,汽車自動(dòng)化、農(nóng)業(yè)自動(dòng)化和醫(yī)療護(hù)理等,例如燈光自動(dòng)化掌握,傳感器的無線數(shù)據(jù)采集和監(jiān)控,油田,電力,礦山和物流治理等應(yīng)用領(lǐng)域。另外它還可以對(duì)局部區(qū)域內(nèi)移動(dòng)目標(biāo)例如城市中的車輛進(jìn)展定位.

通常,符合如下條件之一的應(yīng)用,就可以考慮采納Zigbee技術(shù)做無線傳輸:1.需要數(shù)據(jù)采集或監(jiān)控的網(wǎng)點(diǎn)多;

2.要求傳輸?shù)臄?shù)據(jù)量不大,而要求設(shè)備本錢低;3.要求數(shù)據(jù)傳輸可性高,安全性高;

4.設(shè)備體積很小,不便放置較大的充電電池或者電源模塊;5.電池供電;

6.地形簡單,監(jiān)測點(diǎn)多,需要較大的網(wǎng)絡(luò)掩蓋;7.現(xiàn)有移動(dòng)網(wǎng)絡(luò)的掩蓋盲區(qū);

8.使用現(xiàn)存移動(dòng)網(wǎng)絡(luò)進(jìn)展低數(shù)據(jù)量傳輸?shù)倪b測遙控系統(tǒng)。

9.使用GPS效果差,或本錢太高的局部區(qū)域移動(dòng)目標(biāo)的定位應(yīng)用。Zigbee技術(shù)的特點(diǎn)

省電:兩節(jié)五號(hào)電池支持長達(dá)6個(gè)月到2年左右的使用時(shí)間。

牢靠:采納了碰撞避開機(jī)制,同時(shí)為需要固定帶寬的通信業(yè)務(wù)預(yù)留了專用時(shí)隙,避開了發(fā)送數(shù)據(jù)時(shí)的競爭和沖突;節(jié)點(diǎn)模塊之間具有自動(dòng)動(dòng)態(tài)組網(wǎng)的功能,信息在整個(gè)Zigbee網(wǎng)絡(luò)中通過自動(dòng)路由的方式進(jìn)展傳輸,從而保證了信息傳輸?shù)睦慰啃浴?/p>

時(shí)延短:針對(duì)時(shí)延敏感的應(yīng)用做了優(yōu)化,通信時(shí)延和從休眠狀態(tài)激活的時(shí)延都特別短。

網(wǎng)絡(luò)容量大:可支持達(dá)65000個(gè)節(jié)點(diǎn)。

安全:ZigBee供應(yīng)了數(shù)據(jù)完整性檢查和鑒權(quán)功能,加密算法采納通用的AES-128。

高保密性:64位出廠編號(hào)和支持AES-128加密。Zigbee的進(jìn)展前景

Zigbee技術(shù)和RFID技術(shù)在201*年就被列為當(dāng)今世界進(jìn)展最快,市場前景最寬闊的十大最新技術(shù)中的兩個(gè)。關(guān)于這方面的報(bào)道,你只需在百度,或GOOGLE搜尋欄中鍵入—Zigbee‖,你就會(huì)看到大量的有關(guān)報(bào)道??傊?,今后若干年,都將是Zigbee技術(shù)飛速進(jìn)展的時(shí)期。Zigbee技術(shù)在我國的應(yīng)用狀況

盡管,國內(nèi)不少人已經(jīng)開頭關(guān)注Zigbee這們新技術(shù),而且也有不少單位開頭涉足Zigbee技術(shù)的開發(fā)工作,然而,由于Zigbee本身是一種新的系統(tǒng)集成技術(shù),應(yīng)用軟件的開發(fā)必需和網(wǎng)絡(luò)傳輸,射頻技術(shù)和底層軟硬件掌握技術(shù)結(jié)合在一起。因而深入理解這個(gè)來自國外的新技術(shù),再組織一個(gè)在這幾個(gè)方面都有豐富閱歷的配套的隊(duì)伍,本身就不是一件簡單的事情,因而,到目前為止,國內(nèi)目前除了成都西谷曙光數(shù)字技術(shù)有限公司,真正將Zigbee技術(shù)開發(fā)成產(chǎn)品,并勝利地用于解決幾個(gè)領(lǐng)域的實(shí)際生產(chǎn)問題而外,尚未見到其它報(bào)道。Zigbee和現(xiàn)有移動(dòng)網(wǎng)(GPRS,CDMA-1X)的比擬

1.無網(wǎng)絡(luò)使用費(fèi):使用移動(dòng)網(wǎng)需要長期支付網(wǎng)絡(luò)使用費(fèi),而且是按節(jié)點(diǎn)終端的數(shù)量計(jì)算的,而Zigbee沒有這筆費(fèi)用;

2.設(shè)備投入低:使用移動(dòng)網(wǎng)需要購置移動(dòng)終端設(shè)備,每個(gè)終端的價(jià)格在人民幣1000元上下,而使用Zigbee網(wǎng)絡(luò),不僅Zigbee網(wǎng)絡(luò)節(jié)點(diǎn)模塊(相當(dāng)于基站)費(fèi)用每只人民幣不到1000元,而且,主要使用的網(wǎng)絡(luò)子節(jié)點(diǎn)(相當(dāng)于手機(jī))的價(jià)格還要低得多;

3.通信更牢靠:由于現(xiàn)有移動(dòng)網(wǎng)主要是為手機(jī)通信而設(shè)計(jì)的,盡管CDMA-1X和GPRS可以進(jìn)展數(shù)據(jù)通信,但實(shí)踐發(fā)覺,不僅通信數(shù)率比設(shè)計(jì)速率低許多,而且數(shù)據(jù)通信的牢靠信也存在肯定的問題。而Zigbee網(wǎng)絡(luò)則是特地為掌握數(shù)據(jù)的傳輸而設(shè)計(jì)的,因而掌握數(shù)據(jù)的傳輸具有相當(dāng)?shù)谋WC。

4.高度的敏捷性和低本錢:首先,通過使用掩蓋距離不同,功能不同的Zigbee網(wǎng)絡(luò)節(jié)點(diǎn),以及其它非Zigbee系統(tǒng)的低本錢的無線收發(fā)模塊,建立起一個(gè)Zigbee局部自動(dòng)化掌握網(wǎng),(這個(gè)網(wǎng)絡(luò)可以是星型,樹狀,網(wǎng)狀及其共同組成的復(fù)合網(wǎng)構(gòu)造)再通過互聯(lián)網(wǎng)或移動(dòng)網(wǎng)與遠(yuǎn)端的計(jì)算機(jī)相連,從而實(shí)現(xiàn)低本錢,高效率的工業(yè)自動(dòng)化遙測遙控;

5.比起現(xiàn)有的移動(dòng)網(wǎng)來,盡管Zigbee僅僅只是一個(gè)局域網(wǎng),掩蓋區(qū)域有限,但它卻可以與現(xiàn)有的移動(dòng)網(wǎng),互聯(lián)網(wǎng)和其它通信網(wǎng)絡(luò)相連接,將很多Zigbee局域網(wǎng)相互連成為一個(gè)整體。有效的解決移動(dòng)網(wǎng)的盲區(qū)掩蓋問題:我們知道,現(xiàn)有移動(dòng)網(wǎng)絡(luò)在很多地方存在盲區(qū),特殊是鐵路,大路,油田,礦山等野外,更是如此。而增加一個(gè)移動(dòng)基站或直放站的費(fèi)用是相當(dāng)可觀的,此時(shí)使用Zigbee網(wǎng)絡(luò)進(jìn)展盲區(qū)掩蓋不僅經(jīng)濟(jì)有效,而且往往是現(xiàn)在唯一可行手段。Zigbee與現(xiàn)有數(shù)傳電臺(tái)的比擬

1.牢靠性高:由于Zigbee模塊的集成度遠(yuǎn)比一般數(shù)傳電臺(tái)高,分別元器件少,因而牢靠性更高;

2.使用便利安全:由于集成度高,比起一般數(shù)傳電臺(tái)來,Zigbee收法模塊體積可以做得很小,而且功耗低,例如成都西谷公司遠(yuǎn)距離傳輸模塊(2-5公里),最大放射電流比一個(gè)CDMA手機(jī)還要小很多,因而很簡單集成或直接安放在到設(shè)備之中,不僅使用便利,而且在戶外使用時(shí),不簡單受到破壞;

3.抗干擾力強(qiáng),保密性好,誤碼率低:Zigbee收發(fā)模塊使用的是2.4G直序擴(kuò)頻技術(shù),比起一般FSK,ASK和跳頻的數(shù)傳電臺(tái)來,具有更好的抗干擾力量,和更遠(yuǎn)的傳輸距離;參閱我們網(wǎng)站中有關(guān)CDMA直序擴(kuò)頻技術(shù)的優(yōu)越性爭論,和Cypress公司有關(guān)試驗(yàn)報(bào)道。

4.免費(fèi)頻段:Zigbee使用的是免費(fèi)頻段,而很多數(shù)傳電臺(tái)所使用的頻段不僅需要申請(qǐng),而且每年都需要向國家無委會(huì)交納相當(dāng)?shù)念l率使用費(fèi)。

5.價(jià)格低:Zigbee數(shù)傳模塊的價(jià)格只有具有類似功能的數(shù)傳電臺(tái)的幾分之一;(2.4G,250kps,3-5公里距離DSSS數(shù)傳模塊每只不到200元人民幣)

供應(yīng)低本錢,高牢靠性的無線數(shù)傳互聯(lián)網(wǎng)平臺(tái)(包括軟件和硬件),以及相關(guān)技術(shù)支持,以滿意不同客戶的詳細(xì)需要,就是我們的效勞宗旨。

學(xué)習(xí)Zstack之1

Zstack狀況:

本人采納的是TI的Zstack1.4.3協(xié)議,據(jù)說這個(gè)需要IAR7.30B及以上版本,而目前市面上又沒有破解,所以用的人很少,這也是我的時(shí)機(jī)!呵呵?。ㄉ敌τ悬c(diǎn)多,關(guān)鍵是WORD里沒有表情符號(hào),不能正常表達(dá)我此時(shí)的心情?。?/p>

正式開頭:

開頭之前在說一句:從TI網(wǎng)站上下載的Zstack的方法就不介紹了。否則就是從-1開頭了而不是從0開頭了-----------------我是這么覺得的!

第一步:安裝Zstack

從TI官方網(wǎng)站上下載的Zstack為:swrc072c.zip,我想這個(gè)壓縮包大家都熟悉。解壓之后為:ZStack-CC2430-1.4.3.exe文件。這個(gè)安裝文件大家都會(huì)了。默認(rèn)安裝路徑為:C:\\TexasInstruments\\ZStack-1.4.3。安裝之后在C:\\TexasInstruments\\ZStack-1.4.3名目下有各PDF文檔為:GettingStartedGuideCC2430.pdf,不用多說,這個(gè)確定是要看的。既然把它放到這么前面,說明它是入門中的入門文檔。下面就簡潔介紹下這個(gè)文檔:

1、介紹了安裝ZStack-CC2430-1.4.3.exe需要的硬件軟件條件:需要電腦、操作系統(tǒng)為Windows201*或WindowsXP。至于更高或更低版本的本人沒有嘗試。2、講了安裝流程。這個(gè)有點(diǎn)多余了,這年月哪個(gè)有電腦的沒有安裝上百上千次的軟件???但是需要強(qiáng)調(diào)的是安裝路徑----默認(rèn)就好!3、接下來就是讓我們看的第一個(gè)文檔為:

Start->Programs->TexasInstruments->ZStack-1.4.3->Z-StackUser’sGuide,既然讓我看我就來看看這個(gè)文檔??!

其次步:Z-Stack用戶指導(dǎo)

這個(gè)文檔的更新時(shí)間為:201*年12月21日----應(yīng)當(dāng)還是比擬新的版本。由于本人英文的卻有限,就不翻譯了,掃瞄一遍,把也許意思說下就可以了:1、介紹

1.1、適用范圍

本文檔適用于CC2430ZigBee開發(fā)板----CC2430ZDK。2、產(chǎn)品包描述(TI供應(yīng)的CC2430ZDK工具包)2.1、安裝包內(nèi)容

這個(gè)就是上面提到的的ZStack-CC2430-1.4.3.exe安裝之后的全部內(nèi)容了。說白了就是包含Zstack開發(fā)所需要的全部軟件和文檔資料等。2.2、開發(fā)板介紹

兩塊SmartRF04EB評(píng)估版,每個(gè)都可以用于CC2430EM評(píng)估模塊。如圖1-1所示:

Figure1:ChipconSmartRF04EBEvaluationBoardwithCC2430EM5塊CC2430DB評(píng)估板,如圖1-2所示:

Figure2:ChipconCC2430DBDevelopmentBoard

10個(gè)SOC_BB評(píng)估板,每個(gè)都可以用于CC2430EM或CC2431EM。如圖1-3所示:

Figure3:ChipconSOC_BBBatteryBoard2.3、電纜

也就是包含開發(fā)包所需要的電纜,如RS232串口線,USB線等等附屬配件。3、安裝配置3.1、主機(jī)配置

一臺(tái)個(gè)人計(jì)算機(jī)----也就是電腦哈。我想玩嵌入式的應(yīng)當(dāng)都有,而現(xiàn)今不過時(shí)的配置就可以:下面是最低配置.NET1.1架構(gòu)WindowsXPServicePack1(i假如是WindowsXP)1個(gè)串口(也就是RS232接口)s1USB接口

個(gè)人認(rèn)為要求已經(jīng)相當(dāng)?shù)土?,假如你的電腦沒有這配置,個(gè)人劇烈建議立刻扔掉!不過如今筆記本電腦很少有串口的,所以建議使用臺(tái)式電腦,而且裝機(jī)的時(shí)候肯定要把串口引出,否則就比擬麻煩了!3.2、目標(biāo)板需求

其實(shí)也是開發(fā)環(huán)境需求---IAREW8051。目前需要的版本為7.30B及以上。要求還是比擬高的,由于目前這個(gè)版本沒有破解的。但是在上有30天評(píng)估版下載。這個(gè)版本使用肯定要當(dāng)心,由于假如30天之后僅僅是卸載IAR重新安裝是沒有用的,一般最笨的方法是重新安裝操作系統(tǒng)。解決這個(gè)問題最好的方法就是買正版,呵呵,我想絕大多數(shù)像我這樣的中國人都不會(huì)買的。除此之外最好的方法就是破解,但是目前這個(gè)破解極少,都是需要收費(fèi)的,而且都是國外網(wǎng)站才有,所以我們就只好期望中國的高人抓緊破解并公開了!固然其他解決方法就相對(duì)來說許多了,比方安裝后弄個(gè)復(fù)原點(diǎn)什么的;或者安裝后我不停地使用(每天24小時(shí)),30天之后我覺得你也學(xué)會(huì)了,就不用IAR這個(gè)版本了,說不定就移植到低版本上去了;等等類似之法我覺得都可以的。本人采納的是本方法中相比照較聰慧的,也是一位高人告知我的:裝個(gè)虛擬操作系統(tǒng),在虛擬操作系統(tǒng)下時(shí)間可以隨時(shí)更改,讓它始終停留在某個(gè)時(shí)間,主要30天的試用就比擬慢長了,只要你不要遺忘改那時(shí)間。4、產(chǎn)品安裝過程4.1、安裝Z-Stack

這個(gè)也就是安裝ZStack-CC2430-1.4.3.exe的過程。4.2、IAR安裝

一般來說安裝選擇默認(rèn)路徑,但是自定義路徑也不會(huì)出問題的。留意IAR版本7.30B及以上版本才可以運(yùn)行1.4.3協(xié)議。4.3、設(shè)備IEEE地址

每個(gè)CC2430DB,CC2430EM,和CC2431EM都已經(jīng)排列了一個(gè)唯一的64位物理地址(IEEE地址),這個(gè)地址已經(jīng)寫到了CC2430內(nèi)部FLASH里面,在CC2430DB,CC2430EM,和CC2431EM板的底部有這個(gè)地址標(biāo)簽。

這個(gè)地址被寫入到FLASH的0x1FFF8地址中,留意這個(gè)地址也可以更改的,通過些FLASH軟件,一般0xFFFFFFFFFFFFFFFF地址被認(rèn)為是無效地址。5、配置并試用Z-Stack5.1、配置Z-Stack

這個(gè)詳見5.3節(jié)。5.2、規(guī)律類型

這里主要是介紹了ZIGBEE協(xié)議中的三種設(shè)備類型:

ZigBee協(xié)調(diào)者(ZC):這個(gè)設(shè)備被配置為初始化并建立一個(gè)PAN網(wǎng)絡(luò)

ZigBee路由器(ZR):該設(shè)備被配置為參加一個(gè)存在的網(wǎng)絡(luò),可以參加一個(gè)協(xié)調(diào)求或路由器,然后允許其他設(shè)備參加它,在網(wǎng)絡(luò)中路有數(shù)據(jù)信息。

ZigBee終端節(jié)點(diǎn)(ZED):該設(shè)備被配置為參加一個(gè)存在的網(wǎng)絡(luò),可以參加一個(gè)協(xié)調(diào)求或路由器。

5.3、建立樣品應(yīng)用設(shè)備:SampleApp

根本上就是采納SampleApp應(yīng)用中的Demo例子來演示整個(gè)流程,就是采納一個(gè)協(xié)調(diào)器和一個(gè)或多個(gè)路由器來形成一個(gè)ZigBee網(wǎng)絡(luò)演示。在該例子中主要通過SmartRF04EB板上的某些跳線來完成設(shè)備類型的選型,固然這個(gè)方法在程序中是需要推斷哪個(gè)按鍵被拉低或拉高,對(duì)于做個(gè)設(shè)計(jì)的來說應(yīng)當(dāng)是相當(dāng)好理解的。

申明:由于本人很窮,所以沒錢買TI原裝開發(fā)包,固然也就沒有上面提到的硬件,本人采納的是某家公司(為了避開廣告,這里就不說明白)的硬件系統(tǒng)。5.4、建立一個(gè)SampleLight協(xié)調(diào)器設(shè)備

至于提到的硬件連接這里一律省略。

無疑:首先要翻開對(duì)應(yīng)工程,如圖1-4所示:

圖1-4

在工作窗口中選擇DemoEB,如圖1-5所示:圖1-5

然后選擇工程菜單(Project)下的全部編譯(RebuildAll)選項(xiàng),如圖1-6所示:

圖1-6

然后選擇工程菜單(Project)下的調(diào)試(Debug)選項(xiàng),如圖1-7所示:

圖1-7

下載完之后就可以退出調(diào)試狀態(tài),通過選中調(diào)試菜單下的停頓調(diào)試選項(xiàng),如圖1-8所示:

圖1-8

根據(jù)此種方法下載至少兩個(gè)CC2430EM模塊,就可以進(jìn)展Demo演示了。6、Z-Stack示范

略至于具體的示范流程,這里先不說了,由于本人采納的硬件與原裝有點(diǎn)差異,即使根據(jù)這個(gè)方法下載仍舊不能演示,由于我這個(gè)不能用跳線來選擇設(shè)備類型。

所以我必需進(jìn)入程序把跳線推斷程序進(jìn)展簡潔必要的修改才能演示。該文檔介紹的演示結(jié)果及現(xiàn)象都是基于CHIPCON原廠評(píng)估板。7.PanID和通道(Channel)選擇

ZigBee協(xié)議標(biāo)準(zhǔn)規(guī)定,一個(gè)14位的個(gè)域網(wǎng)標(biāo)志符(PANID)來標(biāo)識(shí)唯一的一個(gè)網(wǎng)絡(luò)。Z-Stack可以用兩種方式由用戶自己選擇其PANID,當(dāng)ZDAPP_CONFIG_PAN_ID值設(shè)置不為0xFFFF時(shí),那么設(shè)備建立或參加網(wǎng)絡(luò)的PANID由ZDAPP_CONFIG_PAN_ID指定;假如設(shè)置ZDAPP_CONFIG_PAN_ID為0xFFFF;那么設(shè)備就將建立或參加它發(fā)覺網(wǎng)絡(luò)中的—最好‖的網(wǎng)絡(luò)。關(guān)于這里提到的—最好‖的網(wǎng)絡(luò),我覺得可能是有些參數(shù)評(píng)估,只不過這里沒有具體的介紹,在后續(xù)文檔中應(yīng)當(dāng)有介紹的。

在2.4G頻段上,IEEE802.15.4/ZIGBEE標(biāo)準(zhǔn)規(guī)定了16各頻道。用戶可以通過選擇DEFAULT_CHANLIST不同的值可以選擇不同的頻道,其頻道如圖1-9所示。改協(xié)議默認(rèn)頻道為0xB及0x00000800。

圖1-9

DEFAULT_CHANLIST和ZDAPP_CONFIG_PAN_ID都作為IARIDE中的編譯選項(xiàng)可以進(jìn)展設(shè)置,在應(yīng)用文件中的…\\Projects\\Tools\\CC2430DB名目下的f8wConfig.cfg文件中有相應(yīng)設(shè)置,如圖1-10所示。

圖1-10

學(xué)習(xí)Zstack之2

上節(jié)根本上初步熟悉了Zstack的一些狀況,今日連續(xù)我的學(xué)習(xí),翻開Sample例子看看,畢竟ZIGBEE是怎么回事。

毫無疑問:假如是第一次翻開這個(gè)例子工程,確定很模糊,由于此時(shí)我模糊了。對(duì)圖2-1我簡直是相當(dāng)模糊。圖2-1

這么多文件夾,翻開之后又有那么多文件,從何看起?不要焦急,特殊是有些人拿到之后,啥都不知道的人第一個(gè)問題就是:我要實(shí)現(xiàn)XXX,在哪修改或者在哪添加我的函數(shù)呢?但凡我遇到這樣的客戶,我就可以確定他技術(shù)部咋的。就連我這個(gè)外行都知道,不把這些弄明白,就是實(shí)現(xiàn)XXX只需要修改一個(gè)字母,那也不知道在哪改???所以我不急,但是我也理解許多客戶,由于有時(shí)候工程催的比擬急,究竟老板都是外行嘛!

兩條路:1就是先看主函數(shù),2就是看看TI供應(yīng)例子說明文檔沒有。我這里先看看主函數(shù)再說哈!由于我就知道從主函數(shù)看起.

沒方法也許每個(gè)文件夾找啊,主函數(shù)的特征還是比擬明明顯的,見圖2-2所示:

圖2-2

下面把主函數(shù)復(fù)制過來簡潔看下:ZSEGintmain(void){

//Turnoffinterrupts------------關(guān)閉中斷osal_int_disable(INTS_ALL);

//InitializeHAL-----------初始化HAL,關(guān)于HAL是什么我想后面會(huì)有介紹的。HAL_BOARD_INIT();

//Makesuresupplyvoltageishighenoughtorun----電壓檢測,最好是能保證芯片能正常工作的電壓zmain_vdd_check();

//Initializestackmemory-------------初始化stack存儲(chǔ)區(qū)zmain_ram_init();//InitializeboardI/O------------初始化板載IOInitBoard(OB_COLD);

//InitialzeHALdrivers-------------初始化HAL驅(qū)動(dòng)HalDriverInit();

//InitializeNVSystem--------------初始化NV系統(tǒng),NV是什么后面我想也會(huì)有介紹的

osal_nv_init(NULL);

//Determinetheextendedaddress------------確定擴(kuò)展地址(64位IEEE/物理地址)zmain_ext_addr();

//InitializebasicNVitems----------------初始化根本NV條目zgInit();

//InitializetheMAC----------------初始化MACZMacInit();

#ifndefNONWK

//SincetheAFisn“tatask,callit“sinitializationroutineafInit();#endif

//Initializetheoperatingsystem----------初始化操作系統(tǒng),看樣子這里面還有OS,麻煩了……..!osal_init_system();

//Allowinterrupts-------------允許中斷osal_int_enable(INTS_ALL);

//Finalboardinitialization------------------最終的版在初始化InitBoard(OB_READY);

//Displayinformationaboutthisdevice---------------顯示設(shè)備信息zmain_dev_info();

/*DisplaythedeviceinfoontheLCD*/------------液晶支持顯示#ifdefLCD_SUPPORTEDzmain_lcd_init();#endif

osal_start_system();//NoReturnfromhere-------------------這里沒有返回,也許是進(jìn)入OS了。}//main()

可以看到根本上都是初始化函數(shù),由于函數(shù)名稱都根本上帶了init字樣的,呵呵,個(gè)人覺得TI的變成習(xí)慣比我好,一看名稱就知道也許功能了。所以這里也奉勸各位像我這樣菜鳥級(jí)的初學(xué)者,一開頭肯定就要養(yǎng)成標(biāo)準(zhǔn)化編程的習(xí)慣,據(jù)說這樣維護(hù)以及以后升級(jí)或者移植兼容性都比擬好。我就先不管各個(gè)初始化函數(shù)是怎么實(shí)現(xiàn)的,我先看看各個(gè)功能是什么,現(xiàn)把握整體功能在細(xì)化,我覺得這樣的學(xué)習(xí)方法比擬好,由于代碼是在太多了,從一開頭就逐句看,我敢保證沒幾個(gè)人有急躁看完看明白!

幸好每個(gè)初始化函數(shù)都有一句說明,雖然是英文的,但是理解起來一點(diǎn)都不難的。關(guān)于每個(gè)函數(shù)的功能我就直接寫在上面的程序里面,節(jié)約紙張哈!

一句話:主函數(shù)的功能就是初始化!

主函數(shù)看完了又開頭模糊了,又從何看起呢?在無從下手之際,只有去尋求TI說明文檔的幫忙了。上節(jié)不是漏掉了內(nèi)容,是關(guān)于演示結(jié)果的,這里做上補(bǔ)充,怕由于缺調(diào)一點(diǎn)后面遇到什么不理解的就慘了!Sample例子演示演示現(xiàn)象:

1、熟悉硬件------------按鍵和LED

上節(jié)提到了EM和DB兩個(gè)板子,其硬件是不一樣的。按鍵EM就有5各SW1~SW5,而DB只有1各方向鍵,但是他們有個(gè)對(duì)應(yīng)關(guān)系,如圖2-3所示.

圖2-3

LED數(shù)量和顏色也不一樣,EM有四個(gè)LED,如圖2-4;而DB只有兩個(gè),如圖2-5。

如圖2-4

如圖2-5

關(guān)于上面幾個(gè)圖2-4/5中消失的LEDx實(shí)際上是程序中消失的關(guān)鍵字。2、初始化64位IEEE地址

實(shí)際上在主函數(shù)中有這么個(gè)初始化函數(shù)的:zmain_ext_addr()。這里說假如地址復(fù)位為0xFFFFFFFFFFFFFFFF的話,那么就會(huì)不停的閃耀LED1,始終等到按鍵SW5按下后程序才能連續(xù)運(yùn)行,意思就是說按下SW5后就把無效的地址初始化為有效地物理地址了,這個(gè)應(yīng)當(dāng)是程序上實(shí)現(xiàn)的,那么就來看看對(duì)應(yīng)的程序zmain_ext_addr。

/*********************************************************************

*@fnzmain_ext_addr

*@briefMakesextendedaddressifnoneexists.確定擴(kuò)展地址是有效的*@returnnone

*********************************************************************/

staticZSEGvoidzmain_ext_addr(void){

uint8i;uint8led;uint8tmp;uint8*xad;uint16AtoD;

//InitializeextendedaddressinNV初始化NV里的擴(kuò)載地址

osal_nv_item_init(ZCD_NV_EXTADDR,Z_EXTADDR_LEN,NULL);

osal_nv_read(ZCD_NV_EXTADDR,0,Z_EXTADDR_LEN,//Checkforuninitializedvalue(erasedEEPROM=0xFF)檢查是否為無效值(地址)xad=(uint8*)for(i=0;ihdr.event)

這里是推斷SYS_EVENT_MSG大事類型,不同的SYS_EVENT_MSG類型需要不同的處理。caseKEY_CHANGE:

SampleApp_HandleKeys(((keyChange_t*)MSGpkt)->state,((keyChange_t*)MSGpkt)->keys);break;

比方這里推斷是否是鍵盤大事,假如鍵盤大事就調(diào)用鍵盤處理函數(shù)。

假如一個(gè)OSAL任務(wù)已經(jīng)被登記組側(cè),那么任何鍵盤大事都將承受一個(gè)KEY_CHANGE大事信息??赡苡腥缦聨追N方式得到鍵盤大事信息

1)、HAL檢測到鍵盤按下(中斷或者查詢檢測)2)、HAL的OSAL任務(wù)檢測到一個(gè)鍵盤狀態(tài)轉(zhuǎn)變調(diào)用回叫函數(shù)產(chǎn)生3)、OSAL鍵盤轉(zhuǎn)變回叫函數(shù)發(fā)送一個(gè)OSAL系統(tǒng)大事信息(KEY_CHANGE)。

caseAF_DATA_CONFIRM_CMD:

//ThestatusisofZStatus_ttype[definedinZComDef.h]//ThemessagefieldsaredefinedinAF.h

afDataConfirm=(afDataConfirm_t*)MSGpkt;sentEP=afDataConfirm->endpoint;sentStatus=afDataConfirm->hdr.status;sentTransID=afDataConfirm->transID;

任何AF_DataRequest()數(shù)據(jù)懇求函數(shù)調(diào)用后,都通過AF_DATA_CONFIRM_CMD系統(tǒng)大事信息回叫返回勝利Zsuccess。caseZDO_STATE_CHANGE:

SampleApp_NwkState=(devStates_t)(MSGpkt->hdr.status);if((SampleApp_NwkState==DEV_ZB_COORD)||(SampleApp_NwkState==DEV_ROUTER)

||(SampleApp_NwkState==DEV_END_DEVICE)){

//UpdatetheLCD’snetworkindicator

//Startsending“the“messageinaregularinterval.

osal_start_timer(SAMPLEAPP_SEND_PERIODIC_MSG_EVT,SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT);}

break;

這里就是前面介紹的設(shè)備狀態(tài)轉(zhuǎn)變大事處理了。只要網(wǎng)絡(luò)狀態(tài)發(fā)生轉(zhuǎn)變,那么通過ZDO_STATE_CHANGE大事通知全部的任務(wù)。留意:在這個(gè)例子中,一旦設(shè)備勝利參加網(wǎng)絡(luò),是通過定時(shí)運(yùn)行的方式運(yùn)行的。一旦網(wǎng)絡(luò)狀態(tài)為參加‖JOINED‖,那么它可能不需要任何的認(rèn)為操作就能綁定其他設(shè)備,由于設(shè)置為自動(dòng)發(fā)覺并綁定的。//Releasethememory

osal_msg_deallocate((uint8*)MSGpkt);釋放存儲(chǔ)空間。

if(events//Setuptosendmessageagain

osal_start_timer(SAMPLEAPP_SEND_PERIODIC_MSG_EVT,SAMPLEAPP_SEND_MSG_TIMEOUT);//returnunprocessedevents

return(events^SAMPLEAPP_SEND_PERIODIC_MSG_EVT);}

這里檢測大事是否為周期發(fā)送信息大事。

在SampleApp.h中定義了:

#defineSAMPLEAPP_SEND_PERIODIC_MSG_EVT0x0001

在這個(gè)應(yīng)用中,調(diào)用了osal_start_timer()函數(shù)來定時(shí)產(chǎn)生發(fā)送周期信息大事。而定時(shí)器的運(yùn)行是設(shè)備一旦參加網(wǎng)絡(luò)就不停的在運(yùn)行。從上面可以看到,用函數(shù)SampleApp_SendPeriodicMessage()發(fā)送周期信息,而用函數(shù)osal_start_timer(SAMPLEAPP_SEND_PERIODIC_MSG_EVT,SAMPLEAPP_SEND_MSG_TIMEOUT)來連續(xù)運(yùn)行定時(shí)器定時(shí)發(fā)送這個(gè)周期信息。關(guān)于這個(gè)osal_start_timer可以多了解下,第一個(gè)參數(shù)SAMPLEAPP_SEND_PERIODIC_MSG_EVT四信息時(shí)間,也就是大事到了產(chǎn)生一個(gè)什么大事。其次各參數(shù)SAMPLEAPP_SEND_MSG_TIMEOUT是需要定時(shí)的時(shí)間,這里就是發(fā)送周期信息的時(shí)間周期。1.3、消息流程

通過OSAL定時(shí)器,這個(gè)應(yīng)用定時(shí)發(fā)送一個(gè)周期信息:voidSampleApp_SendPeriodicMessage(void){

afAddrType_tdstAddr;

dstAddr.addrMode=afAddrBroadcast;

dstAddr.addr.shortAddr=0xFFFF;//播送發(fā)送dstAddr.endpoint=SAMPLEAPP_ENDPOINT;

if(AF_DataRequest(break;

這里表示收到某個(gè)信息,然后在里面調(diào)用了收到信息的信息處理函數(shù)SampleApp_MessageMSGCB(MSGpkt)。

voidSampleApp_MessageMSGCB(afIncomingMSGPacket_t*pkt){

switch(pkt->clusterId){

caseSAMPLEAPP_PERIODIC_CLUSTERID:

//DisplayandincrementacounterontheLCDintheperiodicspacebreak;

caseSAMPLEAPP_FLASH_CLUSTERID:

flashTime=BUILD_UINT16(pkt->cmd.Data[1],pkt->cmd.Data[2]);HalLedBlink(HAL_LED_4,4,50,(flashTime/4));break;}}

這里推斷了兩種信息:周期信息閃燈信息

不同的信息就相當(dāng)于收到了不同的命令,然后依據(jù)不同的命令做出了不同的處理。是個(gè)會(huì)寫程序都明白?。。?!

到這里,我就根本上把這個(gè)應(yīng)用文檔看完了,至于理解了多少我模糊,理解正確了多少我更加模糊,反正我根據(jù)我自己的方式理解了!

學(xué)Z-Stack之5

前面雖然寫了不少,但是回頭看看大多都是廢話,不過也沒方法,沒有廢話的潤色就太枯燥了,太技術(shù)化了,這個(gè)不是我的本意。不知道前面寫的怎么樣,技術(shù)含量確定是不高的。這個(gè)本人是相當(dāng)清晰,但是我最大的期望就是錯(cuò)誤不要太多!

突然想起來前面有個(gè)問題沒有解決,我想許多人看到那里都很郁悶的。就是設(shè)備類型的選擇,在TI原裝系統(tǒng)上是通過板載跳線來選擇的,但是我這里不是采納原裝,那么就需要通過程序來修改其設(shè)備類型,然后編譯下載。詳細(xì)程序段如下:

#ifdefined(SOFT_START)if(readCoordinatorJumper())

zgDeviceLogicalType=ZG_DEVICETYPE_COORDINATOR;else

zgDeviceLogicalType=ZG_DEVICETYPE_ROUTER;#endif//SOFT_START

這里有個(gè)條件編譯,其條件編譯設(shè)置如圖5-1。圖5-1

既然這里設(shè)置了SOFT_START,那么上段程序就要被編譯。那么第一句程序if(readCoordinatorJumper())

就是檢測跳線,其實(shí)略微知道編程的都了解怎么修改了,哈哈!屏蔽:

if(readCoordinatorJumper())

zgDeviceLogicalType=ZG_DEVICETYPE_COORDINATOR;else

這3句,那么就只剩下:zgDeviceLogicalType=ZG_DEVICETYPE_ROUTER;了

那么編譯自然該設(shè)備就為路由器了。簡潔吧?。。。???!協(xié)調(diào)器我就不想多說怎么做了哈?。。。。。。。。。。?!

還有一個(gè)問題需要說下,就是Ti原裝的EM板子用到了LCD,所以在程序中可能在某個(gè)地方要對(duì)LCD初始化,那么假如沒有液晶的板子或者與TI那個(gè)不完全一樣的LCD就有可能運(yùn)行不走,通俗的解決方法是制止LCD初始化等操作,Ti在這個(gè)方面做的很人性化,制止LCD功能沒有必要在程序中找到LCD相關(guān)程序刪除,而是僅僅需要通過條件編譯來制止。顯得相當(dāng)簡潔,如5-2圖就是制止LCD的條件編譯。圖5-2

解決這個(gè)問題后一般都能夠運(yùn)行程序了。也就是說到這里假如還把Demo程序運(yùn)行不起來的話,那就證明我全部的東西都白寫了,反正我到這里我的Demo程序已經(jīng)運(yùn)行如飛了。

那么接下來就是來看看Z-Stack詳細(xì)的一些東西了,我準(zhǔn)備先這樣看起:1、Z-Stack的構(gòu)造,由于翻開Z-Stack的名目可以看出還是比擬簡單的,只有比擬清晰了解其構(gòu)造之后呢,在程序運(yùn)行或者修改中才能順當(dāng)?shù)恼业阶约合胍木植俊?/p>

2、Z-Stack的應(yīng)用建立。就是怎么在TI供應(yīng)的協(xié)議(裸協(xié)議)上建立一個(gè)應(yīng)用。這個(gè)層次要求就比擬高了,我初步的設(shè)想是盼望能分析完SAMPLE例子的應(yīng)用就能自己建立,而不需要太多的去了解下層的協(xié)議。但是往往盼望與現(xiàn)實(shí)是有偏差的,走一步算一步了。

3、了解硬件相關(guān)設(shè)定、驅(qū)動(dòng)。也就是說把例子跑通了,究竟是基于TI的硬件,或者說基于開發(fā)系統(tǒng)的硬件,假如要做自己的應(yīng)用,那么必需要開發(fā)自己的硬件。怎么把自己的硬件驅(qū)動(dòng)參加協(xié)議,這個(gè)我想也是需要解決的問題。

4、接下來可能就要深入分析協(xié)議了,這個(gè)目前我還不清晰從什么地方看起,由于究竟對(duì)ZIGBEE這個(gè)協(xié)議本身就不太了解,但是在學(xué)習(xí)過程中應(yīng)當(dāng)會(huì)漸漸對(duì)它有熟悉。所以到了這一步的時(shí)候說不定我就已經(jīng)摸索出一條方法了---究竟俺是相當(dāng)?shù)穆敾勐铮?/p>

5、需要解決的問題,需要了解的東西許多,對(duì)于不太了解這個(gè)東西的我來說,不行能特別有規(guī)劃并統(tǒng)籌安排這些事,走彎路是必定的,但是我全都認(rèn)為走彎路才是閱歷的積存!學(xué)習(xí)Z-Stack之6

--------------Z-Stack指導(dǎo)

首先來看看Z-Stack的構(gòu)造。

第一次翻開工程印象最深刻的就是左邊一排文件夾,如圖6-1所示。

其實(shí)這個(gè)還是很簡單理解的:

APP(ApplicationProgramming):應(yīng)用層名目,這是用戶創(chuàng)立各種不同工程的區(qū)域,在這個(gè)名目中包含了應(yīng)用層的內(nèi)容和這個(gè)工程的主要內(nèi)容,在協(xié)議棧里面一般是以操作系統(tǒng)的任務(wù)實(shí)現(xiàn)的。

HAL(Hardware(H/W)AbstractionLayer):硬件層名目,包含有與硬件相關(guān)的配置和驅(qū)動(dòng)及操作函數(shù)。

MAC:MAC層名目,包含了MAC層的參數(shù)配置文件及其MAC的LIB庫的函數(shù)接口文件。

MT(MonitorTest):實(shí)現(xiàn)通過串口可控各層,于各層進(jìn)展直接交互。NWK(ZigBeeNetworkLayer):網(wǎng)絡(luò)層名目,含網(wǎng)絡(luò)層配置參數(shù)文件及網(wǎng)絡(luò)層庫的函數(shù)接口文件,APS層庫的函數(shù)接口

OSAL(OperatingSystem(OS)AbstractionLayer):協(xié)議棧的操作系統(tǒng)。Profile:AF(Applicationwork)層名目,包含AF層處理函數(shù)文件。Security:安全層名目,安全層處理函數(shù),比方加密函數(shù)等。

Services:地址處理函數(shù)名目,包括著地址模式的定義及地址處理函數(shù)。Tools:工程配置名目,包括空間劃分及ZStack相關(guān)配置信息。ZDO(ZigBeeDeviceObjects):ZDO名目。

ZMac:MAC層名目,包括MAC層參數(shù)配置及MAC層LIB庫函數(shù)回調(diào)處理函數(shù)。ZMain:主函數(shù)名目,包括入口函數(shù)及硬件配置文件。Output:輸出文件名目,這個(gè)EW8051IDE自動(dòng)生成的。

那么知道各個(gè)文件夾也許是什么功能,分布在ZIGBEE的哪一層,那么在以后的工作中無論是查詢某些功能函數(shù)還是修改某些功能函數(shù),甚至是添加或刪除某些功能函數(shù)就能順當(dāng)?shù)恼业皆谑裁吹胤搅?,固然要想真的順?dāng)還需要花更多的時(shí)間熟識(shí)這個(gè)協(xié)議棧了!

了解Z-Stack構(gòu)造后那么就能看看它的功能。

不用問,這個(gè)是針對(duì)ZIGBEE無線網(wǎng)絡(luò)寫的協(xié)議棧,呵呵!那么就要先也許了解下ZIGBEE這個(gè)技術(shù)。我這里就不介紹理論了,就從Z-Stack實(shí)際的角度介紹些有用的概念。

1、Zigbee網(wǎng)絡(luò)中的節(jié)點(diǎn)

在ZB網(wǎng)絡(luò)中,每個(gè)節(jié)點(diǎn)都有指定的配置參數(shù),從而確定其設(shè)備類型,不同的設(shè)備類型,在網(wǎng)絡(luò)中有著不一樣網(wǎng)絡(luò)任務(wù)。在屬于多跳網(wǎng)絡(luò)的ZB網(wǎng)絡(luò)中,兩個(gè)節(jié)點(diǎn)需要完成數(shù)據(jù)傳輸,可能需要經(jīng)過其他中間節(jié)點(diǎn)的幫助,所以節(jié)點(diǎn)的類型參數(shù)配置是特別必要的。對(duì)每個(gè)節(jié)點(diǎn)有兩個(gè)任務(wù):

(i)執(zhí)行指定的網(wǎng)絡(luò)功能函數(shù)

(ii)配置確定的參數(shù)到指定的值。

網(wǎng)絡(luò)功能的設(shè)置確定了該節(jié)點(diǎn)的類型,參數(shù)配置和指定的值確定了堆棧的模式。

節(jié)點(diǎn)類型

在ZB中,設(shè)備類型分為三類:協(xié)調(diào)器,路由器和終端設(shè)備。圖6-2就是這三種設(shè)備類型組成的一個(gè)典型網(wǎng)絡(luò)。

其中黑色節(jié)點(diǎn)為協(xié)調(diào)器紅色節(jié)點(diǎn)為路由器白色節(jié)點(diǎn)為終端設(shè)備

那么這個(gè)就是一個(gè)典型的網(wǎng)狀網(wǎng)絡(luò)MESH。

協(xié)調(diào)器

協(xié)調(diào)器是一個(gè)ZB網(wǎng)絡(luò)的第一個(gè)開頭的設(shè)備,或者是一個(gè)ZB網(wǎng)絡(luò)的啟動(dòng)或建立網(wǎng)絡(luò)的設(shè)備。協(xié)調(diào)器節(jié)點(diǎn)選擇一個(gè)信道和網(wǎng)絡(luò)標(biāo)志符(也叫PANID),然后開頭建立一個(gè)網(wǎng)絡(luò)。協(xié)調(diào)器設(shè)備在網(wǎng)絡(luò)中還可以有其他作用,比方建立安全機(jī)制、網(wǎng)絡(luò)中的綁定的建立等等。留意:協(xié)調(diào)器主要的作用是建立一個(gè)網(wǎng)絡(luò)和配置該網(wǎng)絡(luò)的性質(zhì)參數(shù)。一旦這些完成,該協(xié)調(diào)器就猶如一個(gè)路由器,網(wǎng)絡(luò)中的其他操作并不依靠該協(xié)調(diào)器,由于ZB是分布式網(wǎng)絡(luò)。

路由器

一個(gè)路由器的功能有(1)作為一般設(shè)備參加網(wǎng)絡(luò)(2)多跳路由(3)幫助其它的子節(jié)點(diǎn)完成通信。

一般來說,路由器需要始終處于工作狀態(tài),所以需要主干線供電(區(qū)分于電池供電)。但是在某指定的網(wǎng)絡(luò)構(gòu)造中可以采納電池供電,如—串樹型‖網(wǎng)絡(luò)模式中,允許路由器周期的運(yùn)行操作,所以可以采納電池供電。

終端設(shè)備

為了維持網(wǎng)絡(luò)最根本的運(yùn)行,對(duì)于終端設(shè)備沒有指定的責(zé)任。也就是說,在一個(gè)根本網(wǎng)絡(luò)中,終端設(shè)備沒有必不行缺少性。所以它可以依據(jù)自己功能需要休眠或喚醒,因此為電池供電設(shè)備。一般來說,該設(shè)備需要的內(nèi)存較少(特殊是內(nèi)部RAM)

堆棧模式(StackProfile)

需要被配置為指定值的堆棧參數(shù),連同這些值被稱為堆棧模式。這些堆棧模式參數(shù)被ZB聯(lián)盟定義指定。在同一個(gè)網(wǎng)絡(luò)中的設(shè)備必需符合同一個(gè)堆棧模式(同一個(gè)網(wǎng)絡(luò)中全部設(shè)備的堆棧模式配置參數(shù)必需全都)。

為了互操作性,ZB聯(lián)盟為06協(xié)議棧定義了一個(gè)堆棧模式,全部的設(shè)備只要遵循該模式的參數(shù)配置,即使在不同廠商買的不同設(shè)備同樣可以形成網(wǎng)絡(luò)。

假如應(yīng)用開發(fā)者轉(zhuǎn)變了這些參數(shù)配置,那么他的產(chǎn)品將不能與遵循ZB聯(lián)盟定義模式的產(chǎn)品組成網(wǎng)絡(luò),也就是說該開發(fā)者開發(fā)的產(chǎn)品具有特別性,我們稱之為—關(guān)閉的網(wǎng)絡(luò)‖,也就是說它的設(shè)備只有在自己的產(chǎn)品中使用,不能與其他產(chǎn)品通信。

該協(xié)議模式標(biāo)志符在設(shè)備通信的信標(biāo)傳輸中被匹配,假如不匹配,那么該設(shè)備將不能參加網(wǎng)絡(luò)?!P(guān)閉網(wǎng)絡(luò)‖的堆棧模式有一個(gè)0ID,而06協(xié)議棧模式有一個(gè)1ID。該堆棧模式被配置在nwk_globals.h文件中的STACK_PROFILE_ID參數(shù)。如:

#defineSTACK_PROFILE_IDHOME_CONTROLS。

2、Zigbee網(wǎng)絡(luò)中的地址地址類型

ZB設(shè)備有兩種地址類型,一個(gè)是64位IEEE地址(也可以叫MAC地址或擴(kuò)展地址),一個(gè)是16位網(wǎng)絡(luò)地址(也可以叫規(guī)律地址或短地址)。

64位地址是全球唯一的,作為設(shè)備(產(chǎn)品)的終生地址被安排。它通常被開發(fā)商或安裝的時(shí)候被指定。該地址由IEEE安排指定,該地址的信息和獲得該地址的方法見:

16位地址在設(shè)備參加網(wǎng)絡(luò)的時(shí)候被安排,由這個(gè)網(wǎng)絡(luò)自動(dòng)安排。該地址只能用與本網(wǎng)絡(luò)中,標(biāo)志不同的設(shè)備間傳遞信息。

網(wǎng)絡(luò)地址安排

ZB分布式網(wǎng)絡(luò)中地址安排是唯一的。為了不使網(wǎng)絡(luò)中設(shè)備混亂,為每個(gè)設(shè)備指定確定的地址是特別必要的。

在安排地址之前,一些參數(shù)必需被設(shè)置:MAX_DEPTH,MAX_ROUTERS和MAX_CHILDREN。

這些參數(shù)都是ZB協(xié)議模式的一局部,在06ZS模式中這些參數(shù)設(shè)置為:(MAX_DEPTH=5,MAX_CHILDREN=20,MAX_ROUTERS=6).

參數(shù)設(shè)置

MAX_DEPTH打算了網(wǎng)絡(luò)的最大深度。協(xié)調(diào)器的深度是0,它的子設(shè)備的深度是1,他們的子設(shè)備的深度是2,依次類推。所以MAX_DEPTH參數(shù)限制了網(wǎng)絡(luò)物理上的—長度‖

MAX_CHILDREN參數(shù)打算了一個(gè)路由器(或一個(gè)協(xié)調(diào)器)能承載子設(shè)備的最大數(shù)目。MAX_ROUTERS參數(shù)打算了一個(gè)路由器(或一個(gè)協(xié)調(diào)器)能承載路由器的最大數(shù)目。這個(gè)參數(shù)實(shí)際上是MAX_CHILDREN參數(shù)的一個(gè)子集,剩下的(MAX_CHILDREN-MAX_ROUTERS)地址空間屬于終端設(shè)備。

開發(fā)者自定義

假如開發(fā)者想轉(zhuǎn)變這些值,那么需要做如下幾步:

首先得保證這些參數(shù)新的值是合法的。既然整個(gè)地址空間被限制在2-16內(nèi),那么這些參數(shù)的大小就已經(jīng)有了限制。分布在release(在文件夾Projects\\zstack\\Tools中)的Cskip.xls文件能校驗(yàn)這些參數(shù)是否合法。在鍵入這些參數(shù)的值后也許這個(gè)電子表格,假如非法,一個(gè)錯(cuò)誤信息將給出。

之后選擇合法的值,開發(fā)者需要確保不使用標(biāo)準(zhǔn)的協(xié)議棧模式,而用指定的協(xié)議棧模式代替(用NETWORK_SPECIFIC替換STACK_PROFILE_ID當(dāng)前的值)。然后在—nwk_globals.h‖文件中的MAX_DEPTH參數(shù)依據(jù)需要設(shè)置為適當(dāng)?shù)闹怠?/p>

另外,nwk_globals.c文件中排列的CskipChldrn和CskipRtrs必需被設(shè)置,這些排列是

z-stack中的尋址

為了在網(wǎng)絡(luò)中發(fā)送數(shù)據(jù)到一個(gè)設(shè)備,應(yīng)用層一般用AF_DataRequest()函數(shù)。而被發(fā)送的目的設(shè)備的地址類型afAddrType_t被定義在—ZComDef.h‖中:typedefstruct{union{

uint16shortAddr;ZLongAddr_textAddr;}addr;

byteaddrMode;}zAddrType_t;

地址模式參數(shù)

留意:除這個(gè)網(wǎng)絡(luò)地址之外,地址模式參數(shù)也需要被指定。目的地址模式可能是如下值之一(AF地址模式被定義在—AF.h‖中):typedefenum{

afAddrNotPresent=AddrNotPresent,afAddr16Bit=Addr16Bit,afAddrGroup=AddrGroup,

afAddrBroadcast=AddrBroadcast}afAddrMode_t;

地址模式參數(shù)是需要的,由于在ZB中,數(shù)據(jù)包能被點(diǎn)傳輸、多點(diǎn)傳輸或者播送傳輸。點(diǎn)傳輸被發(fā)送到單個(gè)設(shè)備,多點(diǎn)傳輸肯定發(fā)送到一組設(shè)備,播送傳輸一般被發(fā)送到網(wǎng)絡(luò)中的全部設(shè)備。如下是更具體的說明。

點(diǎn)到傳輸(Unicast)

這是標(biāo)準(zhǔn)地址模式,被用于發(fā)送一個(gè)數(shù)據(jù)包到網(wǎng)絡(luò)中單個(gè)已知地址的設(shè)備。這個(gè)addrMode參數(shù)被設(shè)置為Addr16Bit,目的網(wǎng)絡(luò)地址在數(shù)據(jù)包中一同被發(fā)送。

間接尋址

數(shù)據(jù)包中的最終目的地址不識(shí)別的時(shí)候使用。該模式被AddrNotPresent設(shè)置,而且目的地址沒有被指定。代替目的地址的是:一個(gè)存儲(chǔ)在發(fā)送設(shè)備協(xié)議棧的—綁定表格‖,該表格中有被綁定設(shè)備的地址。這個(gè)特性被調(diào)用是源于綁定。(看后面關(guān)于綁定局部)當(dāng)被發(fā)送的信息包下載到協(xié)議棧時(shí),從這個(gè)綁定表格中查找使用的目的地址。然后該信息包被有規(guī)章的處理為點(diǎn)對(duì)點(diǎn)數(shù)據(jù)包。假如有多個(gè)(大于1)目的地址在綁定表格中被發(fā)覺,那么該數(shù)據(jù)包將被拷貝成對(duì)應(yīng)的份數(shù)分別發(fā)送給他們。

在(ZigBee04)版本之前,在協(xié)調(diào)器中有一個(gè)存儲(chǔ)綁定表格的選項(xiàng)。因此,發(fā)送設(shè)備發(fā)送數(shù)據(jù)包到這個(gè)協(xié)調(diào)器,然后協(xié)調(diào)器在它的綁定表格中查找最終的目的地址,對(duì)數(shù)據(jù)包進(jìn)展在一次發(fā)送。該選項(xiàng)特性在協(xié)調(diào)器綁定被調(diào)用

播送傳輸

該模式在應(yīng)用層想發(fā)送一個(gè)數(shù)據(jù)包到全部網(wǎng)絡(luò)中的全部設(shè)備時(shí)被使用。該地址模式被AddrBroadcast被設(shè)置,目的地址被設(shè)置為以下值之一:

NWK_BROADCAST_SHORTADDR_DEVALL(0xFFFF)-信息將被發(fā)送到網(wǎng)絡(luò)中的全部設(shè)備(包括休眠的設(shè)備)。對(duì)于休眠的設(shè)備,這個(gè)信息將被保持在它的父節(jié)點(diǎn),直到該休眠設(shè)備獲得該信息或者該信息時(shí)間溢出(在f8wConfig.cfg中的NWK_INDIRECT_MSG_TIMEOUT選項(xiàng))。

NWK_BROADCAST_SHORTADDR_DEVRXON(0xFFFD)該信息將被發(fā)送到網(wǎng)絡(luò)中有接收器并處于IDLE(RXONWHENIDLE)狀態(tài)下的全部設(shè)備。也就是說,除了休眠模式設(shè)備的全部設(shè)備。

NWK_BROADCAST_SHORTADDR_DEVZCZR(0xFFFC)該信息被發(fā)送到全部路由器(包括協(xié)調(diào)器)。

組地址

該模式用于應(yīng)用層想發(fā)送一個(gè)數(shù)據(jù)包到一個(gè)設(shè)備組的時(shí)候。該地址模式被afAddrGroup設(shè)置這個(gè)組標(biāo)志符。

用該特性之前,在網(wǎng)絡(luò)中,組不得不被定義[看ZStackAPI文檔中的]aps_AddGroup()留意:組能與間接尋址一起結(jié)合使用。該目的地址在綁定表格中發(fā)覺,可以作為點(diǎn)對(duì)點(diǎn)或一個(gè)組地址。也要留意播送地址可以當(dāng)作是組被提前設(shè)置,一個(gè)簡潔的組尋址的特例,。例子代碼對(duì)于一個(gè)設(shè)備添加它自己到一個(gè)組標(biāo)志符1:aps_Group_tgroup;

//Assignyourselftogroup1group.ID=0x0001;

[0]=0;//Thiscouldbeahumanreadablestringaps_AddGroup(SAMPLEAPP_ENDPOINT,

重要設(shè)備地址

一個(gè)應(yīng)用可以能想知道它自身和父節(jié)點(diǎn)的地址,用下面的函數(shù)可以得到設(shè)備的地址(被定義在ZStackAPI文檔中):

NLME_GetShortAddr()返回該設(shè)備的16位網(wǎng)絡(luò)地址NLME_GetExtAddr()返回該設(shè)備的64位擴(kuò)展地址.

用下面的函數(shù)可以得到該設(shè)備的父節(jié)點(diǎn)的地址(被定義在ZStackAPI文檔中)。留意該函數(shù)在協(xié)調(diào)器中不被涉及到,但是被設(shè)備父節(jié)點(diǎn)代替(MAC協(xié)調(diào)器):

NLME_GetCoordShortAddr()returnsthisdevice’sparent’s16bitshortaddress.NLME_GetCoordExtAddr()returnsthisdevice’sparent’s64bitextendedaddress.先介紹這兩個(gè)概念:節(jié)點(diǎn)和地址。其余的就改天連續(xù)!

學(xué)習(xí)Z-Stack之7--------------Z-Stack指導(dǎo)2

上節(jié)介紹了很大一局部Z-Stack的根底學(xué)問,這里接著忽悠。雖然說的不是很專業(yè)也不是很通俗,但是我盡力了,盼望有人能看明白!本人英文水平有限,翻譯的不好請(qǐng)諒解!3、綁定

綁定是掌握信息從一個(gè)應(yīng)用層到另一個(gè)應(yīng)用層流淌的一種機(jī)制。在ZB06版本中,綁定機(jī)制在全部的設(shè)備中被執(zhí)行。

綁定允許應(yīng)用層發(fā)送信息不需要帶目的地址,APS層確定目的地址從他的綁定表格中,然后在信息前端加上這個(gè)目的地址或組。

留意:在ZB1.0版本中,全部綁定條目存儲(chǔ)在協(xié)調(diào)器中?,F(xiàn)在全部綁定條目存儲(chǔ)在發(fā)送數(shù)據(jù)的設(shè)備中。3.1綁定一個(gè)綁定表格

有三種方式建立一個(gè)綁定表格:

ZDO綁定懇求一個(gè)試運(yùn)轉(zhuǎn)工具能告知這個(gè)設(shè)備制作一個(gè)綁定報(bào)告。ZDO終端設(shè)備綁定懇求2設(shè)備能告知協(xié)調(diào)器他們想建立綁定表格報(bào)告。該協(xié)調(diào)器將使協(xié)調(diào)并在這兩個(gè)設(shè)備上創(chuàng)立綁定表格條目

設(shè)備應(yīng)用在設(shè)備上的應(yīng)用能建立或治理一個(gè)綁定表格。

任何一個(gè)設(shè)備或應(yīng)用能在網(wǎng)絡(luò)中發(fā)送一個(gè)ZDO信息到另一個(gè)設(shè)備()建立一個(gè)綁定報(bào)告。這是調(diào)用綁定幫忙并且它將建立一個(gè)綁定條目為發(fā)送設(shè)備。3.1.1ZDO綁定懇求

通過調(diào)用函數(shù)ZDP_BindReq()發(fā)送一個(gè)綁定懇求。第一個(gè)參數(shù)(dstAddr)是綁定的源地址的短地址。這之前應(yīng)當(dāng)確定允許綁定,在ZDConfig.h文件中有參數(shù)[ZDO_BIND_UNBIND_REQUEST]允許綁定。能用同樣的參數(shù)調(diào)用函數(shù)ZDP_UnbindReq()移除綁定。

目標(biāo)設(shè)備將調(diào)用函數(shù)ZDApp_BindRsp()或ZDApp_UnbindRsp(),反應(yīng)綁定或移除綁定的響應(yīng),返回其操作狀態(tài)為ZDP_SUCCESS,ZDP_TABLE_FULL或ZDP_NOT_SUPPORTED.

3.1.2ZDO終端設(shè)備綁定懇求

該機(jī)制是用一個(gè)按鈕按下或其他類似的動(dòng)作來選擇設(shè)備在指定時(shí)間內(nèi)被綁定。在規(guī)定時(shí)間內(nèi),該終端設(shè)備綁定懇求信息被收集到協(xié)調(diào)器,并創(chuàng)立一個(gè)基于模式(profile)ID和串(cluster)ID的規(guī)定的綁定表格條目。默認(rèn)的終端設(shè)備綁定超時(shí)時(shí)間(APS_DEFAULT_MAXBINDING_TIME)為16S(定義在nwk_globals.h中),但是能被轉(zhuǎn)變發(fā)送綁定懇求

在全部的應(yīng)用例子中有一個(gè)處理鍵盤大事的函數(shù)[例如在TransmitApp.c文件中的TransmitApp_HandleKeys()函數(shù)]。在該函數(shù)中,調(diào)用了函數(shù)ZDApp_SendEndDeviceBindReq()[在ZDApp.c中],它將收集應(yīng)用的終端設(shè)備的全部信息并調(diào)用函數(shù)ZDP_EndDeviceBindReq()[ZDProfile.c],發(fā)送一個(gè)綁定信息到協(xié)調(diào)器。或者,在SampleLight和SampleSwitch例子中,直接調(diào)用ZDP_EndDeviceBindReq()函數(shù)就實(shí)現(xiàn)點(diǎn)亮/關(guān)閉燈的功能。接收綁定懇求

協(xié)調(diào)器將接收[ZDP_IncomingData()在ZDProfile.c]這些信息并分析處理[ZDO_ProcessEndDeviceBindReq()在ZDObject.c]這些信息并調(diào)用函數(shù)ZDApp_EndDeviceBindReqCB()[inZDApp.c],它將調(diào)用ZDO_MatchEndDeviceBind()[ZDObject.c]處理這個(gè)懇求

當(dāng)協(xié)調(diào)器接收到2個(gè)匹配終端色后備的綁定懇求時(shí),它將啟動(dòng)在綁定設(shè)備上創(chuàng)立源綁定條目的處理過程。該協(xié)調(diào)器有如下處理過程:解除綁定1.發(fā)送一個(gè)ZDO解除綁定懇求到第一個(gè)設(shè)備。終端設(shè)備綁定切換處理,所以解除綁定首先被發(fā)送到移除一個(gè)存在的綁定條目。

2.等待ZDO解除綁定響應(yīng),假如響應(yīng)狀態(tài)為ZDP_NO_ENTRY,發(fā)送一個(gè)ZDO綁定懇求,在源設(shè)備上制作一個(gè)綁定條目。假如該響應(yīng)為ZDP_SUCCESS,為第一個(gè)設(shè)備連續(xù)到moveontotheclusterIDforthefirstdevice(theunbindremovedtheentrytoggle).

3.等待ZDO綁定響應(yīng).Whenreceived,moveontothenextclusterIDforthefirstdevice.

4.當(dāng)?shù)谝粋€(gè)設(shè)備完成時(shí),對(duì)其次個(gè)設(shè)備做同樣的處理。

5.當(dāng)其次個(gè)設(shè)備完成時(shí),發(fā)送ZDO終端設(shè)備綁定響應(yīng)信息到第一個(gè)和其次個(gè)設(shè)備

3.1.3設(shè)備應(yīng)用綁定治理

在設(shè)備上其他進(jìn)入綁定條目的方式是應(yīng)用層治理綁定表格。意思是說,應(yīng)用層將調(diào)用以下函數(shù)進(jìn)入和移除綁定表格條目:bindAddEntry()增加綁定表格條目

bindRemoveEntry()從綁定表格中移除條目

bindRemoveClusterIdFromList()從一個(gè)存在的綁定表格工程中移除一個(gè)串ID。

bindAddClusterIdToList()向一個(gè)已經(jīng)存在的綁定記錄中增加一個(gè)群IDbindRemoveDev()刪除全部地址引用的記錄

bindRemoveSrcDev()刪除全部源地址引用的記錄bindUpdateAddr()將記錄更新為另一個(gè)地址bindFindExisting()查找一個(gè)綁定表記錄

bindIsClusterIdInList()在表記錄中檢查一個(gè)已經(jīng)存在的群IDbindNumBoundTo()擁有一樣地址(源或者目的)的記錄的個(gè)數(shù)bindNumEntries()表中記錄的個(gè)數(shù)bindCapacity()最多允許的記錄個(gè)數(shù)bindWriteNV()在NV中更新表3.2配置源綁定

允許綁定源的編譯選項(xiàng)REFLECTOR在f8wConfig.cfg文件中。在文件f8wConfig.cfg,中查看這兩個(gè)綁定配置參數(shù)(NWK_MAX_BINDING_ENTRIES

//InitiateanEndDeviceBindRequestforthemandatoryendpointdstAddr.addrMode=Addr16Bit;

dstAddr.addr.shortAddr=0x0000;//Coordinator

ZDP_EndDeviceBindReq(}

很明顯這里按鍵2(右鍵)是發(fā)送綁定懇求的命令。if(keys

//InitiateaMatchDeionRequest(ServiceDiscovery)dstAddr.addrMode=AddrBroadcast;

dstAddr.addr.shortAddr=NWK_BROADCAST_SHORTADDR;

ZDP_MatchDescReq(}

明顯按鍵4(左)是初始化一個(gè)匹配描述符懇求,也就是發(fā)覺效勞,或者叫自動(dòng)尋求匹配設(shè)備。這就不怪我按鍵有反映了!

而且在發(fā)送數(shù)據(jù)和接收數(shù)據(jù)處理函數(shù)發(fā)覺:voidGenericApp_SendTheMessage(void){

chartheMessageData[]=“HelloWorld“;

if(AF_DataRequest(#elifdefined(WIN32)

WPRINTSTR(pkt->cmd.Data);#endifbreak;}}

接收數(shù)據(jù)處理函數(shù)里竟然要通過液晶顯示,本人這里的液晶臨時(shí)沒有移植過來,由于臨時(shí)還不具備那個(gè)實(shí)力,怪不得看不到發(fā)送數(shù)據(jù)的狀況!

這里本人就自作聰慧的把以前SampleApp例子里面的一句話加過來了:voidGenericApp_MessageMSGCB(afIncomingMSGPacket_t*pkt){

switch(pkt->clusterId){

caseGENERICAPP_CLUSTERID://“the“messageHalLedBlink(HAL_LED_4,4,50,(500));#ifdefined(LCD_SUPPORTED)

HalLcdWriteScreen((char*)pkt->cmd.Data,“rcvd“);#elifdefined(WIN32)

WPRINTSTR(pkt->cmd.Data);#endifbreak;}}

麼想到啊,這么一加竟然就有反響了,o(∩_∩)o…!我不愧是天才的接班人??!其實(shí)這里很簡潔的了,就是接收到數(shù)據(jù)后閃耀4下燈,間隔0.5S。由于從:if(events//Setuptosendmessageagain

osal_start_timerEx(GenericApp_TaskID,

GENERICAPP_SEND_MSG_EVT,

GENERICAPP_SEND_MSG_TIMEOUT);//returnunprocessedevents

r

溫馨提示

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

評(píng)論

0/150

提交評(píng)論