關注zigbee 四 無線收發

2021-06-22 13:45:53 字數 1280 閱讀 9477

對於使用者來說,最基本的就是先搞清楚無線收發。

無線收發有兩種方式:

1、呼叫最基本的底層收發函式,即讀寫暫存器收發,不經過協議棧。這種收發方式最直接,但是沒有安全和可靠性保障,不利於組網。

2、利用協議棧收發,應用層只關心資料本身

先說方式一,方式一的官方說法是basic rf。它的資料報是802.15.4的格式。但是沒有掃瞄的功能,沒有節點,協調器,路由的說法,不會自動加入網路,重傳資料報。

傳送: 呼叫uint8 basicrfsendpacket(uint16 destaddr, uint8* ppayload, uint8 length) , 填入目的位址,要傳送的資料載荷以及長度。

接收:通過不斷查詢標誌位 while(!basicrfpacketisready());來檢測是否收到資料報,這個標誌位在接收中斷中被置位;檢測到收到資料後,通過basicrfreceive來讀取資料。

方式二:

協議棧的傳送函式

afstatus_t af_datarequest( afaddrtype_t *dstaddr, endpointdesc_t *srcep,

uint16 cid, uint16 len, uint8 *buf, uint8 *transid,

uint8 options, uint8 radius )

第乙個引數afaddrtype_t *dstadd 是 目的位址

第二個引數endpointdesc_t *srcep 傳送節點的描述符

第三個引數cid, 即訊息id號,接收方利用該id來解析訊息。

第四個引數 len, 訊息長度。

第五個引數buf, 指向要傳送的資料。

第六個引數transid,傳送 序列號

第六個引數options 傳送選項

第七個引數radius  通常設定為 af_default_radius

接收:

1 通過uint8 *osal_msg_receive( uint8 task_id )讀取對應任務的訊息,該函式的輸入引數為 task_id,即任務註冊時的id。

2、從協議棧送上來的資料報,被協議棧打包為afincomingmsgpacket_t 的形式,它裡面包含了位址,rssi事件型別,事件相關的資料。根據 msgpkt->hdr.event分辨出訊息的型別,然後進入不同的分支進行處理。

afmsgcommandformat_t 中的 afmsgcommandformat_t cmd 包含了序列號,包長度,包的資料。結構體如下。

typedef struct

afmsgcommandformat_t;

ZigBee 點對點無線通訊

先從主函式開始 void main void 串列埠初始化 void inituart void 初始化rf void initrftest void radioinit frequency,myaddr 頻率,位址 傳送函式 void contionuousmode void 和沒用串列埠的時候基...

zigbee無線通道的組成

由於zigbee使用的是免執照的工業科學醫療 ism 頻段,所以zigbee使用了3個頻段,分別為 868mhz 歐洲 915mhz 美國 2.4ghz 全球 這樣,zigbee共定義了27個物理通道,其中,868mhz頻段定義了乙個通道 915mhz頻段附近定義了10個通道,通道間隔為2mhz 2...

ZigBee無線插座設計

隨著智慧型家居的持續火熱發展,現在已經有很多關於家電整合無線組網技術 智慧型照明系統等相關產品 在整個智慧型家居大環境下,市面上採用zigbee模組 組網技術作為家庭內部節點連線 資訊互動的企業越來越多,也推出了很多好的產品。本案在此背景下推出基於zigbee無線模組組網的多功能智慧型插座的設計方案...