zigbee通訊技術複習筆記

這門課對於我一個學嵌入式的來說,還是比較重要的,所以我還是以老師給出的大綱爲主體,好好複習一下!

題型:選擇題24x1.5 判斷10x1 填空15x1 簡答4x5 程序1x5 另外一個設計題1x14

每個標題前半部分是老師的提綱知識點,補充下面是我看到的可能比較重要的或者可以瞭解的。

WPAN及ZigBee基礎

  1. Zigbee、藍牙、IEEE802.11b(WiFi)標準都是工作在2.4G頻段的無線通信標準;Zigbee主要用在短距離無線控制系統,傳輸少量的控制信息;(P2)
  2. 短距離無線網絡主要分爲:無線局域網(WLANs)和無線個域網(WPANs)(P3)
  3. 無線個域網所對應的通信協議:(P3)
    HR-WPANS:802.15.3
    MR-WPANS:藍牙
    LR-WPANS(低速率無線個域網):802.15.4


  4. Zigbee最大傳輸速率:250kbps。 ZigBee可工作在2.4GHz(全球流行)、868MHz(歐洲流行) 和915 MHz(美國流行)3個頻段上,分別具有最高250kbit/s、20kbit/s和40kbit/s的傳輸速率,它的傳輸距離在10-75m的範圍內, 但可以繼續增加 。
  5. Zigbee無線網絡分層: 物理層(PHY) 介質訪問控制(MAC)網絡層(NWK)應用程序支持子層(APS) 應用層(APL)(P4)
    其中802.15.4 定義了物理層和介質訪問控制層Zigbee協議定義了網絡層、應用程序支持子層和應用層(具體介紹見下面的補充)
  6. Zigbee特點:(自組網)(P5)
    高可靠性:採取了碰撞避免策略;MAC層採用了完全確認的數據傳輸模式;
    低成本、低功耗 :ZigBee模塊的複雜度不高,ZigBee協議免專利費,再加之使用的頻段無需付費,所以它的成本較低;ZigBee的傳輸速率低,發射功率僅爲1mW,而且採用了休眠模式,功耗低
    高安全 :採用高級加密標準(AES 128) 的對稱密碼;
    低數據速率



  7. Zigbee設備類型:(P5)
    協調器(ZC Coordinator):主要負責無線網絡的建立與維護;(每個ZigBee網絡必須有一個)
    路由器(ZR Router):主要負責無線網絡的路由;( (1)允許其他網絡設備加入 (2)多跳路由 (3)協助電池供電的子節點通信(4)自己作爲終端節點應用)
    終端節點(ZED End-device):主要負責無線網絡數據的採集。(1)向路由節點傳遞數(2)沒有路由功能(3)低功耗(Zigbee的低功耗主要體現在這裏)(4)可選擇睡眠與喚醒。(路由因不斷轉發數據需電源供電,終端節點電池供電))


  8. Zigbee工作在ISM(工業、科學和醫療)頻帶,共規定了27個信道:(P7)
    2.4GHz頻段 共16個信道,通信速率爲250kbps
    915MHz頻段 共10個信道,通信速率爲40kbps
    896MHz頻段 共1個信道,通信速率爲20kbps


  9. Zigbee網絡拓撲結構:星型;網絡型;簇狀;(P8)
  10. Zigbee應用爲:週期性 ;反覆; 間斷數據採集應用
  11. Zigbee模塊開發一般包括兩個文件:.h頭文件和.c文件(P)
    .h文件可理解爲一份接口描述文件;
    .c文件主要功能是對.h文件中聲明的外部函數進行具體實現。

