基于CC2430和ZigBee2006協(xié)議棧的通信模塊設計
3.1 串口部分程序
(1)串口初始化
主要是設置halUARTCfg_t結構體成員值:本文引用地址:http://dyxdggzs.com/article/157540.htm
通過(guò)對halUARTCfg_t賦值,可以設置波特率、字符數、數據位、停止位、奇偶校驗位和硬件流控等。其中call-BackFunc是自定義設置串口回調函數,即一旦串口有數據傳送,OSAL會(huì )就自動(dòng)轉到自定義的回調函數,執行自定義的操作。
(2)串口回調函數
首先調用Hal_UART_RxBufLen(uint8 port)函數確定串口數據的長(cháng)度,然后再調用HalUARTRead(uint8 port,uint8*buf,uintl6 len)讀取串口數據到自定義的串口數據緩沖區,并調用osal_set_event(byte task_id,UINTl6 event_flag)函數發(fā)送事件信號,進(jìn)行數據的無(wú)線(xiàn)發(fā)送。
3.2 無(wú)線(xiàn)接收、發(fā)送部分程序
(1)無(wú)線(xiàn)接收
當有數據通過(guò)無(wú)線(xiàn)發(fā)送到應用層時(shí),應用層會(huì )發(fā)送1個(gè)AE_INCOMING_MSG_CMD消息事件。
case AF_INCOMING_MSG_CMD:
GenericApp_MessageMSGCB(MSGpkt);
break:
這里表示收到AF_INCOMING_MSG_CMD消息事件,然后調用收到消息事件的信息處理函數GenericApp_MessageMSGCB(MSGpkt),開(kāi)始接收數據并通過(guò)涮用串口HalUARTWrite(uint8 port,uint8*buf,uintl6 len)寫(xiě)函數發(fā)送接收到的數據。
(2)無(wú)線(xiàn)發(fā)送
在串口回調函數中當串口有數據輸入時(shí),應用層會(huì )發(fā)送1個(gè)GENERICAPP_SEND_MSG_EVT消息事件。
調用GenericApp_SendThmMessage()數據發(fā)送函數,具體到TI/Chipcon公司所提供的ZigBee2006協(xié)議棧中即為AF_DataRequest()函數,具體形式如下:
結語(yǔ)
本文以CC2430為主體設計了無(wú)線(xiàn)通信模塊的硬件,并選用TI/Chipcon公司免費提供的ZigBee2006協(xié)議棧作為軟件開(kāi)發(fā)平臺。通過(guò)實(shí)驗驗證,設計的硬件節點(diǎn)基本達到了項目要求。經(jīng)調試,串口能夠正確地接收和發(fā)送數據,能夠實(shí)現多個(gè)無(wú)線(xiàn)節點(diǎn)(1個(gè)協(xié)調器,3個(gè)終端設備)在50 m左右的通信和數據傳輸,并通過(guò)計算機串口調試軟件測試正確。
評論