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:连接到 iOS 时的常规断开事件/不稳定。 连接参数出现在范围内。

Guru**** 2551790 points
Other Parts Discussed in Thread: CC2650, BLE-STACK, LAUNCHXL-CC2650, CC2541, CC2640

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/574277/cc2640-regular-disconnection-events-instability-when-connecting-to-ios-connection-parameters-appear-within-range

器件型号:CC2640
Thread 中讨论的其他器件:CC2650BLE-STACKLAUNCHXL-CC2650CC2541

我的应用程序连接到 iOS 时遇到了一些严重问题。 最初似乎可以找到器件并正确接合、但此后会定期断开连接。

在示波器上查看功耗时、我可以看到连接断开的确切时刻以及重新建立连接的时间。 它们之间的时序可能是完全随机的。 有时、连接将持续10秒、有时它将持续5分钟。 我应该注意到、我除了使用 Android 的稳定连接之外、没有遇到任何其他问题。

对于应用、已按如下方式设置连接参数:

//如果启用了自动参数更新请求,则最小连接间隔(单位为1.25ms,80=100ms)
#define DEFAULT_MILLET_CONN_INTERVAL 264//330ms
//最大连接间隔(单位为1.25ms,800=1000ms) 如果启用了自动参数更新请求
、则使用#define DEFAULT_REGIND_MAX_CONN_INTERVAL 288//360ms
//如果启用了自动参数更新请求、则使用从器件延迟
#define DEFAULT_REGIND_SLAVE 4
//监控超时值(10ms、1000=10s 单位) 如果启用了自动参数更新请求
#define DEFAULT_MILLED_CONN_TIMEOUT 600
//在建立连接时是否启用自动参数更新请求
#define DEFAULT_ENABLE_UPDATE_REQUEST TRUE
//连接暂停外设时间值(以秒为单位)
#define DEFAULT_CONN_PAUSE_PERPLED_PERAPTER 10

//器件可发现时的广播间隔(单位625us、160=100ms)
#define DEFAULT_INTERVAL 广播间隔244 // 150.5ms 广播间隔
#define ADV_TYPE_General_ADV_INT2056 // 1285ms 广播间隔// 1022.5/1285 max? 

在初始化函数中、执行以下操作:

uint16_t desedMinInterval = default_desed_min_CONN_interval;
uint16_t desedMaxInterval = default_desed_MAX_CONN_interval;
uint16_t DesedSlaveLatency = default_desired Slave_slave_latency;
uint16_t UpdateTimeTimeout = default_desired _CONN_timeout;uint8 param_ench_ench_ench_enq_dimeter


(default_ench_ench_ench_ench_ench_ench_ench_ench_rase_rum_encheap_enchrom_ench_ench_ench_enchine_enchinese_enchine_enchine_enpetrase_rase_rase_rum_
sizeof (uint16_t)、esedMaxInterval);
GAPRole_SetSlaveter (default_desed_slave_latency、sizeof (uint16_t)、desedSlaveLatency);
GAPRole_SetParameter (default_desed_CONN_timeout、sizeof (uint16_t)、desedConnTimeout);
GAPRole_SetParameter (GAPROLE_PARAM_UPDATE_ENABLE、sizeof (uint8_t)、 enableUpdateRequest (enableUpdateRequest)(enableUpdateRequest)); 

请注意:出于某种原因,此示例最初称为 GAPRole_SendUpdateParam(...) 函数、这似乎毫无意义、因为它需要连接才能正常工作、而初始化的这一点从未如此。 项目0示例中需要修复的问题

因此、您可以看到所有参数都在 Apple 的规格范围内:

MaxConnInt = 360ms
MinConnInt = 330ms
从器件延迟= 4
ConnSupervisionTimeout = 6.

  • MaxConnInt *(sl+1)< 2秒: 
  • Min ConnInt < MaxConnInt-20ms: 
  • 从机延迟<= 4: 
  • ConnSupervisionTimeout≤6秒:
  • MaxConnInt *(SL + 1)* 3 < connSupervisionTimeout: 

