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.

[参考译文] CC2642R:BLE 配对和绑定问题

Guru**** 2595770 points
Other Parts Discussed in Thread: SYSCONFIG, UNIFLASH

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1320414/cc2642r-ble-pairing-and-bonding-issue

器件型号:CC2642R
主题中讨论的其他器件:SysConfigUNIFLASH

您好!

问题1: 在硬件1上,我们面临一个问题,即 BLE 芯片无法与超过10部手机配对。

从第11部手机开始、我们在配对或首次建立连接时遇到超时问题。

 我遇到了此 TI 论坛 链接 、其中讨论了几乎类似的问题:

"我们将其限制为10、因为在使用隐私以及扫描/建立与您已配对的设备的连接时、设备必须首先遍历完整的解析列表和绑定条目、以检查在发送请求之前是否可以解析广播器的 RPA。 对于所有三个4 PHY、即 S=2、S=8、1Mbps 和2Mbps、都必须执行此操作。 定义10的限制是因为在使用2M PHY 的情况下、器件没有足够的时间来看到使用 RPA 的广播器、对照解析列表/债券对其进行检查、 如果有11个绑定的器件及以上的器件、则在规范定义的最小周转时间内发出所有连接请求。 10之后、我们未对这种行为进行描述、也不能保证使用10之后、您和您的客户将面临您将被超越的设备限制的风险。  "

我们怀疑我们面临的问题是由于上述 配对限制。  您能否从您身边确认 TI BLE 芯片支持的最大配套器件数量?

问题2. 在硬件2上、我们最多可以配对18部电话。  

绑定条目设置为10

RLU 配置设置为0  

使用上述设置时、只应绑定前10个。 但是、当我们第二次尝试重新连接时、所有最初的10部手机都可以连接、无需新的配对请求。 这确认前10个已绑定。

但是、在11到18岁的手机中、很少有人能够在没有其他配对请求的情况下重新连接、只有少数人提供配对弹出窗口、然后出现配对错误超时。 因此、我们不确定从11到18种器件的具体情况。 他们只是配对一次、没有绑定? 然后、某些手机如何能够在不打开配对弹出窗口的情况下进行第二次连接? 大多数配对超时问题发生在 iPhone 和其他一些最新型号的手机。 不同型号的手机是否以不同的方式处理未绑定其他设备上的密钥的情况?  

