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:CC2642 连接

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1580957/cc2642r-cc2642-connect

器件型号: CC2642R

你(们)好

芯片型号:CC2642  

SDK 版本:simplelink_cc13xx_cc26xx_sdk_7_41_00_17  

我想问、将 CC2642 连接到手机时是否可能出现以下情况  

iOS 手机连接到 CC2642 并向其发送数据。 一旦、手机向 CC2642 发送了一个数据包 A、但协议栈没有通知应用层读取它。 当手机再次将数据 B 发送到 CC2642 时、协议栈通知应用层读取数据、但读取的数据是之前的数据 A  

一旦发生这种情况,即使蓝牙断开并重新连接,当手机向 CC2642 发送数据并且协议栈通知应用层读取数据时,获得的数据仍然是在断开连接前未通知的旧数据。

尽快回复问题。

谢谢!  

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

    您好、王

    感谢您的联系。 IOS 电话作为中心角色进行连接是否正确? GATT 写入命令发送数据? 虽然栈已经收到应用程序,但我看不到栈将如何不会通知它(因为根据您所说的,它已收到,但稍后显示)。 如何将 GATT 写入值从栈传递到应用层?

    BR、

    David。

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

    你(们)好

    IOS 电话连接的中心角色正确。

    我想请各位确定是否存在这种可能性。 目前,我没有证据证明所有这些问题都是由市场用户造成的。

    谢谢!  

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

    您好、王

    这听起来可能发生在应用层。 您对此有更多详细信息吗?

    BR、

    David。

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

    你好。  

    我可能已经解决了这个问题  

    连接 iPhone 后、手机上的连接间隔设置为高。 手机发送到 cc2642 的数据包由手机以两个数据包的形式发送、第一个和第二个数据包之间的间隔为 100ms。 但是、偶尔 CC2642 会同时接收两个数据包  

    此问题可能在哪里被阻止?  

    (1) 您的电话是否被阻塞?  发送第二个数据包时、这两个数据包是否在相同的连接间隔内发送?  

    (2) cc2642 被阻止、仅在收到来自协议栈的第二个数据包时通知?  

    上述哪一种情况可能是这样的?  

    您能详细解释一下吗?

    谢谢!  

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

    您好、王

    中央设备(IOS 设备)可以在每个连接间隔传输多个数据包。 例如、这将取决于数据包大小、MTU 大小、连接间隔和 PHY。 蓝牙规范仅 定义 “中心应确保连接事件在下一个连接事件的锚点之前至少关闭 T_IFS “、因此 iPhone 可以每个连接间隔发送多个数据包、并且 cc2642 未正确解析接收到的消息(例如,仅读取与每个连接一个数据包相对应的前 X 个字节数)。 我们可以使用蓝牙监听器确认这一点、并在实践中了解无线网络发生的情况。

    BR、

    David。

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

    你好

    中央器件(IOS 器件)连接到 CC2642 后、协商的 MTU 为 186、连接间隔为最大值、约为 15ms、PHY 为 1M  

    中央器件(IOS 器件)向 CC2642 发送数据。 有一个包含 240 字节数据的数据包。 移动电话发送两个数据包、第一个是 180 字节、第二个是 60 字节。 中央器件发送的第一个数据包和第二个数据包之间的间隔为 100ms。 cc2642 同时接收两个数据包的可能性非常低。  通过 gattServiceCBs_t 连续两次调用结果、则数据包是正确的。 第一个数据包为 180 字节、第二个数据包为 60 字节。  

    现在我想知道在什么情况下这个问题可能偶尔发生。 目前、它不会影响设备的运行。 我需要向客户提供详细的解释、我需要您的帮助。  

    此外、这种现象偶尔发生的概率相对较低。 通过使用蓝牙监听器、需要进行长期监控。 我手头没有稳定的专业蓝牙监听器。  

    谢谢!  

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

    您好:

    好的、IOS 设备的 ATT_MTU 最大值似乎为 185 字节、这意味着每个数据包最多可以发送 182 个数据字节。 传递函数

    IOS 手机连接到 CC2642 并向其发送数据。 一旦、手机向 CC2642 发送了一个数据包 A、但协议栈没有通知应用层读取它。 当手机再次将数据 B 发送到 CC2642 时、协议栈通知应用层读取数据、但读取的数据是之前的数据 A。[/报价]

    您是指数据包 B 是最后 60 个字节的数据、还是下一个 180(来自接下来的 240 字节大小的数据包)? 因为如果间隔为 100ms、我本来希望器件在相同的连接间隔内发送两个数据包 (180 和 60)。

    BR、

    David

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

    你(们)好

    抱歉、开始时无需考虑问题。

    现在、我们只需要解释以下问题的可能原因是什么?  

    请您提供一些可能的原因、以便我可以向客户解释这些原因  

    中央器件(IOS 器件)连接到 CC2642 后、协商的 MTU 为 186、连接间隔为最大值、约为 15ms、PHY 为 1M  

    中央器件(IOS 器件)向 CC2642 发送数据。 有一个包含 240 字节数据的数据包。 移动电话发送两个数据包、第一个是 180 字节、第二个是 60 字节。 中央器件发送的第一个数据包和第二个数据包之间的间隔为 100ms。 cc2642 同时接收两个数据包的可能性非常低。   通过 gattServiceCBs_t 连续两次调用结果、则数据包是正确的。 第一个数据包为 180 字节、第二个数据包为 60 字节。  

    现在我想知道在什么情况下这个问题可能偶尔发生。 目前、它不会影响设备的运行。 我需要向客户提供详细的解释、我需要您的帮助。  

    此外、这种现象偶尔发生的概率相对较低。 通过使用蓝牙监听器、需要进行长期监控。 我手头没有稳定的专业蓝牙监听器。  

    谢谢!  

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

    您好、王

    正如我所提到的、中央设备(电话)可能在相同的连接间隔内传输两个数据包 (180 + 60)、 但这取决于多种因素、例如 MTU 大小和连接间隔(以及启用了 DLE — 数据长度扩展的事实)。  根据 MD(更多数据)位、外设将知道在相同的连接间隔内有更多数据进入、该位是链路层 PDU 的一部分、  当主机有更多数据进入队列时、控制器会设置这些数据。 用户不能直接控制该字段、但 必须将其置为有效。 我看不出此机制在正常情况下会如何失败(不考虑无线数据包丢失)。 但是、我没有得到的是您提到连接间隔为 15ms、但是两个分段的数据包通过中央设备在彼此之间发送了 100ms、这是正确的吗? 为什么不同时发送两个片段? 拥有某种日志(如果不是理想的嗅探器日志)对于分析实际发生的情况很有用。

    BR、

    David。