器件型号: CC2340R5
我将使用 BLE5 BLE2/寄存器接口在 PBE 上提供低级 BLE 无线电驱动程序。
RAW TX 工作正常。
RAW RX 工作。
BLE5 OP_ADV 成功传输有效的旧 ADV_IND 数据包。
问题具体来说是 OP_ADV RX 转换。
当中央器件发送 CONNECT_IND 时、Wireshark 以 ADV_IND 之后的预期时序在空中显示 CONNECT_IND。 但是、OP_ADV 操作始终完成以处理:
ENDCAUSE = 0x0002 // NOSYNC
使用 ble5.c 旧广播路径的 TI BLE 示例工作正常并完成、其中包括:
ENDCAUSE = 0x0004 //连接
我的问题不是关于基本 TX 或基本 RX 的问题。 这两者都是独立工作的。
问题是:
除了原始 TX 和原始 RX 所需的设置之外、OP_ADV 需要哪些额外设置来执行 TX 到 RX 转换并检测 SCAN_REQ/CONNECT_IND?
换句话说、带响应接收的 OP_ADV 广播的设置有什么独特之处?
我知道的明显差异是:
- OP_ADV 使用 BLE5 广播操作而不是原始 TX/RX 操作。
- TX FIFO 可以包含 ADV_IND 数据包和 SCAN_RSP 数据包。
- 需要启用与 RX 相关的中断。
- 需要配置广播特定的 BLE5 RAM 字段、例如 advcfg、FILTPOLICY、RPAMODE、RPACONNECT、 FL1MASK、FL2MASK 等
- 涉及 PRERXIFS 和 RXTIMEOUT 等时序字段。
我已经将明显的 OP_ADV BLE5 RAM 字段与正常工作的 TI 路径进行了比较、包括:
WHITEINIT
CRCINIT
EXTRABYTES
FIFOCFG
advcfg
FILTPOLICY
OWNADRTYPE
RPAMODE
RPACONNECT
FL1MASK
FL2MASK
OPCFG
PRETXIFS
PRERXIFS
RXTIMEOUT
它们看起来与提交 OP_ADV 之前的 TI 工作案例相匹配。
我还在 OP_ADV 之前比较了这些与调制解调器/同步相关的寄存器:
MDMSYNCA
DEMC1BE0
DEMC1BE1
DEMC1BE2
RSSI
它们也与 TI 工作案例相匹配。
根据广告活动、我的驾驶员报告:
NTX = 1
NRXOK = 0
NRXNOK = 0
NRXIGNORED = 0
RSSI/时间戳不变
ENDCAUSE = NOSYNC
因此、OP_ADV 传输广播数据包、但响应数据包似乎永远不会到达 SYNC/DEMOD 处理。 这看起来不像是地址滤波器抑制或 RX FIFO 处理问题。
我尝试识别的是以下两者之间缺少的差值:
- RAW TX + RAW RX、独立工作
- OP_ADV 具有 RX 周转、在发送数据但从不检测到同步
对于转换接收路径、OP_ADV 需要进行一些必需的 RFE/TOPSM/MCE/RCL 设置、补丁状态、等待条件、无线电模式转换或 PBE 框架初始化吗?