這門課對於我一個學嵌入式的來說,還是比較重要的,所以我還是以老師給出的大綱爲主體,好好複習一下!
題型:選擇題24x1.5 判斷10x1 填空15x1 簡答4x5 程序1x5 另外一個設計題1x14
每個標題前半部分是老師的提綱知識點,補充下面是我看到的可能比較重要的或者可以瞭解的。
WPAN及ZigBee基礎
- Zigbee、藍牙、IEEE802.11b(WiFi)標準都是工作在2.4G頻段的無線通信標準;Zigbee主要用在短距離無線控制系統,傳輸少量的控制信息;(P2)
- 短距離無線網絡主要分爲:無線局域網(WLANs)和無線個域網(WPANs)(P3)
- 無線個域網所對應的通信協議:(P3)
HR-WPANS:802.15.3
MR-WPANS:藍牙
LR-WPANS(低速率無線個域網):802.15.4 - Zigbee最大傳輸速率:250kbps。 ZigBee可工作在2.4GHz(全球流行)、868MHz(歐洲流行) 和915 MHz(美國流行)3個頻段上,分別具有最高250kbit/s、20kbit/s和40kbit/s的傳輸速率,它的傳輸距離在10-75m的範圍內, 但可以繼續增加 。
- Zigbee無線網絡分層: 物理層(PHY) 介質訪問控制(MAC)網絡層(NWK)應用程序支持子層(APS) 應用層(APL)(P4)
其中802.15.4 定義了物理層和介質訪問控制層;Zigbee協議定義了網絡層、應用程序支持子層和應用層(具體介紹見下面的補充) - Zigbee特點:(自組網)(P5)
高可靠性:採取了碰撞避免策略;MAC層採用了完全確認的數據傳輸模式;
低成本、低功耗 :ZigBee模塊的複雜度不高,ZigBee協議免專利費,再加之使用的頻段無需付費,所以它的成本較低;ZigBee的傳輸速率低,發射功率僅爲1mW,而且採用了休眠模式,功耗低
高安全 :採用高級加密標準(AES 128) 的對稱密碼;
低數據速率 - Zigbee設備類型:(P5)
協調器(ZC Coordinator):主要負責無線網絡的建立與維護;(每個ZigBee網絡必須有一個)
路由器(ZR Router):主要負責無線網絡的路由;( (1)允許其他網絡設備加入 (2)多跳路由 (3)協助電池供電的子節點通信(4)自己作爲終端節點應用)
終端節點(ZED End-device):主要負責無線網絡數據的採集。(1)向路由節點傳遞數(2)沒有路由功能(3)低功耗(Zigbee的低功耗主要體現在這裏)(4)可選擇睡眠與喚醒。(路由因不斷轉發數據需電源供電,終端節點電池供電)) - Zigbee工作在ISM(工業、科學和醫療)頻帶,共規定了27個信道:(P7)
2.4GHz頻段 共16個信道,通信速率爲250kbps
915MHz頻段 共10個信道,通信速率爲40kbps
896MHz頻段 共1個信道,通信速率爲20kbps - Zigbee網絡拓撲結構:星型;網絡型;簇狀;(P8)
- Zigbee應用爲:週期性 ;反覆; 間斷數據採集應用;
- Zigbee模塊開發一般包括兩個文件:.h頭文件和.c文件(P)
.h文件可理解爲一份接口描述文件;
.c文件主要功能是對.h文件中聲明的外部函數進行具體實現。
補充:
- Zigbee網絡中傳輸的三類數據:
週期性數據:如家庭中水、電、氣三表數據的傳輸;
間斷性數據:如電燈、家用電器的控制等數據的傳輸;
反覆性的低反應時間的數據:如鼠標、操作杆傳輸的數據。 - 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芯片相關
- CC2530單片機是一款完全兼容8051內核,支持802.15.4協議的無線射頻單片機(P30)
CC2530的Flash(非易失性存儲器)容量可選: 32KB 64KB 128KB 256KB
CC2530有兩個晶振: 32MHz 晶振 32.768KHz(無線通信時必須採用外部32M晶振) - I/O口控制
CC2530內部自帶溫度傳感器:
使用步驟:
1、使能溫度傳感器
2、連接溫度傳感器到ADC
3、初始化ADC,確定參考電壓、分辨率等,啓動ADC讀取溫度數據
補充:
Zigbee地址相關
-
設備地址:(P134)
64位IEEE地址:長地址又稱 MAC地址或 擴展地址(全球唯一)
16位網絡地址:短地址 又稱邏輯地址(協調器地址爲0x0000,其他設備入網時由協調器分配)(1)在網絡中標識不同設備;(2)在網絡數據傳輸時指定目的地址和源地址; -
網絡地址:唯一標示網絡中的一個節點(用網絡地址來區分不同的節點);(P135)
-
網絡地址最多可以分配65536個節點,地址分配取決於整個網絡的架構,整個網絡的架構由一下3個值決定:1、網絡最大深度 2、每個父節點擁有的孩子節點最大數目 3、每個父節點擁有的孩子節點路由器的最大數目
同一父節點相連的終端節點的網絡地址是連續的
同一父節點相連的路由器節點的網絡地址通常是不連續的 -
端口:每個節點上最多支持240(1-240)個端口,每個節點上的所有端口共用一個發射/接收天線(用端口來區分同一節點的端口);
-
PANID:Zigbee網絡號 可手動設置(或自動隨機生成),如果指定的PANID被佔用則自動加1。
~PANID範圍是0X0001----0XFFFF;
~可以通過給不同的網絡指定不同的網絡ID號來區分網絡,避免干擾;
~如果設置爲0XFFFF,那麼協調器則隨機產生一個值作爲自己的PANID;非易失性閃存條目ID號(NV操作用到的ID則定義在0x0201~0x0FFF 範圍內!)
-
數據發送:調用**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 )
-
數據接收:調用**osal_msg_receive()**函數從消息隊列中接收一個消息(包含事件與數據)
uint8 *osal_msg_receive( uint8 task_id ) -
數據存儲位置(結構):(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;
- OSAL(系統抽象層)是一種支持多任務運行的系統資源分配機制(P72)
OSAL主要功能:
任務註冊、初始化和啓動
任務間的同步、互斥
中斷處理
存儲器分配和管理
補充:
- IEEE802.15.4網絡的建立過程
- int main( )主函數實現硬件的初始化其中包括
事件驅動
-
首先記住 任務輪詢、事件驅動 必考;
-
Zigbee將事件和任務的事件處理函數聯繫方法:(P74)
1、建立一個事件表,保存各個任務的對應事件
2、建立另一個函數表,保存各個任務事件處理函數地址
3、將兩張表建立某種對應關係 -
OSAL工作原理(輪詢)osal_start_system(void)
通過tasksEvents指針訪問事件表的每一項,如果有時間發生,則查找函數表找到事件處理函數進行處理,處理完後,繼續訪問事件表,查看是否有事件發生,無限循環;(P75) -
協議棧定義的事件成爲系統強制事件:(P80)
AF_INCOMING-MSG-CMD
ZDO_STATE_CHANGE
ZDO_CB_MSG
AF_DATA_CONFIRM_CMD -
Zigbee協議棧爲半開源;
-
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);// 向緩衝區發送數據
-
串口回調函數:回調函數不是由該函數實現方直接調用的,而是在特定的事件或條件發生的,由另外的一方調用,用於對該事件或條件進行響應。因此,串口回調函數是在有串口操作(事件)發生時(自動觸發)調用的;(P89)
-
當應用有串口操作時,應該對應用程序模塊的工程屬性的編譯預處理的Definedsymbols下拉列表框中輸入“HAL_UART=TRUE”。(即用條件編譯來控制是否編譯與該模塊相關的程序,目的是爲了節約存儲資源);(P93)
-
程序中波特率的設置要與上位機(如串口助手)一致;
-
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號
第二參數:舉例條目開始的偏移量
第三參數:要寫入的數據長度
第四參數:執行要存放寫入或讀取數據函數緩衝區的指針 -
用戶只能使用條目ID範圍0x0201~0x0FFF
可在OSAL文件夾下的ZcomDef.h文件中添加自己的條目
如:#define Test_NV 0x0201 -
**函數名要考:** **事件添加函數**: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 )
補充:
- SYS_EVENT_MSG是系統事件,也是協議棧已經定義好的系統事件。
在文件ZcomDef.h中,事件號是一個16bit的常量,使用叫作獨熱碼(one-hot code)編碼,也是一個位表示一個事件,方便進行event的提取,這樣一個task最多可以有16個event,SYS_EVENT_MSG已經佔用了0x8000,故自定義的事件只能有15個; - 事件的提取和清除可以用簡單的位操作指令實現,事件的提取可以用位與操作 events & SYS_EVENT_MSG,事件的清除可以用異或操作實現,evets ^ SYS_EVENT_MSG;
Zigbee通信相關
-
Zigbee協議棧中的規範(Profile)和簇(Cluester)
Zigbee網絡中進行數據收發都是建立在應用規範基礎上的。每個應用規範都有一個ID來標示。在一個規範(Profile)下又提出了簇(Cluester)的概念,這個Cluester要理解爲一個應用領域下的一個特定對象。簇是由命令組成的。 -
同一規範下的發送命令(簇號)和接受命令(簇號)要相同才能通信;
-
Zigbee網絡通信必須建立在具體設備節點的具體通信端口:
網絡地址可以描述一個節點,用戶可使用簡單描述符來描述一個端口。(用戶可用的端口號是1-240) -
Zigbee通信模式:點播 廣播 組播(這一點重點,我覺得可能考設計題和程序題,所以我會在下面着重補充)
點播
發送模式:Addr16Bit
發送目的端口:目的節點的簡單描述符設定的工作端口
發送地址:目的節點的網絡地址
廣播
發送模式:AddrBroadcast
發送目的端口:目的節點的簡單描述符設定的工作端口
發送地址: 0xFFFF 全網發送 包括休眠節點
0xFFFD 只發往休眠節點
0xFFFC 發往所有路由節點
組播(同一組的節點才能通信)
發送模式:AddrGroup
發送目的端口:目的節點的簡單描述符設定的工作端口
發送地址:組ID -
#include “aps_groups.h”
1、設置組對象(ID 和 name)
2、加入對象組 aps_AddGroup()
3、退出組 -
Zigbee協議棧網絡管理
Zigbee協議棧實現網絡管理的函數:
獲得該節點的網絡地址:uint16 NLME_GetShortAddr(void)
獲得該節點的MAC地址:byte * NLME_GetExtAddr(void)獲得該節點的父節點網絡地址:uint16 NLME_GetCoordShortAddr(void) 獲得該節點的父節點MAC地址:void NLME_GetCoordExtAddr(byte *buf)
藍牙
- 採用高速跳頻擴展,實現語音和數據在短距離上的穩定無縫無線連接
在2.4GHz的ISM頻帶上設立79個帶寬爲GHz的信道,用每秒鐘切換1600次的頻率的跳頻(Hobbing)擴展技術實現信息的收發。
藍牙系統中的功能模塊分爲:無線射頻單元、鏈路控制單元、鏈路管理單元、軟件結構 - 微微網: 1主設備 7從設備
- 藍牙技術採用了全開放的框架結構
- 藍牙技術的系統結構分爲三大部分:
1.底層硬件模塊
2.中間協議層
3.高層應用 - 藍牙協議分爲四層:
1.核心協議:BaseBand、LMP、L2CAP、SDP;
2.電纜替代協議:RFCOMM;
3.電話傳送控制協議:TCS-Binary、AT 命 令 集;
4.選用協議:PPP、UDP/TCP/IP、OBEX、WAP、vCard、vCal、IrMC、 WAE。 - 近場通信NFC 及WIFI(瞭解一下,不考)
下面我整理了一下實驗的一些核心代碼,大家可以結合教材一起看,應該會在代碼題和設計題裏面考: