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