1.抓取數據包
要了解Zigbee數據協議,可從其通信數據包進行分析。在此,我們需要構建一個協議分析儀。對於TI產品可使用Texas Instruments Packet Sniffer軟件,結合CC2530-EB開發板(任何一款基於Zigbee協議的開發板即可)、仿真下載器實現。
(1)選擇IEEE 802.15.4/Zigbee
(2)打開協調器和終端,連接Debug調試器跟CC2530開發板,會在軟件中檢測到圖中下方信息,此時點擊上方開始按鈕,便會在對話框中抓取到協調器跟終端通信的數據包。
2.數據包解讀
首先可以看到數據包由很多分段組成,這與Zigbee協議是對應的。Zigbee協議采用分層設計方式,故圖中圖一樣的網絡層也使用了不同的顏色。
第1-6行是協調器建立Zigbee無線網絡和終端節點加入網絡的過程。
第1、3、5行是終端節點發送信標(Beacon)請求。
第2、4、6是協調器建立了Zigbee無線網絡,並嘗試與終端節點建立連接。在Zigbee網絡中,協調器的網絡地址必定是0x0000,數據包中“Source Address”就是協調器的網絡地址。
第7行,終端節點發送加入網絡請求(Association Request)
第8行,協調器對終端節點的加入網絡請求做出應答,這個可以通過“Sequence Number”來判讀。
第9行,終端節點收到協調器的應答后,發送數據請求(Data Request),請求協調器分配網絡地址。從數據包可以看到,終端節點的IEEE地址是:0x00124B0008E8566F(64位地址)。
為什么使用的是64位的地址?
因為此時終端節點還沒有加入網絡,所以有效的網絡地址還沒有分配。從開始我們看到,終端節點網絡默認地址是0xFFFF,為什么不能使用。默認地址是每個終端節點的地址,當網絡中存在多個終端節點時,如果都使用默認地址就會產生沖突。
第10行,協調器對終端節點的數據請求做出應答。(序列號都是0x9A)
第11行,協調器分配的網絡地址發送給終端節點,新分配的地址是:0xDC35
第12行,終端節點做應答。
第13-15行,終端節點使用短地址0xDC35與協調器進行通信。
第16行,可以看到“MAC payload”欄的最后三個數據是:4C 45 44,這就是終端節點發送的數據“LED”。數據發送是以ASCII碼的格式發送的,L的ASCII碼為0x4C,E的的ASCII碼為0x45,D的ASCII碼為0x44。
從數據包中可以看到,每層數據包中都有一個payload字段,payload字段可以理解為有效數據,稱為凈荷,及每層所包含的有效數據。
應用程序支持子層(APS)
網絡層(NWK)
介質訪問控制層(MAC)
從上可以看出,協議中下層中有效數據都包含了上一層中的有效數據。
2.1 APS
2.2 NWK
2.3 MAC
負責網絡號、網絡發現,提供點對點通信的數據確認及
2.4 PHY
負責將數據通過發射天線發送出去以及從天線接收數據。
(1) 同步頭(SHR,Synchronization Header)
(2) 物理層頭(PHR,PHY Header)
(3) 物理層凈荷(PHY Payload)