PAN211x SDK应用指南¶
1 快速开发流程¶
PAN211x SDK的开发流程如下:
选择适合您应用的参数配置后,点击”导出”按钮生成代码。
将导出的
pan211.c
文件和SDK中的01_SDK/radio/pan211.h
文件拷贝到您的工程目录中。实现对应的SPI或I2C总线接口函数。
参考SDK中的例程编写您的应用代码。
下图为软件操作流程,图中所有的函数都可以在pan211.c
中找到。
/* Full-version block start */ PAN211x SDK 也支持标准的函数接口配置方式,开发流程如下:
将SDK中的
01_SDK/radio/
目录拷贝到您的工程目录中。参考
01_SDK/pan108/bsp.h
,将下列配置宏定义放在您工程中合适的位置。
#define INTERFACE_MODE USE_I2C
#define INTERFACE_SPEED INTERFACE_SPEED_2M
#define XTAL_FREQ XTAL_FREQ_32M
修改原
01_SDK/radio/pan211.c
中的代码,将SPI或I2C总线接口函数替换为您工程中对应的接口函数。参考SDK中的例程编写您的应用代码。
/* Full-version block end */
2 物理参数配置¶
物理参数配置主要关注物理接口和功率功耗配置。
下图为物理参数配置图。
2.1 总线接口(Interface)¶
参数说明:
用于与芯片进行数据通信的总线接口类型。
使用要点:
可选接口类型包括3线SPI和I2C两种。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x04 |
SPI_CFG |
SPI 总线配置寄存器 |
2.5 0dBm发射功耗优化(Optimize0dB)¶
参数说明:
优化0dBm发射功率下的功耗。
使用要点:
不开启此选项,0dBm 发射功率下的谐波较好,有利于过认证。
开启此选项,0dBm 发射功率下的功耗较低,谐波较差。
2.8 自动增益控制(EnAGC)¶
参数说明:
选择是否使能自动增益控制。
使用要点:
不开启此选项,初始化流程所需操作的寄存器更少,无法使用RSSI功能。适合对代码大小有要求的用户。
开启此选项,初始化流程所需操作的寄存器较多,可以使用RSSI功能。适合对代码大小没有要求的用户。
2.9 En11dBm¶
参数说明: 选择是否选用11dBm发射功率。不影响其他功率档位的配置。
3 XN297普通型(Normal)配置¶
当ChipMode选择XN297,WorkMode选择“Normal”时对应的是XN297普通型模式。
下图为参数配置和Tx帧格式图。
前导码(Preamble)的比特序列通常为固定的,它不能由寄存器配置。前导码用于使接收端解调器与输入比特流同步。
地址(Address)用于接收端对来自发射端的数据包进行解调,如果数据包的地址与接收端的地址相同,它会把后续有效数据保存在RX FIFO中,否则丢弃后续有效负载并恢复同步。
有效负载(Payload)是实际发射或接收的数据。
循环冗余校验码(CRC)是数据包中的强制性错误检测机制。启用了CRC之后,接收端将检查接收到的数据包的CRC,如果CRC有误,则产生对应的CRC错误中断。
3.1 频道(Channel)¶
参数说明:
芯片所用信道的中心频点,支持2400MHz~2483MHz,总计84个频点。
使用要点:
1Mbps 速率下,16MHz 倍频点接收灵度较差,不推荐使用。
2Mbps 速率下,8MHz 倍频点及其倍频点 ±1MHz 接收灵敏度较差,不推荐使用。例如2408MHz 是 8 的整数倍,因此 2407,2408,2409 三个频点均不推荐使用。
250kbps 速率下,4MHz 倍频点接收灵敏度较差,不推荐使用。
当前频点的 4MHz 倍频点在近距离大功率的情况下存在接收串扰,组网时需要注意。例如使用2402MHz频点接收时会受到2406MHz,2410MHz,2414MHz等频点的干扰。
16M晶振不支持2Mbps速率
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x39[7:0] |
RF_CH |
通道号: |
3.2 速率(DataRate)¶
参数说明:
数据传输速率设置,支持1Mbps,2Mbps 和 250Kbps。
使用要点:
较低的空中数据速率比较高的空中数据速率具有更好的接收灵敏度。
较高的空中数据速率可以降低平均电流消耗并减少空中碰撞的概率。
修改速率后需要修改对应的射频参数配置并进行射频校准。
2Mbps仅在32MHz晶振下使用,16MHz晶振时不可用。
3.5 发射数据长度(TxLen)¶
参数说明:
发射数据长度设置。普通型模式支持0 ~ 128字节。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x0A[7:0] |
TX_PAYLOAD_LENGTH |
发射端PAYLOAD长度信息 |
3.6 接收数据长度(RxLen)¶
参数说明:
接收数据长度设置。普通型模式支持0 ~ 128字节。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x09[7:0] |
RX_PAYLOAD_LENGTH |
接收端PAYLOAD长度信息 |
3.7 地址¶
3.7.1 地址宽度(AddrWidth):¶
参数说明:
发射和接收地址的长度设置,单位为字节。支持2 ~ 5字节。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x08[1:0] |
ADDR_BYTE_ |
地址宽度设置: |
3.7.2 发射地址(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] |
3.7.3 接收地址(RxAddr):¶
参数说明:
接收地址设置,支持6个通道最长为五个字节的十六进制地址。
使用要点:
当地址长度小于5字节时,优先使用低字节。
默认使用Pipe0地址,五个字节任意可配置,不建议使用0x5555555555,0xaaaaaaaaaa,0x0000000000,0xFFFFFFFFFF这样的地址。
使用多通道功能时,最多可配置6个接收通道。
第0通道的地址任意可配置,第1~5通道的地址共享高四字节[39:8],地址[7:0]可自由配置。
所有数据管道的地址会被同时搜索,但每次只能有一个数据管道接收数据包。
所有数据管道都支持普通和增强型模式。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
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.8 CRC校验(CRC)¶
参数说明:
对帧结构中的部分数据进行校验计算得到的CRC校验码。支持0~3 字节。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x07[7:6] |
CRC_MODE |
00:CRC DISABLE |
3.9 接收超时(RxTimeoutUs)¶
参数说明:
在单次带超时的接收模式中,指接收端的接收超时时间设置。支持1 ~ 65535us。
使用要点:
在单次带超时的接收模式中不能设置为0。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x2B[7:0] |
REG_RX_TIMEOUT[7:0] |
接收超时设置,低8位,单位:微秒。 |
P0 0x2C[7:0] |
REG_RX_TIMEOUT[15:8] |
接收超时设置,高8位,单位:微秒。 |
3.10 白化(EnWhiten)¶
参数说明:
白化是一种数据处理的技术,通过对原始数据叠加伪随机码的方式,使得数据中的0和1更加均匀分布,提高通信的可靠性。
使用要点:
为了提高通信的可靠性,总是建议使能此功能。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x07[3] |
WHITEN_ENABLE |
白化功能是否使能 0: 关闭 1: 使能 |
4 XN297增强型(Enhance)配置¶
XN297 增强型模式是带自动重传和ACK的双向通信模式,下图为参数配置和Tx帧格式图。
长度标识(Length):表示数据包的长度。
PID标识:用于确定发射端数据的唯一性。发射端的PID将填入增强型帧结构中的PID字段。接收端根据需要自动解析增强型帧结构的PID字段,用户通过读取对应的寄存器获取数据包PID。
无应答标识(NoACK):表示是否需要回复ACK数据包。
4.1 频道(Channel)¶
见本文3.1章节。
4.2 速率(DataRate)¶
见本文3.2章节。
4.5 发射数据长度(TxLen)¶
参数说明:
发射数据长度设置。增强型模式支持0 ~ 64字节。
TxLen的值将被自动填入帧格式的Length字段。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x0A[7:0] |
TX_PAYLOAD_LENGTH |
发射端PAYLOAD长度信息 |
4.6 接收数据长度(RxLen)¶
参数说明:
接收数据长度设置。增强型模式支持0 ~ 64字节。
使用要点:
未使能动态数据长度(EnDPL)时,仅接收数据长度与接收数据长度(RxLen)相等的数据包。
使能动态数据长度(EnDPL)时,支持动态接受数据长度。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x09[7:0] |
RX_PAYLOAD_LENGTH |
接收端PAYLOAD长度信息 |
4.7 接收超时(RxTimeoutUs)¶
参数说明:
发射端的ACK数据包接收超时时间设置。发射端在发送数据包之后,如果在RxTimeoutUs时间内没有收到应答包,会自动重发上一次的数据包。支持0 ~ 65535us。
使用要点:
发射端的接收超时时间应当大于接收端的收发切换延时时间+数据在空中的传输时间。
在不带重传的接收模式中,接收超时时间也不应该设置为0。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x2B[7:0] |
REG_RX_TIMEOUT[7:0] |
接收超时设置,低8位,单位:微秒。 |
P0 0x2C[7:0] |
REG_RX_TIMEOUT[15:8] |
接收超时设置,高8位,单位:微秒。 |
4.8 自动重传延时(AutoDelayUs)¶
参数说明:
自动应答发射延时时间设置。发射端在没有收到应答包之后,自动重新发射数据包的延时时间,单位为微秒。范围:250,500,750,1000… 3750, 4000μs。
使用要点:
适当的延时时间可以减少通信冲突,提高数据传输的稳定性。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x29[7:4] |
ARD |
自动传输延时 |
4.9 自动重传最大次数(AutoMaxCnt)¶
参数说明:
自动重传的最大次数设置,指定发射端在没有收到应答包之后,自动发射应答包的最大次数。支持1 ~ 15次。
发射端如果设置自动重传最大次数为 n(n > 0),总共发射数据包的次数为 n 次,没有接收到应答包后的最大重传次数为 n-1 次。
使用要点:
增强型模式对应寄存器不能设置为0,否则不会自动重传,FIFO不自动区分发射FIFO和接收FIFO。
普通型模式对应寄存器必须设置为0。
接收端在收到数据包后仅发射一次ACK应答包,发射ACK应答包的次数与ARC寄存器无关。
接收端如果需要填写ACK应答包的数据,ARC寄存器必须至少设置为1,否则FIFO不自动区分发射FIFO和接收FIFO。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x29[3:0] |
ARC |
自动传输次数设置 |
4.10 收发切换延时(TRxDelayTimeUs)¶
参数说明:
收发自动切换的延迟时间。支持0 ~ 32767us。
使用要点:
增强型发送端的发送转接收之间的延时时间通常设置为0。
增强型接收端接收转发送时,如果需要读取接收到的数据并做处理。则收发切换延时时间需要对应调整。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x0D[7:0] |
TRX_TRANS_WAIT |
增强模式下,发送转接收或者 |
P0 0x0E[6:0] |
TRX_TRANS_WAIT |
增强模式下,发送转接收或者 |
4.11 使能动态数据长度(EnDPL)¶
参数说明:
利用增强型帧结构中的”长度”域实现可变包长的功能。
使用要点:
使能此功能后,发射端根据数据长度自动填充增强型帧结构中的”长度”域,发送不同长度的数据包。
使能此功能后,接收端根据增强型帧结构中的”长度”域读取 RX_PAYLOAD_LENGTH 获取接收到包的数据长度。
关闭此功能时,数据包实际收发长度为固定长度,即TxLen和RxLen决定。
发送端的发送长度为0时,接收端可以触发接收中断,但RX_PAYLOAD_LENGTH寄存器不会更新。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x08[4] |
DPY_EN |
增强型模式下: 配置该bit可以硬件自主判断接收包长度, 不必再在软件端配置接收长度RX_PAYLOAD_LENGTH。 注:297普通模式下忽略此位。 |
P0 0x77[7:0] |
RX_PAYLOAD_ LENGTH |
接收到包的长度 |
5 Bluetooth-LE Beacon 模式配置¶
Bluetooth-LE Beacon 模式是符合蓝牙标准的广播包格式。
下图为参数配置和Tx帧格式图。
前导码(Preamble)的比特序列通常为固定的,它不能由寄存器配置。前导码用于使接收端解调器与输入比特流同步。
地址(Access Address)用于接收端对来自发射端的数据包进行解调。在蓝牙广播模式中,固定为0x8E89BED6。
广播协议数据单元(PDU)由Header,Length和Payload三部分组成。
Header 包含PDU类型,RFU(保留字段),ChSel,TxAdd和RxAdd字段。关于这些字段的详细信息,可参考蓝牙技术联盟(SIG)官网的《蓝牙低功耗核心规范》。
Length标识有效载荷的长度。
Payload包含:
AdvA:广播设备的蓝牙地址。
AdvData:实际广播数据。
5.1 发射模式(TxMode)¶
见本文3.3节。
5.2 接收模式(RxMode)¶
见本文3.4节。
5.3 发射数据长度(TxLen)¶
发射数据长度设置。自动填充到PDU的Length长度字段。支持6 ~ 37字节。
5.4 蓝牙频道(BLEChannel)¶
Bluetooth-LE Beacon 支持 3 个广播频道,序号为 37,38 和 39,对应的实际的频点分别为 2402MHz,2426MHz,2480MHz。
5.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时生效。 |
5.6 帧头标识符 0(BLEHead0)¶
参数说明:
BLE 帧头标识符第一个字节设置,指定 BLE 帧头第一个字节。
使用要点:
低4比特为2时,表示蓝牙广播包(ADV_NONCONN_IND ),例如0x42。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x1B[7:0] |
TX_HEADER0 |
HDR_LEN_EXIST=1, |
5.7 帧头标识符 1(BLEHead1)¶
参数说明:
BLE 帧头标识符第二个字节设置,指定 BLE 帧头第二个字节。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x1C[7:0] |
TX_HEADER1 |
HDR_LEN_EXIST=1, |
5.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 _MODE |
BLE模式下基于数据包长度的过滤机制, |
5.9 白名单数据(WhiteList)¶
参数说明:
指需要过滤的数据,在寄存器中指定的最长六个字节的数据。只有接收到数据包中的Payload中的数据完全匹配白名单数据,才会触发接收中断。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x2F[7:0] |
WL_ADVA[7:0] |
BLE RX模式白名单设置, 该白名单为PAYLOAD当中的某一段(可配置), |
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] |
5.10 白名单匹配模式(WhiteListMatchMode)¶
参数说明:
指定需要过滤的数据长度。当设为0时,白名单过滤功能不生效。
范围:0 ~ 6(0: 不匹配;1 ~ 6: 匹配 1~6 个字节)
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
P0 0x2D[6:4] |
WL_MATCH_ MODE |
BLE RX模式基于PAYLOAD的 白名单过滤模式选择 |
5.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的过滤机制, 配置白名单过滤的起始字节。 配置为0~5:从AdvA开始过滤。 配置为6~38:从PAYLOAD开始过滤。 |
5.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 |
扩频模式选择 |
6 中断配置¶
6.1 IOMUX_EN¶
参数说明:
三线SPI模式下,启用此功能时,DATA引脚将与IRQ信号进行分时复用。
I2C模式下,启用此功能时,SDA引脚将与IRQ信号进行分时复用。
相关寄存器:
寄存器地址 |
寄存器名称 |
寄存器描述 |
---|---|---|
0x03[2] |
IRQ_MOSI_MUX_EN |
0:MOSI与IRQ不复用 |
0x06[3] |
IRQ_I2C_MUX_EN |
0:IRQ与I2C的SDA不复用 |
6.2 InterruptMask¶
参数说明:
PAN211x支持8种中断状态。您可以点击下图中的选项来选择开启或屏蔽中断屏蔽寄存器中的对应中断。主机也可以通过查询中断状态寄存器的方式判断PAN211x当前的中断事件。