發送部分程序設計
發布時間:2012/4/16 12:15:20 訪問次數:649
在發送部分的程序段中,首先要判斷所NC7S08P5X要發送的數據長度是否大于一個數據包所能容納的最大長度(物理層數據最大可為127個字節,其中5個字節固定用于同步包頭,因此一個數據包最大可容納的數據長度為122個字節),若大于則須分片傳輸。由于之前已經配置好DMA通道,所以這里只要直接將要發送的數據寫入寄存器RFD即可。發送數據時還須要循環檢測RSSI的值是否有效,若RSSI值無效則說明當前信道被占用,程序應采用CSMA/CA機制,自動退避一段時間后,再次檢測RSSI值,只有當信道空閑時才能進行無線發送。若發送的數據需要接收端進行回復,則須進入接收模式。
CC2430發送部分程序流程圖如圖11-31所示。
在程序的具體實現上,為了給上層進一步的應用提供良好的封裝性及實用性,這里設計丁一個專門用來無線發送的函數供上層調用,其函數聲明如下:
BOOL radioSend (BYTEk transmitData, WORD dataLength,destAddr, BYTE seq, BYTE,,* receiveData, WORD* srcAddr)
其中,transmitData為字節型指針,用來存放待發送的數據;datalength為數據長度;FCF1和FCF2為兩個幀控制字;destAddr為要發送目的地址;seq為發送幀的序號;receiveData表示如果發送的這條命令需要對方回送數據,則里面存放的是回送來的數據,如果不需要,則不用關注這個變量;srcAddr為發送端的源地址;函數的返回值表示發送是否成功,TRUE表
示成功,FALSE表示發送失敗。
在發送部分的程序段中,首先要判斷所NC7S08P5X要發送的數據長度是否大于一個數據包所能容納的最大長度(物理層數據最大可為127個字節,其中5個字節固定用于同步包頭,因此一個數據包最大可容納的數據長度為122個字節),若大于則須分片傳輸。由于之前已經配置好DMA通道,所以這里只要直接將要發送的數據寫入寄存器RFD即可。發送數據時還須要循環檢測RSSI的值是否有效,若RSSI值無效則說明當前信道被占用,程序應采用CSMA/CA機制,自動退避一段時間后,再次檢測RSSI值,只有當信道空閑時才能進行無線發送。若發送的數據需要接收端進行回復,則須進入接收模式。
CC2430發送部分程序流程圖如圖11-31所示。
在程序的具體實現上,為了給上層進一步的應用提供良好的封裝性及實用性,這里設計丁一個專門用來無線發送的函數供上層調用,其函數聲明如下:
BOOL radioSend (BYTEk transmitData, WORD dataLength,destAddr, BYTE seq, BYTE,,* receiveData, WORD* srcAddr)
其中,transmitData為字節型指針,用來存放待發送的數據;datalength為數據長度;FCF1和FCF2為兩個幀控制字;destAddr為要發送目的地址;seq為發送幀的序號;receiveData表示如果發送的這條命令需要對方回送數據,則里面存放的是回送來的數據,如果不需要,則不用關注這個變量;srcAddr為發送端的源地址;函數的返回值表示發送是否成功,TRUE表
示成功,FALSE表示發送失敗。