基於BasicRF點對點無線開發基礎知識


BasicRF點對點概述

BasicRF軟件包有四大部分:

<1> 硬件層:Hardware Layer。

<2> 硬件抽象層:Haware Abstraction Layer。

<3> 基本無線傳輸層:Basic RF Layer。

<4> 應用層:Appliaction。

 

 

 

BasicRF的特點:

BasicRF包括了IEEE 802.15.4標准數據包的發送和接收,采用了與IEEE 802.15.4 MAC兼容的數據包結構和ACK結構。在使用中,有如下的功能限制
<1> 不具備“多跳”、“設備掃描”功能。
<2> 不提供多種網絡設備,如協調器、路由器等。所有的節點為同一等級,只能實現點對點的數據傳輸。
<3> 傳輸時會等待信道空閑,但不會按照IEEE 802.15.4 CSMA-CA的要求進行兩次CCA檢測。
<4> 不支持數據重傳。

 

basic_rf.h文件中,有一個basicRfCfg_t類型的數據結構定義,該結構體包含了無線相關的所有參數。
在應用開發中,先創建一個該類型的結構體變量,再根據實際情況,把本機地址網絡ID通信信道應答信號加密設置填充到該結構體變量中。然后再通過basicRfInit(basicRfCfg_t* pRfConfig)初始化函數將參數寫入到無線模塊中。
注意:兩個要建立通信的節點,網絡ID和通信信道必須一致

 

 

 

無線模塊初始化

hal_rf.c文件中,有一個halRfInit()函數,該函數初始化射頻無線模塊,設置默認配置選項,允許自動確認和允許隨機數產生。
在應用開發中,直接調用該函數來初始化無線模塊。

 

 

 

 

常用API函數

 

 

 

basicRfInit(basicRfCfg_t *pRfConfig) 無線傳輸初始化函數

 

basicRfSendPacket(uint16 destAddr, uint8 *pPayload, uint8 length);無線數據發送函數  1、目的地址2、發送數據內容的首地址3、發送數據的長度

在basic_rf.c文件中,有一個basicRfSendPacket()函數,負責無線數據的發送。
該函數有三個參數,依次是:
uint16 destAddr———->發送目標的地址
uint8* pPayload———->發送內容的數組
uint8 length———->發送數據的長度
在應用開發中,先創建一個字節數組作為數據發送的緩沖區,將要發送的內容置於數組之中,然后直接調用該無線數據發送函數進行發送即可。
函數執行成功返回:SUCCESS
函數執行失敗返回:FAILED

 

 

basicRfReceiveOn(void); 開啟接收功能

basicRfReceiveOff(void); 關閉接收功能

在無線數據的接收中,首先要查詢並判斷是否接收到新的數據,如果有,則把接收的數據讀出去來,因此需要用到basic_rf.c文件中的2API函數

basicRfPacketIsReady(void) 是否有數據需要接受

basicRfReceive(uint8 *pRxData, uint16 len, int16 *pRssi); 數據接收函數pRxData指向一個地址,用於存放接收的內容,len接收數據的長度pRssi表示鏈路傳輸質量

首先調用basicRfPacketIsReady()函數來查詢是否收到新的數據包,如果有新的數據包,則返回TRUE新的數據包信息會存放在basicRfRxInfo_t類型結構體的rxi成員中。在應用開發中,我們不需要過多關注該結構體。因為當查詢到新的數據包后,調用basicRfReceive()函數就可以把新接收到的數據復制到自定義的數據緩沖區中,然后進行應用開發。

basicRfReceive()函數有三個參數,依次是:
uint8* pRxData
———->數據接收緩沖區
uint8 len
———->要接收的數據長度
int16* pRssi
———->無線信號強度,實際應用中填NULL
函數執行成功返回:接收的字節數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM