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