感谢您的快速回复以及与此相关的任何其他详细信息!

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

    您好!

    感谢您与我们联系。

    q1 -您没有指定这里使用的 SDK 版本、但我想您使用的是一个相当新的 SDK (至少比6.10新)。
    参考的 E2E 主题已有5年以上的历史。 截至今天、CC2642经过测试、支持多达32个键合点。
    默认情况下、债券条目数设置为10。 可以使用 SysConfig > BLE > Bond Manager > Maximum Number of Supported Bonds 来更改此值

    Q2-如果停用 LRU 键合替换、器件不会形成更多键合、但在需要时仍会配对。 我想您可以使用蓝牙监听器确认器件是否绑定。
    一般来说,如果你想增加债券的数量,我建议遵循第一个问题的指导。

    我希望这将有所帮助、

    此致、

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

    您好、Clement、

    我们使用的 SDK 是  

    SimpleLink  CC13x2_26x2 SDK 5.20.00.52。 请确认这是否已过时或可能会产生第一个问题中提到的问题。

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

    您好!

    通常、我们建议使用最新的 SDK 版本投入生产。
    根据我的观察、SDK 5.20应该允许您达到前面提到的32个绑定。

    请参阅适用的文档以增加绑定项的数量: https://software-dl.ti.com/simplelink/esd/simplelink_cc13x2_26x2_sdk/5.20.00.52/exports/docs/ble5stack/ble_user_guide/html/ble-stack-5.x/gapbondmngr-cc13x2_26x2.html#increasing-number-of-bonding-entries

    此致、

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

    您好、Clement、

    是的、我们会将带数量从10增加到32。  

     在 NVM 中验证 BLE 绑定地址的最佳方法是什么? 可以在 JTAG 调试器监视窗口中查看 NVM 数据吗?

    如果需要、 需要检查什么地址? 我们通过提供 NVM - 0x520000的起始地址来检查调试器、但是无法找到我们已经绑定的10个器件中的任何一个。

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

    Reshmi,

    请参阅  用户指南的"提取绑定信息"部分。 本节包含有关如何提取绑定数据的代码示例和说明。   如果要处理绑定信息、GAP 绑定管理器和 LE Secure Connections 一章作为一个整体将是非常有价值的参考。

    此致、
    卢克

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

    您好、Clement、

    1)您共享的文档说明了如何提取代码中的绑定数据。 我的问题是如何检查 NV 存储器位置以轻松验证绑定的器件地址、而不对代码进行其他更改。 可以在 JTAG 调试器中查看这些地址还是获取闪存转储? 如果需要、我们应该检查哪一个起始地址?

    2)我们修改了 GAP、GATT 配置和 sutom 数据的开始和结束位置,以从10 t0 20绑定的设备进行更改。

    (我发现如果我为32个器件执行此操作、索引会跨越 FF)

    请查看这些值、并告知我们目前20个器件的这些值是否正常。

    //粘结 NV 项目-     为20次粘结而修改
    #define BLE_NVID_GAP_Bond_START        0x20 //!< GAP 绑定管理器的 NV ID 开始
    #define BLE_NVID_GAP_BAND_END          0x98 //! GAP Bond Manager NV ID 范围结束

    // GATT 配置 NV 项目-范围-  这必须与绑定项的数量相匹配
    #define BLE_NVID_GATT_CFG_START        0xA0 //!< GATT 配置 NV ID 的开始
    #define BLE_NVID_GATT_CFG_END          0xB4 //!< GATT 配置 NV ID 的结束

    //客户 NV 项目-范围 0x80 - 0x8F -这必须与绑定项的数量相匹配
    #define BLE_NVID_CUST_START            0xC0 //!<客户 NV ID 开始
    #define BLE_NVID_CUST_END              0xD4 //!<客户 NV ID 的结束

    3) SDK 文档中有一个注释:

    "注:绑定配置中的任何更改、例如增加绑定条目的最大数量、必须随后完全擦除 NV。 由于堆栈中没有可执行此操作的 API、因此必须使用 CCS 或 Uniflash 等编程工具执行擦除。"

    该 NV 擦除与闪存整体擦除是否与我们通常在闪存编程之前进行的擦除相同? 或者是否有只能使用 UniFlash 或 CCS 完成的 NV 区域特殊擦除。 我们使用 WinIdea 对闪存进行编程和擦除。

    4) 4)当我们重新刷新芯片时、NV 区域/绑定数据是否会被保留?

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

    或者、请分享32个绑定器件的 NVIDS 的计算结果。

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

    您好!

    可以使用整体擦除功能完成完整的 NV 擦除。 应该可以查看存储绑定信息的地址、并以这种方式提取信息。 退一步讲、您能否解释一下为何要尝试查看绑定的器件? 它用于调试目的吗?

    此致、

    1月

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

    是的、这用于调试。

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

    您还能回答剩余的问题吗?

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

    您可以确认我们需要编辑的 gapbondmgr.h 路径是否为这个路径吗?

    -> C:\ti/simplelink_cc13x2_26x2_SDK_5_20_00_52\source\ti\ble5stack\inc\gapbondmgr.h

    我们的器件充当 BLE 外设。

    我们将GAP_BONDINGS_MAX从10提高到32、并进行清理和构建。 然后、我们将执行批量擦除并刷写代码。 但在我们的测试中、这些更改看起来没有生效。 在调试器中、我们可以看到 gapbondmax 变量仍具有值10。 请查看相关步骤、并告诉我是否遗漏了任何内容。

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

    Reshmi,

    您能否澄清哪些问题仍有待解答、您需要更多详细信息?

    C:\ti\simplelink_cc13x2_26x2_sdk_5_20_00_52\source\ti\ble5stack\inc\gapbondmgr.h

    这是需要编辑的正确文件路径。 您所述的步骤正确无误。 如果您在执行这些步骤时遇到任何问题、请告诉我们。  

    此致、

    卢克