This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2340R5:CC2340R5 RXRAW 接收 ADV 数据包、但在 TXRAW 广播后从不连接_IND

Guru**** 2927270 points

Other Parts Discussed in Thread: CC2340R5

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1651199/cc2340r5-cc2340r5-rxraw-receives-adv-packets-but-never-connect_ind-after-txraw-advertising

器件型号: CC2340R5

我跟进前面一个有关使用 PBE_BLE5_REGDEF_API_OP_RXRATION 在 CC2340R5 上接收标准 BLE 广播通道数据包的问题。

我现在有一个主要工作的低级 TXRMOVE/RXRMOTION 路径:

-我使用 PBE_BLE5_REGDEF_API_OP_TXRATION 传输旧的 ADV_IND 数据包
-数据包在 Wireshark/NRF Sniffer 中可见
-它被解码为可连接/可扫描的广播
-一个中心会在几个广播后立即发送 CONNECT_IND
- CONNECT_IND 在监听器中清晰可见,地址是我的广播器地址
- TX 完成后,我的 ISR 开始 RXRATION
-测量的时间:
 - TX ISR 条目到 startRx:关于 17µs
 - TX ISR 进入 OP_RXRAVIA API 写入:关于 29µs
 - RX 超时约为 1 毫秒

RXSDB权利 路径肯定是在接收 BLE 广播通道数据包。 我可以接收不相关的/环境的 ADV_IND/ADV_NONCONN_IND 数据包、它们与 EventRxOk 一起到达。 RX FIFO 解码显示正确;接收到的标头的示例包括:

  42 37
  40 24
  42 21
  02 34
  60 23

在这些示例中、第一个值是十六进制的 BLE 广播 PDU 标头字节、第二个值是以十进制表示的解码 PDU 长度。

但是、我从不会收到中心器件的 CONNECT_IND。 在 RX 超时时、我在 RX 窗口期间捕获了 BLE5 接收计数器的增量:

  NRXOK    0
  NRXNOK   0
  NRXIGNORED 0
  NRXFIFOFULL 0
  ENDCAUSE  0007

即使对于广播事件也是如此、在我广播之后监听器立即显示 CONNECT_IND。 因此、它看起来不像正在接收和拒绝数据包;看起来 RXRAVIA 根本无法检测到它。

当前的 RXSDB权利 设置是根据 source/ti/drivers/rcl/handlers/ble5.c 中的 RCL_Handler_BLE5_genericRx 建模的:

- MDMSYNCA = 0x8E89BED6
- CRCINIT = 0x555555 << 8.
- WHITEINIT =通道| 0x40
- MAXLEN = 255
- OPCFG =重复
- RX FIFO 已重置/准备、RXFWRITABLE 为非零、然后再启动 RXRATION
-使用 SYSTIM START 发出 PBE_BLE5_REGDEF_API_OP_RXRAW

我已经找到并修复了一个问题:在 LRF_prepareRxFifo() 样式重置后、RXFWRITABLE 为零、直到我将 RXFSRP 向前移动。 在固定的情况下,RXRABVIA 能够可靠地接收普通的广播包。

我的问题:

PBE_BLE5_REGDEF_API_OP_RXRAW 是否应该能够在 TXRAW 广播数据包之后立即在 T_IFS 响应时隙中接收 CONNECT_IND?

或者、是否仅通过 PBE_BLE5_REGDEF_API_OP_ADV 支持广播后接收 CONNECT_IND、其中 PBE 在内部管理广播 TX 和 TX 后 RX 窗口?

更具体地说:

1、是否支持 TXRABZEN 和 RXRABZEN 实现可连接的广播器?
2. RXSDB权利 是否需要进行任何额外设置来专门接收 CONNECT_IND 数据包?
3. CONNECT_IND 数据包的处理方式与 BLE5 PBE 的普通广播 PDU 不同吗?
4、在 RXLIFE 接收到 T_IFS 响应数据包之前、在 TXRAW 后是否有任何隐藏的时序要求或 TOPSM/RFE 就绪要求?
5.对于此用例、是否有推荐的低级寄存器/RAM 序列、但短于使用完整 RCL 广播命令?

