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帧格式
增强型297帧格式
2.2. 扩展协议帧一FS01¶
普通型FS01帧格式
增强型FS01帧格式
2.3. 扩展协议帧二FS32¶
普通型FS32帧格式:
增强型FS32帧格式:
3. 私有协议帧格式¶
频道(Channel):
通道号,指定无线通信所用的频率通道。
范围:2400MHz ~ 2483MHz
功率(TxPower): 发射功率设置,较高的功率可以提高通信范围,但也可能增加功耗和干扰。 范围: 0dBm ~ 9dBm
速率(DataRate): 数据传输速率设置,较高的数据速率可以提高通信速度,但可能降低传输距离或增加错误率。 范围:1Mbps, 2Mbps, 250Kbps
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.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,
};