zigbee協議棧學習(二)

2021-09-23 22:52:17 字數 2582 閱讀 6046

協議棧規範的 id號可以通過查詢裝置傳送的 beacon 幀獲得。在裝置加入網路之前,首先

需要確認協議棧規範的 id。「特定網路」規範 id號為0; zigbee協議棧規範的 id號為1; zigbee

ro 協議棧規範的 id 號為 2。協議棧規範的 id(stack_profile_id)在 nwk_globals.h 中

// controls the operational mode of network

#define nwk_mode_star         0

#define nwk_mode_tree         1

#define nwk_mode_mesh         2

// controls various stack parameter settings  id

#define network_specific      0

#define home_controls         1

#define zigbeepro_profile     2

#define generic_star          3

#define generic_tree          4

zigbee 裝置有兩種型別的位址。一種是 64 位 ieee 位址,即 mac 位址,另一種是 16 位網路位址。 

16 位網路位址是當裝置加入網路後分配的。它在網路中是唯一的,用來在網路中鑑別裝置

和傳送資料。其中,協調器的網路位址為 0x00 

#define nwk_pan_coord_addr 0x0000 

當乙個節點加入時,將接收到父節點的隨機分配位址,然後產生「裝置宣告」(包含分配到的網路地

址和 ieee 位址)傳送至網路中的其餘節點。「裝置宣告」檢測新的網路位址是否衝突。

在每個路由加入網路之前,定址方案需要知道和配臵一些引數。這些引數是 max_depth

最大網路深度) 、max_routers(最多路由數)和 max_children(最多子節點數) 。

這些引數是棧配臵的一部分,zigbee2007 協議棧已經規定了這些引數的值:

max_depth 決定了網路的最大深度。協調器(coordinator)位於深度 0,它的兒子位於深

度1,他的兒子的的兒子位於深度 2,以此類推。max_depth 引數限制了網路在物理上的長度。    

max_children 決定了乙個路由(router)或者乙個協調器節點可以處理的兒子節點的最大個數。 

max_router 決定了乙個路由(router)或者乙個協調器(coordinator)節點可以處理的具有

路由功能的兒子節點的最大個數。這個引數是 max_children 的乙個子集,終端節點使用

(max_children – max_router)剩下的位址空間。 

還必須設臵 nwk_globals.c 檔案中的 cskipchldrn 陣列和 cskiprtrs 陣列這些陣列的

值由max_children 和max_router 構成

為了向乙個在 zigbee 網路中的裝置傳送資料,應用程式通常使用 af_datarequest()函式

資料報將要傳送給乙個 afaddrtype_t(在zcomdef.h 中定義)型別的目標裝置。 

typedef struct 

addr; 

afaddrmode_t addrmode; 

byte endpoint; 

uint16 panid;    // used for the inter_pan feature 

} afaddrtype_t; 

typedef enum 

afaddrmode_t; 

傳送方式有資料報可以單點傳送(unicast),多點傳送(multicast)或者廣播傳送

一單點傳送(unicast) 

uicast 是標準定址模式,它將資料報傳送給乙個已經知道網路位址的網路裝置。將

afaddrmode 設定為 addr16bit 並且在資料報中攜帶目標裝置位址。 

二間接傳送(indirect)

當應用程式不知道資料報的目標裝置在**的時候使用的模式。將模式設臵為

addrnotpresent並且目標位址沒有指定。取代它的是從傳送裝置的棧的繫結表中查詢目標裝置。

這種特點稱之為源繫結。 

三 廣播傳送(broadcast) 

當應用程式需要將資料報傳送給網路的每乙個裝置時,使用這種模式。位址模式設臵為

nwk_broadcast_shortaddr_devall(0xffff)——資料報將被傳送到網路上的所有設

備,包括睡眠中的裝置。對於睡眠中的裝置,資料報將被保留在其父親節點直到查詢到它,或

者訊息超時(nwk_indirect_msg_timeout 在f8wconifg.cfg 中)。 

nwk_broadcast_shortaddr_devrxon(0xfffd)——資料報將被傳送到網路上的所

有在空閒時開啟接收的裝置(rxonwhenidle),也就是說,除了睡眠中的所有裝置。 

nwk_broadcast_shortaddr_devzczr(0xfffc)——資料報傳送給所有的路由器,包

括協調器。  

zigbee協議棧學習(五)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!下篇文張講解乙個無線控制led案列,這章了解系統執行的結構。第一z stack 軟體架構 z stack 由 main 函式開始執行,main 函式共做了 2 件事 一是系統初始 化,另外一件是開始執行輪轉查詢式作業系統,fs zstack zma...

zigbee協議棧 端點

端點的意義 從應用角度看,通訊的本質就是端點到端點的連線 例如,乙個帶開關元件的裝置與帶乙個或多個燈元件的遠端裝置進行通訊,目的是將這些燈點亮 端點的實現 端點之間的通訊是通過稱之為簇的資料結構實現的。這些簇是應用物件之間共享資訊所需的全部屬性的容器,在特殊應用中使用的簇在模板中有定義。所有端點都使...

ZigBee協議棧解析

zigbee技術是物聯網領域最常用的無線技術之一,如果我們要做基於zigbee技術的物聯網應用,最好對zigbee協議棧有乙個基本的了解。這篇文章對zigbee協議棧做乙個簡單明瞭的介紹。概述本文準備介紹的zigbee協議棧是zigbee2007,也是目前業界最常用的標準版本,對於zigbee協議棧...