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.

[参考译文] CC2640:使用 SimpleLink BLE-Stack 2.2.1的 BLE 应用没有明显的原因断开连接。

Guru**** 1931890 points
Other Parts Discussed in Thread: BLE-STACK, CC2640
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/609605/cc2640-ble-application-using-simplelink-ble-stack-2-2-1-disconnect-for-no-apparent-reason

器件型号:CC2640
Thread 中讨论的其他器件:BLE-STACK

您好!
我们正在使用 SimpleLink BLE-Stack 2.2.1 (和相关工具链)开发 CC2640定制板应用。 Code Composer Studio 版本为:7.1.0.00016。 我们的应用源自"simple_peripheral"示例。 我们遇到的问题如下:

  • 经过一段时间(时间间隔为2分钟- 10分钟)后、我们通过通用 BLE Android 应用(BLE Scanner)连接挂起、没有明显原因。
  • 外设正常运行(无异常、堆栈溢出或发生任何"崩溃")只需决定重新启动广播。
  • 如果我们使用类似的 iPhone 通用 BLE 应用(LightBlue)、似乎没有出现问题。

跟踪通信我们可以看到:

 

  • 最初、外设正在广播

  

  • 智能手机需要连接并获取服务。

  • 以所需的连接间隔(最小1600ms、最大1800ms)交换空 PDU 以保持连接。

  • 一段时间后、外设停止应答并重新启动广播

是否有人遇到过类似的问题? 什么可能导致断开连接?
非常感谢。

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

    您是否在应用程序初始化中测量并设置了晶体的32k 睡眠时钟精度? 边际睡眠时钟问题将在较长的连接间隔上出现、这可能会解释电话操作系统行为的差异。 有关更多详细信息、请参阅 TI BLE wiki 上的硬件故障排除文章。

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

    非常感谢您的 JXS、

    您似乎已向正确的方向推动了我们、但我们尚未完全解决。 有关我们的测试的更多详细信息。

    我们使用3种不同的器件:

    1. 具有"LightBlue "应用作为 BLE 客户端的 iPhone 7 Plus。
    2. 将"BLE Scanner "应用作为 BLE 客户端的 Samsung SM-G900F Galaxy S5。
    3. Sony Xperia Z Ultra、将"BLE Scanner "应用作为 BLE 客户端。

     在您提出建议后、我们检查了振荡器精度:在我们的电路板上为40ppm (与 CC2640默认值相同)、但出于安全考虑、我们使用以下命令将睡眠时钟精度提高到了200ppm:

    HCI_EXT_SetSCACmd (200);

    此修改解决了器件2 (保持连接3小时)的问题、但未解决器件3的问题、该问题导致连接松动。

    我们尝试使用命令进一步提高振荡器精度

    HCI_EXT_SetSCACmd (500);

    但器件3连接仍然松动。

    还有其他建议吗?

    谢谢。

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

    在您的板级配置文件中、确保您设置了正确的定义、以设置射频前端和偏置配置。 另请参阅、如果使用连接控制服务可能有助于解决您的断开连接问题。

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

    您好!

    我已经了解了射频前端和偏置、它们针对 我们的电路板进行了正确设置:
    #define RF_FE_MODE_AND_BIAS   (RF_FE_DIFFT | RF_FE_INT_BIAS)

    关于"连接控制服务"我的 BLE 配置文件中没有这样的服务、但我认为我们可以通过修改代码中的连接参数并重新编译来进行测试。 是这样吗?

    我们需要缓慢的连接、 并且我们遵守 iOS 合规性规则、因此我们 设置:
    间隔时间:1600ms
    intervalMax:1800ms
    slaveLatency:0
    connSupervisionTimeout:5600ms

    此参数是否也适用于 Android 设备?


    有关断开连接的另一个详细信息:我们在 gapRole_ProcessGAPMsg (peripheral.c)中放置了一个断点。 当发生断开连接时、我们得到:

    pMsg->opcode =GAP_LINK_TERMINATED_EVENT
    pkt-->原因=LL_supervaling_timeout_term


    这是否有助于地下断开连接的原因?
    谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    啊、我记得连接控制服务是针对 OAD 的。

    当我的代码特征回调未排队或发布信标/事件时、我遇到了断开连接的情况。 无论如何、请在其他 Android 手机上尝试更多测试。

    -克尔
x 出现错误。请重试或与管理员联系。