本文档介绍 BlueNRG-LP、BlueNRG-LPS 2.4 GHz 无线电私有底层驱动程序,它提供对 BlueNRG-LP 和 BlueNRG-LPS设备的访问权限,以便在不使用蓝牙链路层的情况下发送和接收数据包。使用中心数据结构和 API 的应用程序可以控制数据包的不同特征,例如:间隔、通道频率、数据长度等。
BlueNRG-LP 和 BlueNRG-LPS 无线电操作
BlueNRG-LP 和 BlueNRG-LPS 2.4 GHz 无线电底层驱动接口控制 2.4 GHz 无线电。此外,它还与采用慢速32kHz 时钟的唤醒定时器、RAM 存储器,以及处理器相互作用。
RAM 用于存储无线电设置、当前无线电状态、接收到的数据,以及待发送的数据。无线电底层驱动可以管理最多 8 种不同的无线电配置(也称为状态机)。
有几个功能是由无线电自主管理的,无需处理器干预:
- 数据包加密
- 通信定时
- 睡眠管理
随附部分附加功能,与蓝牙低功耗标准(如蓝牙通道利用率)关联性较高。
数据包格式
一个数据包由六个字段组成,其中只有四个是用户可访问的:
- NetworkID 是设备的地址,以 4 个字节表示。接收设备只接受这样的数据包:其 NetworkID 字段与自身地址中的 NetworkID 字段相同。NetworkID 应该满足以下规则:
‒其中连续的 0 或 1 不超过 6 个
‒其 4 个八位字节不都相等
‒转换不超过 24 个
‒在最有效的 6 位中至少有 2 个转换
用户可以通过 API RADIO_SetTxAttributes()或 API HAL_RADIO_SetNetworkID()访问 NetworkID 字段。
- Header 可以接受任何值,其长度为 1 字节。它可以作为一个字节的数据,但未对该字段进行加密。
- Length 表示数据字段的长度。用户为待发送的数据包设置该值,或者从接收到的数据包中读取该值。
BlueNRG-LP、BlueNRG-LPS 链路层可以接收的最大有效负载字节数(带加密或不带加密)为 255。用户可以通过 API RADIO_SetMaxRecievedLength()在硬件层设置该阈值(从 0 到 255)。
对于 BlueNRG-LP 和 BlueNRG-LPS,长度字段的最大值为 255,但有一些例外。如果启用了加密,则数据字段的最大长度必须减去 4 字节。这 4 字节是为添加到数据包中的 MIC 字段保留的。