当前文档版本为 v1.1.0,您可以访问当前页面的 开发中 版本以获取最近可能的更新。

PAN211x FIFO 和帧格式使用指南

1. FIFO操作

PAN211x 有两个 64 字节的 FIFO。在普通型模式下,只存在收或发单向通信,可以拼接为 128 字节使用。在增强型或M1模式下仅支持64bytes,分别为发送和接收FIFO。

FIFO 仅能存储和读取单个数据包的信息。如果 FIFO 中已存有一个数据包,在写入新数据前应先读取完毕,否则前一个数据包将被覆盖。FIFO不支持清空操作,写入新的数据时会覆盖原有FIFO的内容。

2. 工作模式(WorkMode)与协议帧格式(ChipMode)

PAN211x 支持各种不同的帧格式和工作模式。

工作模式(WorkMode)分为不带自动重传和ACK的通信模式(后简称为Normal型)、带自动重传和ACK通信模式(后简称为Enhance模式)以及基于Normal型帧格式带自动重传和ACK的通信模式(后简称为Normal_M1模式)。

为了兼容不同的私有协议帧格式,PAN211x帧格式(ChipMode)分为297帧格式,FS01帧格式,FS32帧格式和BLE帧格式。

2.1. XN297帧格式

  • 普通型297帧格式

    image-20240929200904395

  • 增强型297帧格式

    image-20240929200947585

2.2. 扩展协议帧一FS01

  • 普通型FS01帧格式

    image-20240929201013797

  • 增强型FS01帧格式

    image-20240929201041760

2.3. 扩展协议帧二FS32

  • 普通型FS32帧格式:

    image-20240929201119788

  • 增强型FS32帧格式:

    image-20240929201150165

2.4. BLE帧格式

  • BLE兼容帧格式:

    image-20240929201206343

下面我们将分别介绍在使用不同的私有协议帧格式(297L, FS01, FS32)和蓝牙帧格式时应当如何配置参数。

3. 私有协议帧格式

频道(Channel):

通道号,指定无线通信所用的频率通道。

范围:2400MHz ~ 2483MHz

功率(TxPower): 发射功率设置,较高的功率可以提高通信范围,但也可能增加功耗和干扰。 范围: 0dBm ~ 9dBm

速率(DataRate): 数据传输速率设置,较高的数据速率可以提高通信速度,但可能降低传输距离或增加错误率。 范围:1Mbps, 2Mbps, 250Kbps

3.1. 前导码

前导码设置,与特定的协议帧格式有关,不能由寄存器配置。

前导码用于使接收器解调器与输入比特流同步。

3.2. 地址

发射地址长度(TxAddrWidth): 发射地址宽度设置,指定发射地址的字节数。 范围:3 ~ 5

发射地址(TxAddr): 发射地址设置,指定发射地址。 范围:[0x00 ~ 0xFF, 0x00 ~ 0xFF, 0x00 ~ 0xFF, 0x00 ~ 0xFF, 0x00 ~ 0xFF]

接收地址长度(RxAddrWidth): 接收地址宽度设置,指定接收地址的字节数。 范围:3 ~ 5

接收地址(RxAddr): 接收地址设置,指定接收地址。 范围:[0x00 ~ 0xFF, 0x00 ~ 0xFF, 0x00 ~ 0xFF, 0x00 ~ 0xFF, 0x00 ~ 0xFF]

3.3. 数据

发射数据长度(TxLen): 发射数据长度设置,指定发射数据的字节数。 范围:0 ~ 128(工作模式为普通型);0 ~ 64(工作模式为增强型)

接收数据长度(RxLen): 接收数据长度设置,指定接收数据的字节数。 范围:0 ~ 128(工作模式为普通型);0 ~ 64(工作模式为增强型)

3.4. CRC

CRC校验(CRC): CRC校验设置可以提高通信的可靠性。 范围:Disable, 1byte, 2byte, 3byte

CRC跳过地址(CRCSkipAddr): 指定CRC校验跳过地址,只有在FS32模式才可配。 范围:false, true (FS32模式);false(297L, FS01模式)

3.5. 白化扰码

白化(EnWhite): 启用白化可以提高通信抗干扰能力。 范围:true, false

白化跳过地址(ScrSkipAddr): 指定白化扰码跳过地址,各芯片模式使用固定配置。 范围:false (297L, FS01模式);true (FS32模式)