補充:

  1. Zigbee網絡中傳輸的三類數據:
    週期性數據:如家庭中水、電、氣三表數據的傳輸;
    間斷性數據:如電燈、家用電器的控制等數據的傳輸;
    反覆性的低反應時間的數據:如鼠標、操作杆傳輸的數據。


  2. ZigBee設備分類
    全功能設備(FFD):可以擔任網絡協調者,形成網絡,讓其它的FFD或是精簡功能裝置(RFD)連結,FFD具備控制器的功能,可提供信息雙向傳輸
    ~附帶由標準指定的全部 802.15.4 功能和所有特徵
    ~更多的存儲器、計算能力可使其在空閒時起網絡路由器作用。
    ~也能用作終端設備
    精簡功能設備(RFD):RFD只能傳送信息給FFD或從FFD接收信息。
    ~附帶有限的功能來控制成本和複雜性
    ~在網絡中通常用作終端設備。
    ~ZigBee相對簡單的實現自然節省了費用。RFD由於省掉了內存和其他電路,降低了ZigBee部件的成本,而簡單的8位處理器和小協議棧也有助於降低成本。







Zigbee設備類型與角色對應關係
在這裏插入圖片描述
3. ZigBee協議架構
物理層功能:PHY層由射頻收發器以及底層的控制模塊構成;
1. 激活和休眠射頻收發器;
2. 信道能量檢測(energy detect);
3. 檢測接收數據包的鏈路質量指示(link quality indication , LQI);
4. 空閒信道評估(clear channel assessment, CCA);
5. 收發數據。
數據鏈路層功能:MAC子層爲高層訪問物理信道提供點到點通信的服務接口
1. 協調器產生併發送信標幀,普通設備根據協調器的信標幀與協議器同步;
2. 支持PAN網絡的關聯(association)和取消關聯(disassociation)操作;
3. 支持無線信道通信安全;
4. 使用CSMA-CA(載波偵聽多路訪問/衝突避免)機制訪問信道;
5. 支持時槽保障(guaranteed time slot, GTS)機制;
6. 支持不同設備的MAC層間可靠傳輸。
網絡層功能:
1. ZigBee網絡層的主要功能就是提供一些必要的函數,確保ZIgBee的MAC層(IEEE 802.15.4-2003)正常工作,並且爲應用層提供合適的服務接口。爲了嚮應用層提供其接口,網絡層提供了兩個必須的功能服務實體,它們分別爲數據服務實體管理服務實體
2. 網絡層數據實體(NLDE)通過網絡層數據服務實體服務接入點(NLDE-SAP)提供數據傳輸服務
3. 網絡層管理實體(NLME)通過網絡層管理實體服務接入點(NLME-SAP)提供網絡管理服務。網絡層管理實體利用網絡層數據實體完成一些網絡的管理工作,並且,網絡層管理實體完成對網絡信息庫(NIB)的維護和管理。
應用會聚層功能:該層主要負責把不同的應用映射到ZigBee網絡上,具體而言包括:
1. 安全與鑑權
2. 多個業務數據流的會聚
3. 設備發現
4. 服務發現























4.TCP/IP結構對應OSI結構: 在這裏插入圖片描述
5. Z-Stack協議棧文件組織結構介紹
在這裏插入圖片描述