为什么这些问题仍然存在?

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

    您是否已利用 BLE AIR 监听器捕获来确定连接断开的原因? 如果您的定制板上发生这种情况、请查看 BLE wiki 上的硬件故障排除指南。 首先、我将确认您的32kHz 睡眠时钟是否按预期运行。

    请注意、Android 默认使用20秒的 LSTO、这有助于补偿睡眠时钟误差。

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

    您好、JXS、

    您能否向我解释一下我将如何获得您正在讨论的 BLE 空气嗅探器、以及如何使用它来调试 iOS 上的连接?

    我已经检查了时钟、它看起来与您预期的在可接受的容差范围内一样接近。 我已经在定制硬件和 CC2650 Launchpad 上进行了尝试、结果类似。

    大多数情况下、由于从器件延迟较高(2-4)、几分钟内便会断开连接。 如果从机延迟设置为0、则可以超过15分钟。 它只有一次稳定了45分钟以上、我也没能再现它。  

    谢谢、
    Craig

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

    请参阅 TI BLE Wiki 上的 TI 数据包监听器文章、了解有关使用 CC2540USB 软件狗进行空气监听器跟踪的说明。

    我假设您使用的是浅蓝色、并将应用程序保持在前台、而不让显示屏进入睡眠状态。 此外、CC2650 LaunchPad 上是否存在此问题?

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

    您好、JXS、

    我现在已经使用数据包监听器进行了测试。 似乎 iOS 已接受连接参数、但仍存在断开连接:

    看起来从器件停止响应主器件、但我不知道这是为什么。 应用程序显示"连接意外超时"。

    固件中是否有任何可能导致从器件随机发生故障的情况?

    是的、我们已经在 CC2650 Launchpad 上进行了测试。 以上内容实际上是通过 LaunchPad 代替定制硬件进行的测试来排除这一问题。

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

    是否可以附加整个监听器文件? 我将尝试根据监听器中使用的参数在 LaunchPad 上进行复制。

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

    您好、JXS、

    我已附加监听器文件。 如果您发现任何问题、请告诉我。

    非常感谢、
    Craig

    e2e.ti.com/.../xupo-disconnection-event.psd

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

    监听器日志参数似乎与您在 OP 的代码片段中列出的内容不匹配。 您能否在 LaunchPad 上发布与 BLE-Stack v2.2.1兼容的修改后的 simple_peripheral.c 来演示此问题?

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

    您好、JXS、  

    这是一个相当紧迫的问题、因此我们一直在大量尝试实现稳定连接的参数、这就是它们可能与一周多前的代码不同的原因。 但结果通常始终相同。

    我相信我一直在使用 Simplelink BLE 堆栈2.2.0 (ble_sdk_2_02_00_31)。 似乎不是 simple_peripheral 示例(至少没有标记)、但我的应用基于 Project 0。

    我在新工作区中创建了一个 ProjectZero 的新实例、并整合了我为原始工程设置的连接参数、可以从 project_zero.c (已附)的461-773行中看到该参数。 在大约13分钟后、LaunchPad 和 iOS 之间甚至会发生相同的断开连接。

    e2e.ti.com/.../1104.project_5F00_zero.c

    感谢您迄今为止的帮助、

    Craig

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

    我使用 BLE-Stack v2.2.1和 LAUNCHXL-CC2650上 project_zero.c 的内容构建了 Project Zero。 我能够保持与运行 iOS 10.2的 iPhone 7的连接超过20分钟。 APP 为浅蓝色、未观察到断开连接。

    您能否使用 BLE-Stack v2.2.1检查设置? 您的 PROJECT_zero.c 与此 SDK 兼容。

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

    您好、JXS、

    我下载了新的 SDK 和更新的 SimpleLink Academy。 我在新工作区中创建了项目零应用程序(+栈)的新实例、并添加 了我在上面附加的示例中使用的设置。

    很明显、由于 SDK 已更改、更新参数请求不再是 true 或 false、因此我使用了此函数:

    //在建立连接
    时是否启用自动参数更新请求#define DEFAULT_ENABLE_UPDATE_REQUEST GAPROLE_LINK_PARAM_UPDATE_INITIATE_MAL_PARAMS 

    但是、测试此情况时、我得到的断开事件与之前完全相同。 我使用的是带 iOS 10.1的 iPad 进行测试、但我将更新到10.2并重试。

    我不明白当我在使用相同的设置时、如何获得稳定的连接。 您能向我介绍一下您为实现这一目标所做的工作吗?

    谢谢、
    Craig

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

    紧急更新请求

    尊敬的 JXS/TI 支持团队:

    我代表 Connect 跟进、由于事情非常紧迫、我们已停止生产即将发货的10、000台设备。  

    为了给您提供一些背景信息、我们之前没有注意到任何类似的问题、并且拥有基于适用于 apx 的 TI cc2541的模型。 3年的生产经验。 最近、我们对 TI cc2640进行了芯片更改、并观察到 Launchpad 器件上最新版本的堆栈存在此问题、  这正是我们在该项目上的固件工程师 Craig 奕斯代尔所描述的问题。  

    我们会及时向您寻求帮助、并向您提供有关该问题的最新信息、因为此事是继续生产的当务之急。

    此致、

    Raj Sark (Connect-in Ltd 董事)。  

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

    为了返回并更新、我在17分钟后重现了断开问题。 我向您发送了一个包含修补说明的 PM。

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

    您好、JXS、

    感谢您的更新。 我们尚未收到 PM。 您能给我们发送还是联系 Craig plz。

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

    支持团队、

    由于此事有时间限制且至关重要、我们将再次联系。  

    JXS -感谢您先前的输入。 然而,我们仍在等待一个可行的解决办法。 我们也没有对可能出现的问题有任何了解、您能不能详细阐述一下 plz?  

    我们需要非常紧迫地处理这一问题。

    KR、

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

    我们将继续研究这一点。 如果可以、请提供应用了最新补丁的监听器捕获。

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

    我上周向您发送了相关的压缩项目。 它们已经过修补、但仍显示断开连接问题、因此如果您想进行调查、您可以自行复制。 我目前无法发送监听器文件。

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

    您好、JXS、

    我们已向您发送基于新补丁的监听器文件、供您检查。 问题似乎与 PHY 层的 Rx 窗口有关?  

    我们请求 TI 立即采取行动、我们暂停生产、现在有依赖 cc2640的紧急客户。  

    KR、

    Raj。