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.

[参考译文] CC2650:多角色连接超时问题

Guru**** 2595780 points
Other Parts Discussed in Thread: SIMPLELINK-CC2640R2-SDK, CC2650

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/564919/cc2650-multirole-connection-timeout-issue

器件型号:CC2650
主题中讨论的其他器件:SIMPLELINK-CC2640R2-SDK

我正在使用 ble_examples/2.2中的 multi_role_cc2650lp_app/stack 项目进行测试。 我有一个具有 CC2650EM-7ID 的 SmartRF06。  由于示例中没有 CC2650EM 版本的工程(为什么?)、我修改了 LaunchPad 版本以在评估板上运行。 我使用的是 CCS 7、编译器版本16.9.0.LTS、BLE SDK v2.01.18和 TI-RTOS v2.20.1.08。  

通常、它看起来正常工作、但当我连接到它时、将其视为外设、连接在一分钟内由于某种原因而断开。 起初、我认为它与粘接相关(我认为这是其他人面临类似问题的问题)。  我使用 MacOS 中的 LightBlue 以及 Android 手机上的 NRF Connect 连接与其连接、并且在键入123456密码后、二者都无法配对(MacOS 原因是"SMP_Pairing_failed_unspecified 0x08 //!<由于未指定的原因、配对失败"; Android 一个"SMP_Pairing_failed_OOB_not _AVAIL 0x02 //!< OOB 数据不可用")。 我不知道其中任何一个失败的原因、因此我只通过将配对模式更改为 GAPBOND_PAING_MODE_WAIT_TO_REQ 来阻止它。  但是、问题仍然存在。 我向 gapRole_processGAPMsg 添加了一个断点、以查看 GAP_LINK_TERMINATED_EVENT 的原因。 当使用任一器件连接到"multirole:"时会发生这种情况。  这是唯一存在的连接(即1个外设、0个中央设备)。

我查看了数据包、似乎没有发生任何奇怪的事情。  在交换大量空 PDU 后、连接会停止(我会包含该信息、但我只有一个与 Wireshark 相结合的 Adafruit 监听器。  问题: 是否有方法可以将 CC2650em 用作 BLE 数据包监听器?)。  之后、器件会恢复广播。

有人可以提供任何建议或帮助吗?

(一些其他背景信息:我在处理最初源自 SimplePeripheral 的项目时实际上发现了这一点。  我想向其添加多角色功能、因此我做的第一件事是为其构建一个新的堆栈库、其中针对-DHOST_CONFIG=PERIODIFY_CFG+CENTRAL_CFG-dble_V41_features =V41_CTRL_CFG 进行了修改、就像在 multi_role 项目中一样。  该应用程序保持不变、只是为了应对新堆栈而进行了重新构建。  在更改之前(即、仅-DHOST_CONFIG=PERIOD_CFG)、与我的外设的连接是稳定的:与任一客户端测试应用程序的连接都将无限期持续。  使用多角色堆栈时、会出现连接超时问题。  这是我返回到原始多角色项目进行检查的时候。)

谢谢!

Dave

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

    多角色设备通过显示屏提供断开连接的原因是什么?

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

    感谢您的回答。 它不显示原因、只是"断开连接!"。 我必须使用调试器来确定原因是什么。 我一直在使用 LCD、但我切换到了 UART。 以下是从 MacOS LiteBlue 连接到它时的整个输出:

    ****
    已初始化
    广播
    扫描->
    <-下一个选项
    连接到0
    0xC4BE84B76482
    已初始化
    广播
    已连接!
    连接到1

    0x9801A78F9DC8
    广播
    连接到0
    已断开连接!
    ****

    顺便说一下、在尝试了一些其他东西(包括切换回 CCSv6.2和旧版编译器)之后、我终于将 multi_role 项目"反向"移植到 BLE 2.2.0/TI-RTOS v2.18.00.03 (我认为这基本上就是2650em 的 multi_role 的"Ble_examples-master"版本)。 通过使用该堆栈和 RTOS、multi_role 和我具有外设+中央堆栈的外设软件似乎都可以正常工作、并按预期无限期保持连接。 因此、我有一个权变措施、但我想了解较新版本为什么会出现问题会很有用。

    Dave
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这里有许多变量和修改、因此如果没有嗅探器捕获、我无法进行大量评论。

    在任何情况下、EM 都将被淘汰并替换为 Launchpad、因此您不会看到任何新的 EM 项目。 我强烈建议您获取 CC2640R2 launchpad (www.ti.com/.../LAUNCHXL-CC2640R2) 并使用 SIMPLELINK-CC2640R2-SDK 安装程序中现已包含的多角色项目:www.ti.com/blestack。 由于这使用 CC2640R2、因此您还将为应用提供更多代码空间、这一点很重要、因为中央/外设堆栈占用的空间很大。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Tim、

    感谢您的更新:EM 以及新部件。  我们现在致力于使用原始器件、而我只是使用 SmartRF06进行一些开发、以便于使用。  我所做的唯一真正修改是将 CC2650_LAUNCHXL 更改为 CC2650DK_7ID、但这可能会对功能产生影响。

    无论如何、我想现在我将坚持使用 BLE 2.2.0、因为这似乎可以正常工作。

    Dave

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

    您好、Tim、

    我在这里遇到了与 Dave 相同的问题。 我打开了 SIMPLELINK-CC2640R2-SDK 的 multi_role 项目。 我正在使用定制板、因此我更改了 board.c 文件以包含我的板级配置文件。 我还定义了"Display_disable_All"、因为我不会将其中任何一个与我的定制板一起使用。 我还使用"Board_BUTTONx"注释了这些器件、因为我也不使用它们。  我将代码下载到我的板上、并尝试使用带 NRF Connect 应用程序的 Android 设备连接到它。 以下是我第一次捕获的监听器:

    首先、我认为它可能是我电路板中的32kHz 晶体、但我检查了 ccfg.c 文件、并看到为 LF RCOSC 定义了 SET_CCFG_MODE_CONF_SCLK_LF_OPTION。 后来我认为这可能与配对过程有关、因此我将 GAPBOND_Pairing_mode_no_pairing 模式的 GAP 绑定管理器设置为 GAPBOND_Bonding_enabled 、并将 GAPBOND_Bonding_enabled 设置为 false。 我的第二次尝试显示了以下监听器捕获:

    因此、我转到外设请求此操作的部分、并在 multi_role_startDiscovery 函数内的 multi_role.c 中注释了"void GATT_ExchangeMTU (connHandle、&req、self Entity);"函数。 我再次下载了新代码并尝试连接、但这次我捕获了以下内容:

    您能帮我解决这里的问题吗? 顺便说一下、我尝试了 simple_peripheral 项目、执行了相同的步骤来更改板级配置文件、一切都正常。

    祝你一切顺利、

    欧格尔肯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在中国遇到了同样的问题、您可以更改项目文件与我共享、我的邮件是 yinlf93@163.com