本文檔介紹 BlueNRG-LP、BlueNRG-LPS 2.4 GHz 無線電私有底層驅(qū)動程序,它提供對 BlueNRG-LP 和 BlueNRG-LPS設(shè)備的訪問權(quán)限,以便在不使用藍牙鏈路層的情況下發(fā)送和接收數(shù)據(jù)包。使用中心數(shù)據(jù)結(jié)構(gòu)和 API 的應(yīng)用程序可以控制數(shù)據(jù)包的不同特征,例如:間隔、通道頻率、數(shù)據(jù)長度等。
BlueNRG-LP 和 BlueNRG-LPS 無線電操作
BlueNRG-LP 和 BlueNRG-LPS 2.4 GHz 無線電底層驅(qū)動接口控制 2.4 GHz 無線電。此外,它還與采用慢速32kHz 時鐘的喚醒定時器、RAM 存儲器,以及處理器相互作用。
RAM 用于存儲無線電設(shè)置、當(dāng)前無線電狀態(tài)、接收到的數(shù)據(jù),以及待發(fā)送的數(shù)據(jù)。無線電底層驅(qū)動可以管理最多 8 種不同的無線電配置(也稱為狀態(tài)機)。
有幾個功能是由無線電自主管理的,無需處理器干預(yù):
- 數(shù)據(jù)包加密
- 通信定時
- 睡眠管理
隨附部分附加功能,與藍牙低功耗標準(如藍牙通道利用率)關(guān)聯(lián)性較高。
數(shù)據(jù)包格式
一個數(shù)據(jù)包由六個字段組成,其中只有四個是用戶可訪問的:
- NetworkID 是設(shè)備的地址,以 4 個字節(jié)表示。接收設(shè)備只接受這樣的數(shù)據(jù)包:其 NetworkID 字段與自身地址中的 NetworkID 字段相同。NetworkID 應(yīng)該滿足以下規(guī)則:
?其中連續(xù)的 0 或 1 不超過 6 個
?其 4 個八位字節(jié)不都相等
?轉(zhuǎn)換不超過 24 個
?在最有效的 6 位中至少有 2 個轉(zhuǎn)換
用戶可以通過 API RADIO_SetTxAttributes()或 API HAL_RADIO_SetNetworkID()訪問 NetworkID 字段。
- Header 可以接受任何值,其長度為 1 字節(jié)。它可以作為一個字節(jié)的數(shù)據(jù),但未對該字段進行加密。
- Length 表示數(shù)據(jù)字段的長度。用戶為待發(fā)送的數(shù)據(jù)包設(shè)置該值,或者從接收到的數(shù)據(jù)包中讀取該值。
BlueNRG-LP、BlueNRG-LPS 鏈路層可以接收的最大有效負載字節(jié)數(shù)(帶加密或不帶加密)為 255。用戶可以通過 API RADIO_SetMaxRecievedLength()在硬件層設(shè)置該閾值(從 0 到 255)。
對于 BlueNRG-LP 和 BlueNRG-LPS,長度字段的最大值為 255,但有一些例外。如果啟用了加密,則數(shù)據(jù)字段的最大長度必須減去 4 字節(jié)。這 4 字節(jié)是為添加到數(shù)據(jù)包中的 MIC 字段保留的。