CC2430和ZigBee2006協(xié)議棧的通信模塊設計
摘要:介紹了CC2430芯片的基本特性和ZigBee2006協(xié)議棧的基本內容。論述了以CC22430芯片為核心的無線通信模塊的硬件設計,和以ZigB-ee2006協(xié)議棧為基礎的軟件設計。在實現短距離多網絡節(jié)點間的無線通信的同時,使用串口實現無線通信模塊與終端采集部分和本地控制部分的數據傳輸。
引言
??? 隨著微電子技術、汁算技術和無線通信等技術的進步,無線傳感器網絡被列為21世紀最有影響的21項技術和改變世界的10大技術之一。它能夠實時監(jiān)測、感知和采集各種環(huán)境或監(jiān)測對象的信息,并對其進行處理。傳感器節(jié)點是組成無線傳感器網絡的基本單位,是構成無線傳感器網絡的基礎平臺。
??? ZigBee是一種新興的短距離、低速率無線網絡技術,是一組基于IEEE 802.15.4無線標準研制開發(fā)的,有關組網、安全和應用軟件的技術標準。它具有功耗低、成本低、安全、工作頻段靈活等優(yōu)點,通過和傳感器組成無線傳感器ZigBee網絡,使得數據的自動采集、分析和處理變得更加容易,可以作為決策輔助系統(tǒng)的重要組成部分。
1 CC2430及ZigBee協(xié)議棧體系結構
??? CC2430是真正的系統(tǒng)芯片(SoC)CMOS解決方案,能夠提高性能并滿足以ZigBee為基礎的2.4 GHz ISM波段應用對低成本、低功耗的要求。它結合了高性能的2.4GHz DSSS(直接序列擴頻)射頻收發(fā)器核心和1顆工業(yè)級小巧高效的8051控制器。CC22430在單個片上集成了ZigBee射頻(RF)前端、內存和微控制器,使用1個8位MCU(8051),具有32/64/128 KB的編程閃存和8 KB的RAM,還包含模/數轉換器(ADC)、定時器(Timer)、AES128安全協(xié)處理器、看門狗定時器(watchdog timer)、32 kHz晶振的休眠模式定時器、上電復位電路、掉電檢測電路以及21個可編程I/0引腳。CC2430的8051內核的目標代碼兼容標準8051微處理器,可以使用標準8051的匯編器和編譯器進行軟件開發(fā)。其21個可編程I/O引腳均可以通過軟件設定1組SFR寄存器的位和字節(jié),使這些引腳作為通常的I/O口或者作為接ADC、定時器或USART部件的外圍設備I/O口使用。
??? ZigBee協(xié)議棧由一組子層構成,每層為其上層提供一組特定的服務:數據實體提供數據傳輸服務,管理實體提供全部其他服務。每個服務實體通過一個服務接入點(SAP)為上層提供服務接口,并且每個SAP提供一系列的基本服務指令來完成相應的功能。ZigBee協(xié)議棧的體系結構模型如圖1所示,IEEE 802.15.4標準定義了物理層(PHY)和介質接入控制子層(MAC);ZigBee聯盟定義了網絡層和應用層(APL)框架的設計。
??? ZigBee協(xié)議棧于2004年發(fā)布第1版,稱為ZigBee2004。ZigBee2004是全源代碼的協(xié)議棧,這個協(xié)議棧已經有了網絡的概念,并能完成一些簡單的通信。但它只能組建串狀網絡和星狀網絡,如果需要組建網狀網絡必須外加程序,另外在安全和路由方面也做得不是很理想。ZigB-ee2006協(xié)議棧很好地解決了網絡組網問題,整個協(xié)議棧的安全性更好,層次性更強,功耗方面也有了進步,并實現了網狀網絡。在ZigBee-2006協(xié)議棧中已經將CC2430的底層驅動全部固化在協(xié)議棧中,可以直接調用。
??? 綜上所述,選用CC2430芯片作為無線通信模塊硬件核心芯片,軟件部分選用ZigBee2006協(xié)議棧來實現無線模塊之間的通信功能。
2 硬件設計
??? 無線通信部分作為監(jiān)測系統(tǒng)中重要的數據傳輸通道,不僅需要實現無線通信模塊之間的數據接收和發(fā)送功能,同時還需要提供數據接口與終端數據采集部分及本地主控制系統(tǒng)以進行連接。系統(tǒng)結構如圖2所示。
??? 圖3所示為無線模塊硬件原理圖。電路選用CC2430芯片作為無線傳感器網絡節(jié)點的核心CPU。選用1個32.768 kHz的石英諧振器(X2)和2個電容(C441和C431)組成32.768 kHz的晶振電路;選用1個32 MHz的石英諧振器(X1)和2個電容(C191和C211)組成32 MHz的晶振電路。電壓調節(jié)器可為所有要求1.8 V電壓的內部電源供電,電容C241和C421是用來作為電源濾波的去耦合電容,以提高芯片工作的穩(wěn)定性。電路中J1是10引腳JTAG仿真器接口,J2是3.3 V電源接口,J3是CC2430芯片擴展輸出口,在擴展輸出口上主要預留了SPI口和整個PO I/O口。設計了2個發(fā)光二極管指示燈,作為電路調試指示燈。使用1個非平衡天線,為了使天線性能更好,在天線與CC2430之間連接了1個非平衡變壓器。非平衡變壓器由電容C341和電感L321、L331、L341以及1個PCB微波傳輸線組成,整個結構滿足RF輸入/輸出匹配電阻(50 Ω)的要求。
3 協(xié)議棧軟件設計
??? 軟件開發(fā)的軟件環(huán)境:IAR 7.30B、數據分析儀、串口調試工具以及各硬件驅動軟件等;硬件環(huán)境:計算機、CC2430開發(fā)板等。
??? 系統(tǒng)軟件基于TI/Chipcon公司免費提供的ZigBee2006協(xié)議棧,以ZStack-1.4.3-1.2.1版本中GenericApp例程為基礎。GenericApp例子基本功能很齊全,而且在ZStack上實現了無線網絡數據傳輸。例程沒有多余的功能,所以是典型的ZStack模板,即為用戶提供了一個通用模板,可以通過它建立自己的應用程序。因此,建立一個項目的方法主要是改動應用層(APP)程序。
??? 無線通信模塊通過串口分別實現與數據采集部分及本地主控制部分的連接。因此,應用層軟件主要功能是實現串口數據的收發(fā)和無線網絡數據傳輸。在ZStack程序中嵌入了實時操作系統(tǒng),用于統(tǒng)一調度網絡組建、節(jié)點加入、數據收發(fā)等功能運行。其工作機制主要是多任務事件運行機制,對于同一個任務可能有多種事件發(fā)生,需要執(zhí)行不同的事件處理。為了方便,對于每個任務的事件處理函數都統(tǒng)一在一個事件處理函數中實現,然后根據任務ID號(task id)和該任務的具體事件(event)調用某個任務的事件處理函數。進入該任務的事件處理函數之后,再根據event來判別是該任務的哪一種事件發(fā)生,進而執(zhí)行相應的事件處理。任務處理部分具體流程如圖4所示。
??? 下面詳細介紹串口部分和無線接收、發(fā)送部分程序。
3.1 串口部分程序
??? (1)串口初始化
??? 主要是設置halUARTCfg_t結構體成員值:
??? 通過對halUARTCfg_t賦值,可以設置波特率、字符數、數據位、停止位、奇偶校驗位和硬件流控等。其中call-BackFunc是自定義設置串口回調函數,即一旦串口有數據傳送,OSAL會就自動轉到自定義的回調函數,執(zhí)行自定義的操作。
??? (2)串口回調函數
??? 首先調用Hal_UART_RxBufLen(uint8 port)函數確定串口數據的長度,然后再調用HalUARTRead(uint8 port,uint8*buf,uintl6 len)讀取串口數據到自定義的串口數據緩沖區(qū),并調用osal_set_event(byte task_id,UINTl6 event_flag)函數發(fā)送事件信號,進行數據的無線發(fā)送。
3.2 無線接收、發(fā)送部分程序
??? (1)無線接收
??? 當有數據通過無線發(fā)送到應用層時,應用層會發(fā)送1個AE_INCOMING_MSG_CMD消息事件。
case AF_INCOMING_MSG_CMD:
??? GenericApp_MessageMSGCB(MSGpkt);
??? break:
??? 這里表示收到AF_INCOMING_MSG_CMD消息事件,然后調用收到消息事件的信息處理函數GenericApp_MessageMSGCB(MSGpkt),開始接收數據并通過涮用串口HalUARTWrite(uint8 port,uint8*buf,uintl6 len)寫函數發(fā)送接收到的數據。
??? (2)無線發(fā)送
??? 在串口回調函數中當串口有數據輸入時,應用層會發(fā)送1個GENERICAPP_SEND_MSG_EVT消息事件。
??? 調用GenericApp_SendThmMessage()數據發(fā)送函數,具體到TI/Chipcon公司所提供的ZigBee2006協(xié)議棧中即為AF_DataRequest()函數,具體形式如下:
結語
??? 本文以CC2430為主體設計了無線通信模塊的硬件,并選用TI/Chipcon公司免費提供的ZigBee2006協(xié)議棧作為軟件開發(fā)平臺。通過實驗驗證,設計的硬件節(jié)點基本達到了項目要求。經調試,串口能夠正確地接收和發(fā)送數據,能夠實現多個無線節(jié)點(1個協(xié)調器,3個終端設備)在50 m左右的通信和數據傳輸,并通過計算機串口調試軟件測試正確。
評論
查看更多