我特意未使用完整的 BLE 栈。 我正在实施一个小型定制控制器、并尝试直接使用 CC2340R5 PBE BLE5 原始操作。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Bob Frankel、

    我将通过内部联系、了解 TI 是否可以为我们提供更多详细信息或信息、如有必要、请在此处提供帮助。

    谢谢、
    Alex F

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Bob Frankel、

    rnd 回答了更详细的问题。 作为其响应的摘要、通常不建议客户不要将 (BLE) 栈和/或 RCL 层与无线电一起使用;如果有意不使用 BLE 栈和/或 RCL 层、以防遗憾的是我们无法对此问题提供任何 rnd 支持。

    rnd 建议至少使用 SDK 中的现有 RCL 层;rnd 还回复了您的 5 个点:

    关于帖子中的问题:

    1. 否、这很可能太慢、无法满足蓝牙帧间距要求
    2. 不、问题很可能是时间问题
    3. 有专用命令运行广播器和启动器、这些数据包在其中得到正确处理并满足时序要求。 使用这些命令时、数据包的处理方式不同、但原始命令对所有数据包的处理方式相同。
    4. 如上所述、这些命令的设计无法满足 T_IFS;还有其他命令
    5. 编号 我们仅使用专用命令来支持此用例。

     谢谢、
    Alex F

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Alex、

    让我挑战其中的一些答案,因为我已经使用了 TXRVITAN 和 RXRVITAN 的回复*少于* 150us ..

    我的问题是我没有收到发送给我的 CONNECT_IND(或 SCAN_REQ)数据包...  我想确保我正确设置了接收器 — 尽管我正在接收*其他* BLE 广播包

    让我问这个问题…  当我打电话给 RXRVITAN 时、对讲机实际开始 RX 需要多长时间????

    至于使用 ADV 命令、它是否在 RCL 源代码中“完整记录“???  当我在连接内部时、我使用什么命令——而且我有同样的 150us IFS 要求???

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在过去,我使用了通用 Tx 命令(与专有协议),需要快速确认..  有一个 OPCFG 位“保持 FS 开启“、这对于 TX-RX 周转至关重要…

    BLE PBE 叠加层中是否有类似的功能???

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Bob:

    对于此处的某些上下文、在您提交打开无线电的命令后、比方说 RX 以及它是您第一次调用命令时、PLL 需要时间来稳定、然后还需要一些额外的时间来确保 RX 准备就绪。 因此、您要么需要确保在 RX 启动后 TX 不会发送大约 150us、要么需要在 TX 之前启动 RX 150us。  

    过去、我使用了需要快速确认的通用 Tx 命令(具有专有协议)  有一个 OPCFG 位“保持 FS 开启“、这对于 TX-RX 周转至关重要...

    IFS 控制转换时间的时序、请参阅以下两个寄存器(一个用于 ACK RX、一个用于 ACK TX)。这些寄存器在 RF 配置中设置:

    PRERXIFS.val[15:0]              = 20 #提前开始侦听

    PRETXIFS.val[15:0]              = 326 #调优为 130us T_IFS

    每个步长均为 0.25us/LSB。  

    关于使用 ADV 命令、它是否在 RCL 源代码中“完整记录“???  当我在连接内部时、我要使用什么命令——而且我有同样的 150us IFS 要求???

    如果您询问 ble5.c 版本、我认为一个由 BLE 栈本身使用而不是 proprf 版本、并且我们的 BLE 栈不是公开的。  

    谢谢、
    Alex F

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    进一步介绍 PRERXIFS 和 PRETXIFS ...

    这些寄存器是否与 OP_ADV 搭配使用???  或者、它们是否可以与 OP_TX_RAW 配合使用???

    通过 SDK 搜索,我找不到任何使用这些寄存器的代码…

    我本来应该认为 ble5.c(实现 RCL_Handler_BLE5_Adv)可能会设置这些寄存器...

    还是 OP_ADV 本身内部???

    您能给我一些关于如何使用这些寄存器的更多说明吗

    我能否将其与 OP_TX_RAW 结合使用以确保 PLL 在 TX 完成后保持启用???

    pbe_ble5_ram_regs.h 中的一条注释说“在 TX 之后用于设置 timer0 何时开始接收的基本值“...

    请告诉我更多关于“timer0“--设置“延迟“启动是否会使无线电 FS 保持打开???

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Bob:

    当我上面说“RF configs“时、我指的是设备用于将特定 PHY 加载到无线电的已导出的无线电寄存器代码。 我们通常使用 SmartRF Studio 8 生成这些射频配置(右上角的代码导出)。 修改这两个寄存器的位置应位于 SmartRF Studio 8 文件中特定 PHY 的 mdm...txt 文件中。  

    谢谢、
    Alex F