PAN211x FIFO 和帧结构应用指南¶
1 FIFO操作¶
PAN211x 有两个 64 字节的 FIFO。在普通型模式下,只存在收或发单向通信,可以拼接为 128 字节使用。在增强型或 M1 模式下仅支持 64 bytes,分别为发送和接收 FIFO。
PAN211x FIFO 仅能存储和读取单个数据包的信息。如果 FIFO 中已存有一个数据包,在写入新数据前应先读取完毕,否则前一个数据包将被覆盖。
PAN211x FIFO 不支持清空操作,写入新的数据时会覆盖原有 FIFO 的内容。
2 帧结构参数¶
2.1 发射/接收模式(TrxMode)¶
用于选择芯片默认发射或接收的模式。使用者可以在使用过程中自行切换。
2.2 工作模式(WorkMode)¶
普通型(Normal)模式:不带自动重传和ACK的单向通信模式。
普通型的帧结构包含前导码,地址,数据和CRC。
前导码
地址
数据
CRC校验
3 字节
2-5 字节
0~64/128字节
0~3字节
前导码(Preamble)的比特序列通常为固定的,它不能由寄存器配置。前导码用于使接收端解调器与输入比特流同步。
地址用于接收端对来自发射端的数据包进行解调,如果数据包的地址与接收端的地址相同,它会把后续有效数据保存在RX FIFO中,否则丢弃后续有效负载并恢复同步。
CRC是数据包中的强制性错误检测机制。如果启用了CRC,接收端将检查接收到的数据包的CRC,如果CRC有误,则产生对应的CRC错误中断。
增强型(Enhance)模式:带自动重传和ACK的双向通信模式。
普通型的帧结构包含前导码,地址,数据和CRC。
前导码
地址
长度标识
PID标识
NOACK标识
数据
CRC校验
3 字节
2-5 字节
7bit
2bit
1bit
0~64字节
0~3字节
长度标识:表示数据包的长度,
PID标识:用于确定发射端数据的唯一性。发射端的PID将填入增强型帧结构中的PID字段。接收端根据需要自动解析增强型帧结构的PID字段,用户通过读取对应的寄存器获取数据包PID。
NOACK标识:表示是否需要回复ACK数据包。
2.3 协议帧(ChipMode)¶
PAN211x_only_Start PAN211x的协议帧分为XN297帧格式和Bluetooth-LE Beacon 帧格式。 PAN211x_only_End PAN216x_only_Start PAN216x的协议帧分为XN297帧格式, FS01帧格式,FS32帧格式和Bluetooth-LE Beacon 帧格式。 PAN216x_only_End
上一节已经对XN297的普通型和增强型帧结构进行了介绍,下面介绍其他帧结构。
PAN216x_only_Start FS01的普通型帧结构如下表:
前导码 |
地址 |
数据 |
CRC校验 |
---|---|---|---|
1 字节 |
2-5 字节 |
0~64/128字节 |
0~3字节 |
FS01的增强型帧结构如下表:
前导码 |
地址 |
长度标识 |
PID标识 |
NOACK标识 |
数据 |
CRC校验 |
---|---|---|---|---|---|---|
3 字节 |
2-5 字节 |
6bit |
2bit |
1bit |
0~64字节 |
0~3字节 |
FS32的普通型帧结构如下表:
前导码 |
地址 |
数据 |
CRC校验 |
---|---|---|---|
1 字节 |
2-5 字节 |
0~64/128字节 |
0~3字节 |
FS32的增强型帧结构如下表:
前导码 |
地址 |
长度标识 |
PID标识 |
NOACK标识 |
数据 |
CRC校验 |
---|---|---|---|---|---|---|
3 字节 |
2-5 字节 |
7bit |
2bit |
1bit |
0~64字节 |
0~3字节 |
PAN216x_only_End
Bluetooth-LE Beacon 帧结构表如下表(不支持增强型):
前导码 |
地址 |
帧头标识位0 |
帧头标识位0 |
长度 |
数据 |
CRC校验 |
---|---|---|---|---|---|---|
1 字节 |
2-5 字节 |
0~1字节 |
0~1字节 |
0~1字节 |
0~128字节 |
0~3字节 |
2.4 频道(Channel)¶
参数说明:
芯片所用信道的中心频点,支持2400MHz~2483MHz,总计84个频点。
使用要点:
1Mbps 速率下,16MHz 倍频点接收灵度较差,不推荐使用。
2Mbps 速率下,8MHz 倍频点及其倍频点 ±1MHz 接收灵敏度较差,不推荐使用。例如2408MHz 是 8 的整数倍,因此 2407,2408,2409 三个频点均不推荐使用。
250kbps 速率下,4MHz 倍频点接收灵敏度较差,不推荐使用。
当前频点的 4MHz 倍频点在近距离大功率的情况下存在接收串扰,组网时需要注意。例如使用2402MHz频点接收时会受到2406MHz,2410MHz,2414MHz等频点的干扰。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x39[7:0] |
RF_CH |
通道号: |
2.5 速率(DataRate)¶
参数说明:
数据传输速率设置,支持1Mbps,2Mbps 和 250Kbps。
使用要点:
较低的空中数据速率比使用较高的空中数据速率具有更好的接收机灵敏度。
较高的空中数据速率可以降低平均电流消耗和减少空中碰撞的概率。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x36[5:4] |
DATARATE |
00 : 1Mbps |
2.6 功率(TxPower)¶
参数说明:
发射功率设置,支持0dBm ~ 9dBm。
使用要点:
较高的发射功率可以提高通信范围,但也可能增加功耗和干扰。
SDK中对0dBm提供了两种配置,一个是默认配置
PAN211_TXPWR_0dBm
,此配置下的谐波较好,有利于过认证,但是功耗较大。另外一个是PAN211_TXPWR_0dBm_LOWPWR
,此配置下的谐波较差,不加匹配不利于过认证,但是功耗比较小,在 10.5mA 左右。
相关寄存器:
略。
2.7 CRC校验(CRC)¶
参数说明:
对帧结构中的部分数据进行校验计算得到的CRC校验码。CRC校验码长度支持0,1,2 和 3 字节。
使用要点:
CRC校验可以提高通信的可靠性。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x07[7:6] |
CRC_MODE |
00:CRC DISABLE |
2.8 使能动态数据长度(EnDPL)¶
参数说明:
利用增强型帧结构中的”长度”域实现可变包长的功能。
使用要点:
使能此功能后,发射端根据数据长度自动填充增强型帧结构中的”长度”域,发送不同长度的数据包。
使能此功能后,接收端根据增强型帧结构中的”长度”域读取 RX_PAYLOAD_LENGTH 获取接收到包的数据长度。
关闭此功能时,数据包实际收发长度为固定长度,即TxLen和RxLen决定。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x08[4] |
DPY_EN |
增强型模式下: |
P0 0x77[7:0] |
RX_PAYLOAD_ |
接收到包的长度 |
2.9 白化(EnWhiten)¶
参数说明:
白化是一种数据处理的技术,通过对原始数据叠加伪随机码的方式,使得数据中的0和1更加均匀分布,提高通信的可靠性。
使用要点:
为了提高通信的可靠性,总是建议使能此功能。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x07[3] |
WHITEN_ENABLE |
白化功能是否使能 |
2.10 使能无应答(EnTxNoAck):¶
参数说明:
自动应答功能(Auto Acknowledgement)是确保数据可靠传输的重要机制。该功能允许接收端在成功接收到数据包后,自动向发送端返回一个确认包(ACK),以确认数据包的正确接收。
使用要点:
在增强型模式中,对应增强型帧结构中的“NOACK”标识。
如果NOACK标识为0,意味着接收端需要回复ACK数据包,如果接收端未发送ACK数据包,则发送端自动重传。
如果NOACK标识为1,意味着接收端不需要发送应答包,发射端也不会自动重传。
增强型模式中,如果TX_NOACK寄存器设置为0,FIFO不会自动区分发射FIFO和接收FIFO。因此发射端和接收端在需要处理ACK数据包的情况下,需要设置TX_NOACK为1。
在普通型模式中,由于普通型帧结构不包含NOACK标识,因此需要双方约定是否需要ACK。
启用此功能之后,发送端期望收到ACK数据包,否则自动重传,接收端在接收到数据后会自动切换到发射状态,发送ACK数据包。这种模式也称为NORMAL_M1 模式。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x07[1] |
TX_NOACK |
1:增强型模式下TX_NOACK位为1 |
P0 0x08[0] |
NORMAL_M1 |
增强模式1,不能和ENHANCE模式或连续收发模式同时使用, |
2.11 发射数据长度(TxLen)¶
参数说明:
发射数据长度设置,指定发射数据的字节数。普通型模式支持0 ~ 128字节,增强型模式支持0 ~ 64字节。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x0A[7:0] |
TX_PAYLOAD_LENGTH |
发射端PAYLOAD长度信息 |
2.12 接收数据长度(RxLen)¶
参数说明:
接收数据长度设置,指定接收数据的字节数。普通型模式支持0 ~ 128字节,增强型模式支持0 ~ 64字节。
使用要点:
使能动态数据长度(EnDPL)时不需要配置此参数。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x09[7:0] |
RX_PAYLOAD_LENGTH |
接收端PAYLOAD长度信息 |
2.13 收发切换延时(TRxDelayTimeUs)¶
参数说明:
收发自动切换的延迟时间。范围为0 ~ 32767us。
使用要点:
增强型发送端的发送转接收之间的延时时间通常设置为0。
增强型接收端接收转发送时,如果需要读取ACK数据,则延迟时间要根据读取的数据长度和ACK数据长度来决定,需要处理的数据时间越长,则设置的延迟时间越长。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x0D[7:0] |
TRX_TRANS_WAIT |
增强模式下,发送转接收或者 |
P0 0x0E[6:0] |
TRX_TRANS_WAIT |
增强模式下,发送转接收或者 |
2.14 接收超时(RxTimeoutUs)¶
参数说明:
接收超时时间设置。范围为0 ~ 65535us。
使用要点:
在增强型模式或普通型带ACK的模式中,指发射端的ACK数据包接收超时时间设置。发射端在发送数据包之后,如果在RxTimeoutUs时间内没有收到应答包,会自动重发上一次的数据包。
在普通型不带ACK的模式中,如果采用单次带超时的接受模式,该配置指接收端的接收超时时间设置,单位为us。接收端如果在RxTimeoutUs时间内没有收到数据包,会触发超时中断。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x2B[7:0] |
REG_RX_TIMEOUT[7:0] |
接收超时设置,低8位,单位:微秒。 |
P0 0x2C[7:0] |
REG_RX_TIMEOUT[15:8] |
接收超时设置,高8位,单位:微秒。 |
2.15 自动重传延时(AutoDelayUs)¶
参数说明:
自动应答发射延时时间设置。发射端在没有收到应答包之后,自动发射应答包的延时时间,单位为us。范围:250,500,750,1000… 3750, 4000us。
使用要点:
仅增强型或普通型带ACK的模式可用。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x29[7:4] |
ARD |
自动传输延时 |
2.16 自动重传最大次数(AutoMaxCnt)¶
参数说明:
自动重传的最大次数设置,指定发射端在没有收到应答包之后,自动发射应答包的最大次数。如果设置为0,则不会自动重传。范围:0 ~ 15次。
使用要点:
仅增强型模式可用。
发射端如果设置自动重传最大次数为 0,则不会自动重传,FIFO不自动区分发射FIFO和接收FIFO。
发射端如果设置自动重传最大次数为 n(n > 0),则发射端发射没有接收到应答包后的最大重传次数为 n-1 次,总共发射数据包的次数为 n 次。FIFO自动区分发射FIFO和接收FIFO。
接收端在收到数据包后仅发射一次ACK应答包,发射ACK应答包的次数与ARC寄存器无关。
接收端如果需要填写ACK应答包的数据, ARC寄存器必须至少设置为1,否则FIFO不自动区分发射FIFO和接收FIFO。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x29[3:0] |
ARC |
自动传输次数设置 |
2.17 地址¶
PAN211x的地址寄存器的配置默认顺序是按照 [7:0], [15:8] ,… , [39:32] ,即低字节到高字节的顺序配置的。297模式在空中实际的发射顺序是高字节到低字节,Bluetooth-LE Beacon 模式空中实际的发射顺序为低字节到高字节。
发射地址长度(TxAddrWidth)和接收地址长度(RxAddrWidth): 参数说明:
发送和接收地址宽度设置,指定发射和接收地址的字节数。范围:2 ~ 5
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x08[1:0] |
ADDR_BYTE_ |
地址宽度设置: |
发射地址(TxAddr): 参数说明:
发射地址设置,最长为五个字节的十六进制地址。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x14[7:0] |
TX_ADDR[7:0] |
|
P0 0x15[7:0] |
TX_ADDR[15:8] |
|
P0 0x16[7:0] |
TX_ADDR[23:16] |
|
P0 0x17[7:0] |
TX_ADDR[31:14] |
|
P0 0x18[7:0] |
TX_ADDR[39:32] |
接收地址(RxAddr): 参数说明:
接收地址设置,支持6个通道最长为五个字节的十六进制地址。
使用要点:
当地址长度小于5字节时,优先使用低字节。
默认使用Pipe0地址,五个字节任意可配置,不建议使用0x5555555555,0xaaaaaaaaaa,0x0000000000,0xFFFFFFFFFF这样的地址。
使用多通道功能时,最多可配置6个接收通道。
第0通道的地址任意可配置,第1~5通道的地址共享高四字节。
所有数据管道的地址会被同时搜索,但每次只能有一个数据管道接收数据包。
所有数据管道都支持普通和增强型模式。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x0F[7:0] |
RX_ADDR[7:0] |
Pipe0 Rx Address0配置寄存器 |
P0 0x10[7:0] |
RX_ADDR[15:8] |
Pipe0 Rx Address1配置寄存器 |
P0 0x11[7:0] |
RX_ADDR[23:16] |
Pipe0 Rx Address2配置寄存器 |
P0 0x12[7:0] |
RX_ADDR[31:14] |
Pipe0 Rx Address3配置寄存器 |
P0 0x13[7:0] |
RX_ADDR[39:32] |
Pipe0 Rx Address4配置寄存器 |
P0 0x20[7:0] |
PIPE1_ADDR[7:0] |
Pipe1 Rx Address0配置寄存器 |
P0 0x21[7:0] |
PIPE1_ADDR[15:8] |
Pipe1 Rx Address1配置寄存器 |
P0 0x22[7:0] |
PIPE1_ADDR[23:16] |
Pipe1 Rx Address2配置寄存器 |
P0 0x23[7:0] |
PIPE1_ADDR[31:14] |
Pipe1 Rx Address3配置寄存器 |
P0 0x24[7:0] |
PIPE1_ADDR[39:32] |
Pipe1 Rx Address4配置寄存器 |
P0 0x25[7:0] |
PIPE2_ADDR[7:0] |
Pipe2 Rx Address0配置寄存器 |
P0 0x26[7:0] |
PIPE3_ADDR[7:0] |
Pipe3 Rx Address0配置寄存器 |
P0 0x27[7:0] |
PIPE4_ADDR[7:0] |
Pipe4 Rx Address0配置寄存器 |
P0 0x28[7:0] |
PIPE5_ADDR[7:0] |
Pipe5 Rx Address0配置寄存器 |
3 Bluetooth-LE Beacon 帧格式参数¶
3.1 功率(TxPower):¶
见上一章描述。
3.2 发射数据长度(TxLen)¶
见上一章描述。
3.3 接收数据长度(RxLen)¶
见上一章描述。
3.4 蓝牙频道(BLEChannel)¶
Bluetooth-LE Beacon 支持 3 个广播频道,序号为 37,38 和 39,对应的实际的频点分别为 2402MHz,2426MHz,2480MHz。
3.5 帧头字节数(BLEHeadNum)¶
参数说明:
BLE 帧头字节数设置,指定 BLE 帧头字节数,范围:0 ~ 3。
0:不使用 header
1:Header 长度 1 个字节,内容为 length,length 由 TxLen 决定
2:Header 长度 2 个字节,内容为 BLEHead0 和 length,length 由 TxLen 决定
3:Header 长度 3 个字节,内容为 BLEHead0、BLEHead1 和 length,length 由 TxLen 决定
使用要点:
使用蓝牙广播包格式时,应设值为 2。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x19[6] |
HDR_LEN_EXIST |
HEADER和LENGTH配置: |
P0 0x19[5:4] |
HDR_LEN_NUMB |
当HDR_LEN_EXIST为1时生效。 |
3.6 帧头标识符 0(BLEHead0)¶
参数说明:
BLE 帧头标识符第一个字节设置,指定 BLE 帧头第一个字节。
使用要点:
低4比特为2时,表示蓝牙广播包(ADV_NONCONN_IND ),例如0x42。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x1B[7:0] |
TX_HEADER0 |
HDR_LEN_EXIST=1,且HDR_LEN_NUMB为0b’10或0b’11时生效 |
3.7 帧头标识符 1(BLEHead1)¶
参数说明:
BLE 帧头标识符第二个字节设置,指定 BLE 帧头第二个字节。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x1C[7:0] |
TX_HEADER1 |
HDR_LEN_EXIST=1,且HDR_LEN_NUMB为0b’11时生效 |
3.8 长度过滤模式(LengthFilterMode)¶
参数说明:
接收模式下的长度过滤,长度过滤的比较值为 RxLen。范围:0 ~ 3
0:不过滤 (PAN211_BLE_LEN_FILTER_DISABLE),接收任意长度的数据包
1: 仅接收Payload长度等于 RxLen 的数据包(PAN211_BLE_LEN_FILTER_EQUAL),其他Payload长度的数据包不会触发接收中断
2: 仅接收Payload长度大于 RxLen 的数据包(PAN211_BLE_LEN_FILTER_EXCEED),其他Payload长度的数据包不会触发接收中断
3: 仅接收Payload长度小于 RxLen 的数据包(PAN211_BLE_LEN_FILTER_BENEATH),其他Payload长度的数据包不会触发接收中断
使用要点:
需要注意RxLen的值
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x2D[3:2] |
BLELEN_MATCH |
BLE模式下基于数据包长度的过滤机制, |
3.9 白名单数据(WhiteList)¶
参数说明:
指需要过滤的数据,在寄存器中指定的最长六个字节的数据。只有接收到数据包中的Payload中的数据完全匹配白名单数据,才会触发接收中断。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x2F[7:0] |
WL_ADVA[7:0] |
BLE RX模式白名单设置, |
P0 0x30[7:0] |
WL_ADVA[15:8] |
|
P0 0x31[7:0] |
WL_ADVA[23:16] |
|
P0 0x32[7:0] |
WL_ADVA[31:24] |
|
P0 0x33[7:0] |
WL_ADVA[39:32] |
|
P0 0x34[7:0] |
WL_ADVA[47:40] |
3.10 白名单匹配模式(WhiteListMatchMode)¶
指需要过滤的数据长度。当设为 0 时,白名单过滤功能不生效。
范围:0 ~ 6(0: 不匹配;1 ~ 6: 匹配 1~6 个字节)
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x2D[6:4] |
WL_MATCH_ |
BLE RX模式基于PAYLOAD的 |
3.11 白名单匹配偏移(WhiteListOffset)¶
指需要过滤的数据在整个 Payload 中的起始位置。例如,当 WhiteListOffset
为 1,WhiteListMatchMode
为 2 时,只有 Payload 中第 2 和第 3 个字节与 WhiteList
匹配时,才会成功触发接收中断。WhiteListOffset
加 WhiteListMatchMode
的长度必须不大于 RxLen
,否则白名单功能无法生效。
范围:0 ~ 127
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x35[5:0] |
PLD_START_BYTE |
BLE RX模式基于BLE PAYLOAD的过滤机制, |
3.12 扩频模式(S2S8Mode):¶
S2S8 模式设置,指定 S2S8 模式。 范围:disable, S2, S8
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x19[3] |
PRI_TX_FEC |
0:禁用Tx扩频功能 |
P0 0x19[2] |
PRI_RX_FEC |
0:禁用Rx扩频功能 |
P0 0x19[1:0] |
PRI_CI_MODE |
扩频模式选择 |
4 XN297普通型模式配置方法¶
下面介绍如何配置PAN211x的XN297普通型(不带ACK)模式。
如下图为配置导出工具的界面:
红色框表示必须选择当前选项,其他未框出的选项可根据实际应用选择。
代码可参考 00_normal 例程。
5 XN297增强型模式配置方法¶
下面介绍如何配置PAN211x的XN297增强型模式,如下图为配置导出工具的界面:
红色框表示必须选择当前选项,橙色框表示需要特别关注的选项,即带ACK的双向通信中需要注意配置的参数。其他未框出的选项可根据实际应用选择。
代码可参考 02_enhance例程。
在上图的基础上,可修改TxNoAck配置为ON,即增强型不带ACK的单向通信模式。
在上图的基础上,可修改ChipMode配置为Normal,即普通型带ACK的双向通信模式。
6 蓝牙广播包发射配置方法¶
PAN211x的 Bluetooth-LE Beacon 帧结构经过配置后可以兼容蓝牙广播包帧结构。下面是对比图:
为了兼容标准蓝牙广播包的帧结构,PAN211x需要设置Address固定为0x8e89bed6,CRC固定为3字节,PDU(Header + Length + Payload)需要额外配置。
下面介绍如何配置PAN211x的 Bluetooth-LE Beacon 帧结构:
图中红色框表示必须选择当前选项,橙色框表示需要特别关注的选项,其他未框出的选项可根据实际应用选择。
配置蓝牙广播包结构中的报头(Header):
设置BLEHeadNum 为2。
设置BLEHead0为报头内容,低4字节为0x02符合蓝牙广播报文类型要求,例如设置BLEHead0为0x42,则0x42被填入蓝牙广播包中的报头域。
配置蓝牙广播包结构中的长度(Length):
设置TxLen为数据的长度,根据实际发送的数据内容填写,一般不大于37个字节。例如设置TxLen为19,则0x13被填入蓝牙广播包中的长度域。
设置蓝牙广播包结构中数据(AdvA + AdvData):
数据直接写入发射FIFO。例如ADVA地址,也称为蓝牙设备的MAC地址设置为{0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc},广播数据内容设置为{0x06, 0x09,’P’, ‘A’, ‘N’,’T’, ‘H’, 0x05, 0xff, 0x58, 0x58, 0xaa, 0xbb}。则需要写入FIFO的数据内容为{0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x06, 0x09,’P’, ‘A’, ‘N’,’T’, ‘H’, 0x05, 0xff, 0x58, 0x58, 0xaa, 0xbb}
代码编写请参考ble_beacon
例程。
7 蓝牙广播包过滤功能配置方法¶
PAN211x支持白名单过滤和长度过滤。
白名单过滤是一种安全过滤机制,通过维护一个设备地址列表(即白名单),仅允许符合白名单规则中设备的数据包通过,从而增强通信的安全性和可靠性。根据蓝牙广播包帧结构和 PAN211x Bluetooth-LE Beacon 帧结构对比图可以看到,PAN211x Bluetooth-LE Beacon 帧结构中的”数据”域中包含了蓝牙广播包中的”ADVA地址”和”AdvData”,因此可以通过配置白名单过滤功能实现对蓝牙广播包的内容进行过滤。白名单过滤功能支持过滤从WhiteListOffset开始的WhiteListMatchMode个字节的数据,如果接收到的数据包中对应位置的数据和白名单完全匹配,则会触发接收中断。
长度过滤是一种数据包长度过滤机制,通过设置RxLen和LengthFilterMode,可以实现对接收数据包的长度进行过滤。长度过滤功能支持过滤长度等于RxLen、大于RxLen或小于RxLen的数据包,如果接收到的数据包的长度符合LengthFilterMode的设置,则会触发接收中断。
下面介绍如何配置PAN211x的蓝牙接收过滤功能,如下图为配置导出工具的界面:
图中红色框表示必须选择当前选项,橙色框表示需要特别关注的选项,其他未框出的选项可根据实际应用选择。
配置白名单过滤功能:
设置WhiteListMatchMode和WhiteListOffset,例如如果需要过滤6字节的ADVA地址为{0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc},则设置WhiteListMatchMode为6 bytes, {0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc},设置WhiteListOffset为0。如果需要过滤3字节的AdvData为{‘P’,’A’,”N’},,则设置`WhiteListMatchMode为3 bytes, {‘P’,’A’,”N’},设置WhiteListOffset为6。
配置长度过滤功能:
设置LengthFilterMode为不过滤,Equal,Exceed或Beneath。
设置RxLen为长度过滤的比较值,例如设置RxLen为19,且设置LengthFilterMode为Equal,则只有接收到的数据包长度等于19时才会触发接收中断。
示例代码见ble_filter
例程。