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