3.6. 大小端

大小端(Endian): 指定字节序,只有在FS32模式才可配。 范围:Little, Big(FS32模式);Big(297L, FS01模式)

3.7. 长度标识

长度标识参数在增强型帧格式中用于标识数据包的长度,发射端的数据长度将填入增强型帧格式中的长度字段。接收端自动解析增强型帧格式的长度字段,用户可通过读取对应的寄存器获取数据包长度。

使能动态数据长度(EnDPL):

仅增强型模式可用,默认使能。当关闭此功能时,数据包实际收发长度为固定长度,由TxLen和RxLen决定。启用此功能时,通常用于发射端需要发送不同长度数据包的场景,接收端可以根据长度标识动态解析数据长度。 范围:true, false

使能长度过滤限制(EnRxPlLenLimit):

仅增强型模式可用。针对增强模式自动匹配包长的情况下增加最大包长限制,如果自动匹配的包长大于最大限制包长,则退出此模式。该功能在rx_goon打开的情况下,接收包长错误时,按照最大长度接收后,可以重新进入接收,直到接收到正确的数据帧或者超时退出。 范围:true, false

3.8. PID标识

PID参数用于确定发射端数据的唯一性,发射端的PID将填入增强型帧格式中的PID字段。接收端根据需要自动解析增强型帧格式的PID字段,用户通过读取对应的寄存器获取数据包PID。

使能手动PID(EnManuPid):

仅增强型模式可用,默认不使能。启用手动PID设置,用户可以通过设置寄存器手动设置PID值,否则PID值由芯片自动设置。 范围:true, false

3.9. 无应答标识

使能无应答(EnTxNoAck):

普通型和增强型都可用。启用无应答发送设置后,要求接收端不发送应答包,发射端也不会自动重传。 增强型模式默认应该关闭此功能。 普通型模式关闭此功能之后,芯片在接收到数据后会自动切换到发射状态,发送应答包,应答包帧格式不包含标识符。这种模式也称为normal M1模式。 范围:true, false

3.10. 时间参数

接收超时(RxTimeoutUs):

普通型和增强型都可用。 增强型模式中,指发射端的应答包接收超时时间设置,单位为us。发射端在发送数据包之后,如果在RxTimeoutUs时间内没有收到应答包,会自动重发上一次的数据包。 普通型模式中,如果采用单次带超时的接受模式,该配置指接收端的接收超时时间设置,单位为us。接收端如果在RxTimeoutUs时间内没有收到数据包,会触发超时中断。 范围:0 ~ 65535

收发切换延时(TRxDelayTimeUs):

仅增强型模式可用。发射接收切换延时时间设置,指定发射接收切换延时时间,单位为us。 范围:0 ~ 32767

自动重传延时(AutoDelayUs):

仅增强型模式可用。自动应答发射延时时间设置,指定发射端在没有收到应答包之后,自动发射应答包的延时时间,单位为us。 范围:250,500,750,1000…, 3750, 4000

自动重传最大次数(AutoMaxCnt):

仅增强型模式可用。自动重传的最大次数设置,指定发射端在没有收到应答包之后,自动发射应答包的最大次数。如果设置为0,则不会自动重传。 范围:0 ~ 15

3.11. 收发模式

发射模式(TxMode):

普通型模式可选:单次发送,连续发送。 增强型模式可选:单次发送。

接收模式(RxMode): 普通型模式可选:单次接收,连续接收,单次带超时的接收。 增强型模式可选:单次接收。

3.11. 软件示例代码

RFConfig_t gRfConfig =
{
    .Channel = 12,
    .TxPower = PAN211_TXPWR_0dBm, 
    .DataRate = PAN211_DR_1Mbps,
    .ChipMode = PAN211_CHIPMODE_XN297,
    .EnWhite = true,  
    .Crc = PAN211_CRC_2byte, 
    .TxLen = 32, 
    .RxLen = 32, 
    .TxAddrWidth = PAN211_WIDTH_5BYTES, 
    .TxAddr = {0xcc, 0xcc, 0xcc, 0xcc, 0xcc},
    .RxAddrWidth = PAN211_WIDTH_5BYTES,
    .RxAddr = {
                true, {0xcc, 0xcc, 0xcc, 0xcc, 0xcc}, 
                false, {0}, 
                false, {0},
                false, {0},
                false, {0},
              },
    .Endian = PAN211_ENDIAN_BIG, 
    .crcSkipAddr = false, 
    .EnRxPlLenLimit = false, 

    .WorkMode = PAN211_WORKMODE_NORMAL, 
    .EnDPL = false,
    .EnTxNoAck = true,
    .EnManuPid = false,
    .TRxDelayTimeUs = 0, 
    .RxTimeoutUs = 0,
    .AutoDelayUs = 0,
    .AutoMaxCnt = 0,
    .TxMode = PAN211_TX_MODE_SINGLE,
    .RxMode = PAN211_RX_MODE_CONTINOUS,
};