CC2530芯片相關

  1. CC2530單片機是一款完全兼容8051內核,支持802.15.4協議的無線射頻單片機(P30)
    CC2530的Flash(非易失性存儲器)容量可選: 32KB 64KB 128KB 256KB
    CC2530有兩個晶振: 32MHz 晶振 32.768KHz(無線通信時必須採用外部32M晶振

  2. I/O口控制
    CC2530內部自帶溫度傳感器:
    使用步驟:
    1、使能溫度傳感器
    2、連接溫度傳感器到ADC
    3、初始化ADC,確定參考電壓、分辨率等,啓動ADC讀取溫度數據
    補充:





Zigbee地址相關

  1. 設備地址:(P134)
    64位IEEE地址:長地址又稱 MAC地址擴展地址(全球唯一)
    16位網絡地址:短地址 又稱邏輯地址(協調器地址爲0x0000,其他設備入網時由協調器分配)(1)在網絡中標識不同設備;(2)在網絡數據傳輸時指定目的地址和源地址;

  2. 網絡地址:唯一標示網絡中的一個節點(用網絡地址來區分不同的節點);(P135)

  3. 網絡地址最多可以分配65536個節點,地址分配取決於整個網絡的架構,整個網絡的架構由一下3個值決定:1、網絡最大深度 2、每個父節點擁有的孩子節點最大數目 3、每個父節點擁有的孩子節點路由器的最大數目
    同一父節點相連的終端節點的網絡地址是連續的
    同一父節點相連的路由器節點的網絡地址通常是不連續的

  4. 端口:每個節點上最多支持240(1-240)個端口,每個節點上的所有端口共用一個發射/接收天線(用端口來區分同一節點的端口);

  5. PANID:Zigbee網絡號 可手動設置(或自動隨機生成),如果指定的PANID被佔用則自動加1。
    ~PANID範圍是0X0001----0XFFFF;
    ~可以通過給不同的網絡指定不同的網絡ID號來區分網絡,避免干擾;
    ~如果設置爲0XFFFF,那麼協調器則隨機產生一個值作爲自己的PANID;


    非易失性閃存條目ID號(NV操作用到的ID則定義在0x0201~0x0FFF 範圍內!) 在這裏插入圖片描述

  6. 數據發送:調用**AF_DataRequest()**函數通過天線發送數據(P139)

afStatus_t  AF_DataRequest( afAddrType_t *dstAddr, 
												endPointDesc_t *srcEP,
                          						uint16 cID, 
                          					    uint16 len, 
                          						uint8 *buf, 
                          						uint8 *transID,
                          						uint8 options,
                          						uint8 radius )
  1. 數據接收:調用**osal_msg_receive()**函數從消息隊列中接收一個消息(包含事件與數據)
    uint8 *osal_msg_receive( uint8 task_id )

  2. 數據存儲位置(結構):(P130)

typedef struct
{
   
   
  osal_event_hdr_t hdr;     /* OSAL Message header */
  uint16 groupId;           /* Message's group ID - 0 if not set */
  uint16 clusterId;         /* Message's cluster ID */
  afAddrType_t srcAddr;     /* Source Address, if endpoint is STUBAPS_INTER_PAN_EP,
                              				 it's an InterPAN message */
  uint16 macDestAddr;       /* MAC header destination short address */
  uint8 endPoint;           /* destination endpoint */
  uint8 wasBroadcast;       /* TRUE if network destination was a broadcast address */
  uint8 LinkQuality;        /* The link quality of the received data frame */
  uint8 correlation;        /* The raw correlation value of the received data frame */
  int8  rssi;               /* The received RF power in units dBm */
  uint8 SecurityUse;        /* deprecated */
  uint32 timestamp;         /* receipt timestamp from MAC */
  afMSGCommandFormat_t cmd; /* Application Data */
} afIncomingMSGPacket_t;

typedef struct
{
   
   
  byte   TransSeqNumber;
  uint16 DataLength;               // Number of bytes in TransData
  byte  *Data;
} afMSGCommandFormat_t;
  1. OSAL(系統抽象層)是一種支持多任務運行的系統資源分配機制(P72)
    OSAL主要功能:
    任務註冊、初始化和啓動
    任務間的同步、互斥
    中斷處理
    存儲器分配和管理




補充:

  1. IEEE802.15.4網絡的建立過程
    在這裏插入圖片描述
  2. int main( )主函數實現硬件的初始化其中包括
    在這裏插入圖片描述

事件驅動

  1. 首先記住 任務輪詢、事件驅動 必考;

  2. Zigbee將事件和任務的事件處理函數聯繫方法:(P74)
    1、建立一個事件表,保存各個任務的對應事件
    2、建立另一個函數表,保存各個任務事件處理函數地址
    3、將兩張表建立某種對應關係


  3. OSAL工作原理(輪詢)osal_start_system(void)
    通過tasksEvents指針訪問事件表的每一項,如果有時間發生,則查找函數表找到事件處理函數進行處理,處理完後,繼續訪問事件表,查看是否有事件發生,無限循環;(P75)

  4. 協議棧定義的事件成爲系統強制事件:(P80)
    AF_INCOMING-MSG-CMD
    ZDO_STATE_CHANGE
    ZDO_CB_MSG
    AF_DATA_CONFIRM_CMD



  5. Zigbee協議棧爲半開源

  6. Zigbee協議棧串口操作(P85)
    串口基本操作步驟:
    1、初始化串口,包括設置波特率、中斷等
    2、向發送緩衝區發送數據或從接收緩衝區讀取數據
    操作函數:



 uint8    HalUARTOpen(uint8 port,halUARTCfg_t *config); //初始化串口(設置波特率、中斷等)
 uint16  HalUARTRead(uint8 port,uint8 *buf,uint16 len); //從接受緩衝區讀取數據
 uint16  HalUARTWrite(uint8 port,uint8* buf,uint16  len);// 向緩衝區發送數據
  1. 串口回調函數:回調函數不是由該函數實現方直接調用的,而是在特定的事件或條件發生的,由另外的一方調用,用於對該事件或條件進行響應。因此,串口回調函數是在有串口操作(事件)發生時(自動觸發)調用的;(P89)

  2. 當應用有串口操作時,應該對應用程序模塊的工程屬性的編譯預處理的Definedsymbols下拉列表框中輸入“HAL_UART=TRUE”。(即用條件編譯來控制是否編譯與該模塊相關的程序,目的是爲了節約存儲資源);(P93)

  3. 程序中波特率的設置要與上位機(如串口助手)一致;

  4. Zigbee協議棧NV操作(P120)
    NV(Non Volatile),即非易失性存儲器(Flash存儲器),即系統掉電,存儲器中的數據不掉失。主要用途保存網路的配置參數,或掉電後,上電該節點還是加入原來的網絡並且該節點的網絡地址就可以從NV讀取。
    NV存儲器主要的操作有初始化NV存儲器、讀NV存儲器、寫NV存儲器。這些都在OSAL文件夾下中的OSAL_Nv.h和OSAL.h文件中定義和實現。
    下面三個操作函數分別是:
    NV初始化函數:uint8 osal_nv_item_init( uint16 id, uint16 len, void *buf ),NV存儲器將該存儲器分成多個條目,每個條目都有一個ID號。 條目的分類見OSAL文件夾中的ZcomDef.h文件,其中要知道的是:用戶應用程序定義的條目地址範圍爲是0x0201到0x0FFF;
    NV寫操作函數:uint8 osal_nv_write( uint16 id, uint16 ndx, uint16 len, void *buf );
    NV讀取函數:uint8 osal_nv_read( uint16 id, uint16 ndx, uint16 len, void *buf );
    第一個參數:uint16:NV條目ID號
    第二參數:舉例條目開始的偏移量
    第三參數:要寫入的數據長度
    第四參數:執行要存放寫入或讀取數據函數緩衝區的指針









  5. 用戶只能使用條目ID範圍0x0201~0x0FFF
    可在OSAL文件夾下的ZcomDef.h文件中添加自己的條目
    如:#define Test_NV 0x0201

  6. **函數名要考:**
    **事件添加函數**:osal_set_event()
    			函數原型:osal_set_event(  taskID, SYS_EVENT_MSG );
    			參數說明:  taskID:任務
    							 SYS_EVENT_MSG :事件
    **定時器函數**:osal_start_timerEx() (具有開啓和停止一個定時器的功能,定時器能用**1毫秒**的增量進行設置)
    			函數原型: uint8 osal_start_timerEx( uint8 taskID, uint16 event_id, uint16 timeout_value);
    			參數說明:taskID:任務
    							  event_id:事件
    							  timeout_value:定時毫秒數
    
    **內存拷貝函數**:osal_memcpy()
    **內存比較函數**:osal_memcmp()
    **字符串長度函數**:osal_strlen()
    
    **無線發送函數**:AF_DataRequest( afAddrType_t *dstAddr, endPointDesc_t *srcEP,
                       uint16 cID, uint16 len, uint8 *buf, uint8 *transID,
                       uint8 options, uint8 radius )
    **消息接收函數**:uint8 *osal_msg_receive( uint8 task_id )
    

補充:

  1. SYS_EVENT_MSG是系統事件,也是協議棧已經定義好的系統事件。
    在文件ZcomDef.h中,事件號是一個16bit的常量,使用叫作獨熱碼(one-hot code)編碼,也是一個位表示一個事件,方便進行event的提取,這樣一個task最多可以有16個event,SYS_EVENT_MSG已經佔用了0x8000,故自定義的事件只能有15個
  2. 事件的提取和清除可以用簡單的位操作指令實現,事件的提取可以用位操作 events & SYS_EVENT_MSG,事件的清除可以用異或操作實現,evets ^ SYS_EVENT_MSG;

Zigbee通信相關

  1. Zigbee協議棧中的規範(Profile)和簇(Cluester)
    Zigbee網絡中進行數據收發都是建立在應用規範基礎上的。每個應用規範都有一個ID來標示。在一個規範(Profile)下又提出了簇(Cluester)的概念,這個Cluester要理解爲一個應用領域下的一個特定對象。簇是由命令組成的。

  2. 同一規範下的發送命令(簇號)和接受命令(簇號)要相同才能通信;

  3. Zigbee網絡通信必須建立在具體設備節點的具體通信端口:
    網絡地址可以描述一個節點,用戶可使用簡單描述符來描述一個端口。(用戶可用的端口號是1-240)

  4. Zigbee通信模式:點播 廣播 組播(這一點重點,我覺得可能考設計題和程序題,所以我會在下面着重補充)
    點播
    發送模式:Addr16Bit
    發送目的端口:目的節點的簡單描述符設定的工作端口
    發送地址:目的節點的網絡地址
    廣播
    發送模式:AddrBroadcast
    發送目的端口:目的節點的簡單描述符設定的工作端口
    發送地址: 0xFFFF 全網發送 包括休眠節點
    0xFFFD 只發往休眠節點
    0xFFFC 發往所有路由節點
    組播(同一組的節點才能通信)
    發送模式:AddrGroup
    發送目的端口:目的節點的簡單描述符設定的工作端口
    發送地址:組ID













  5. #include “aps_groups.h”
    1、設置組對象(ID 和 name)
    2、加入對象組 aps_AddGroup()
    3、退出組


  6. Zigbee協議棧網絡管理
    Zigbee協議棧實現網絡管理的函數:
    獲得該節點的網絡地址:uint16 NLME_GetShortAddr(void)
    獲得該節點的MAC地址:byte * NLME_GetExtAddr(void)


     	獲得該節點的父節點網絡地址:uint16 NLME_GetCoordShortAddr(void)
     	獲得該節點的父節點MAC地址:void NLME_GetCoordExtAddr(byte *buf)
    

藍牙

  1. 採用高速跳頻擴展,實現語音和數據在短距離上的穩定無縫無線連接
    在2.4GHz的ISM頻帶上設立79個帶寬爲GHz的信道,用每秒鐘切換1600次的頻率的跳頻(Hobbing)擴展技術實現信息的收發。
    藍牙系統中的功能模塊分爲:無線射頻單元、鏈路控制單元、鏈路管理單元、軟件結構

  2. 微微網: 1主設備 7從設備
  3. 藍牙技術採用了全開放的框架結構
  4. 藍牙技術的系統結構分爲三大部分:
    1.底層硬件模塊
    2.中間協議層
    3.高層應用


  5. 藍牙協議分爲四層:
    1.核心協議:BaseBand、LMP、L2CAP、SDP;
    2.電纜替代協議:RFCOMM;
    3.電話傳送控制協議:TCS-Binary、AT 命 令 集;
    4.選用協議:PPP、UDP/TCP/IP、OBEX、WAP、vCard、vCal、IrMC、 WAE。



  6. 近場通信NFC 及WIFI(瞭解一下,不考)

下面我整理了一下實驗的一些核心代碼,大家可以結合教材一起看,應該會在代碼題和設計題裏面考:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章