4. 蓝牙帧格式

频道(Channel): 见上一章

功率(TxPower): 见上一章

速率(DataRate): 数据传输速率设置,较高的数据速率可以提高通信速度,但可能降低传输距离或增加错误率。范围:1Mbps, 2Mbps, 250Kbps(普通BLE模式);1Mbps, 250Kbps(S2, S8模式)

4.1. 数据

发射数据长度(TxLen): 发射数据长度设置,指定发射数据的字节数。 范围:0 ~ 128(工作模式为普通型);0 ~ 64(工作模式为增强型)

接收数据长度(RxLen): 接收数据长度设置,指定接收数据的字节数。 范围:0 ~ 128(工作模式为普通型);0 ~ 64(工作模式为增强型)

4.2. 白化初始值

白化初始值(WhiteInit):

指定白化扰码初始化值。在特定的广播频道上需要使用特定的白化扰码初始化值。37 广播频道对应白化扰码初始化值为0x53,38 广播频道对应白化扰码初始化值为0x33,39 广播频道对应白化扰码初始化值为0x73。 范围:0x00 ~ 0xFF

4.3. BLE帧头

帧头字节数(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决定

帧头标识符0(BleHead0):

BLE帧头header第一个字节设置,指定BLE帧头第一个字节。 范围:0x00 ~ 0xFF

帧头标识符1(BleHead1):

BLE帧头header第二个字节设置,指定BLE帧头第二个字节。 范围:0x00 ~ 0xFF

4.4. 白名单过滤

白名单匹配模式(WhilteListMatchMode): 范围:0 ~ 6 (0: 不匹配;1 ~ 6: 匹配1~6个字节)

白名单匹配偏移(WhilteListOffset): 范围:0 ~ 127

白名单(WhilteList): 范围:0x00 ~ 0xFF

白名单长度(WhilteListLen): 范围:1 ~ 6

4.5. 长度过滤

长度过滤模式(LengthFilterMode):

接受模式下的长度过滤,长度过滤的比较值为RxLen。 范围:0 ~ 3(0: 不过滤;1: 仅接受长度等于RxLen的数据包;2: 仅接受长度大于RxLen的数据包;3: 仅接受长度小于RxLen的数据包)

4.6. 扩频模式

扩频模式(S2S8Mode):

S2S8模式设置,指定S2S8模式。 范围:disable, S2, S8

4.7. 其他参数

BLE模式中, 其他参数为固定值,在参数配置时不需要额外关注。

Parameter

Value

ChipMode

BLE

WorkMode

普通型

TxAddrWidth

4

TxAddr

0x8e89bed6

RxAddrWidth

4

RxAddr

0x8e89bed6

EnWhite

true

CRCSkipAddr

true

ScrSkipAddr

true

Endian

Little

CRC

3byte

EnDPL

true

4.8. 软件示例代码

BLEConfig_t Config = 
{ 
    .Channel = BLE_CHANNEL_37,
    .DataRate = PAN211_DR_1Mbps,
    .TxPower = PAN211_TXPWR_3dBm,
    .TxLen = sizeof(BleTxPacket)/sizeof(u8),
    .RxLen = 0,

    .BleHeadNum = 2,
    .BleHead0 = BLE_ADV_HEADER,
    .BleHead1 = 0,
    
    .S2S8Mode = PAN211_PRIMODE_DIS,
    .WhiteInit = PAN211_BLE_WH_INIPHA_CH37,
    .WhiteListMatchMode = PAN211_BLE_WhiteList_DISABLE,
    .WhileListOffset = 0,
    .WhilteList = {0},
    .WhilteListLen = 0,
    .LengthFilterMode = PAN211_BLE_LEN_FILTER_DISABLE,
};