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-Q1:通道选择算法2

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1384874/cc2642r-q1-channel-selection-algorithm-2

器件型号:CC2642R-Q1

工具与软件:

我的客户发现、当外设侧(CC2642)上的 CSA#2已禁用时、其中央设备(NXP KW45)仍会随 CSA#2发送 CONNECT_IND。

在 BLE 核心规范5.3中、有两个部分 对于 CSA#2而言是矛盾的。 在第6卷第 B 部分第2.3.3.1节中、它指出如果启动器支持 CSA#2、则启动器可以将 ChSel 字段设置为0或1、但广播器不会:

在 第6卷第 B 部分 4.5中、说明当其中一个或两个 PDU 的 ChSel = 0时、应使用 CSA#1:

哪一个是正确的? 外设不支持时、中央设备使用 CSA#2是否合法?

此致、

沭阳县

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

    嗨、沭阳

    CSA #2是否用于连接取决于对等器件支持的内容。 如果 CSA#2 已被外设禁用、 则 CSA#1应由中央设备使用。 是否有 Ellisys 嗅探器文件?  您可以检查连接指示数据包的 Chsel 字段和 LLCP 功能交换过程以获取 CSA 信息。

    此致、

    Kevin

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

    您好、Shuyung、  

    Kevins 的评论是完全正确的。 Ellisys 日志将显示广播包的 CSA 和连接指示包的 CSA。 请使用此方法进行验证。  

    确保在广播或启动之前选择 CSA。 如果在广播/启动期间更改了 CSA、则 CSA 将不会从之前设置的 CSA 进行更新。 有关详细信息、请参阅用户指南中的禁用 CSA #2。  

    谢谢!  

    Isaac

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

    尊敬的 Isaac:

    请找到针对此问题的监听器日志、可以使用 blueSPY 软件打开该文件。

    e2e.ti.com/.../0703_5F00_resetok.pcapng

     

    从监听器日志中、我们可以看到 ADV PDU 使用 CSA#1、而 CONNECT_IND 使用 CSA#2:

    我的问题是、这种行为是否符合 BLE 规范?

    为了添加更多背景信息、客户报告此情况是因为他们看到0x3E 断开连接。 除了通道选择之外、是否还有其他任何可能导致0x3E 的原因?

    此致、

    沭阳县

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

    您好、沭阳、  

    很抱歉耽误您的时间、需要额外时间给您回复。 这里有一些差距、我正试图加以解决。 我将在星期四给你一个答复(07/11)。  

    关于断开连接(0x3E)、我不确定。 我似乎无法在 blueSPY 中打开 PDU、因此我无法给出答案、直到我弄清它。  

    谢谢!  
    Isaac

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

    大家好、沭阳

    哪一项是正确的? 当外设不支持 CSA#2时、中央设备使用 CSA#2是否合法?[/QUOT]

    这两个部分都是正确的。 就最终行为而言、当外设不支持时、中央器件使用 CSA#2是不正确的。

    [报价用户 id="168885" url="~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1384874/cc2642r-q1-channel-selection-algorithm-2 "]

    在 BLE 核心规范5.3中、有两个部分 对于 CSA#2而言是矛盾的。 在第6卷第 B 部分第2.3.3.1节中、它指出如果启动器支持 CSA#2、则启动器可以将 ChSel 字段设置为0或1、但广播器不会:

    [报价]

    我想在第1节中唯一让人困惑的是:当广播者不支持 CSA#2时、发起者可能会将 ChSel 字段设置为1。
    在这种情况下、广播器应将 ChSel 字段设置为0。 在这一点上,第2节中的陈述仍然有效,所以这两节不相互矛盾。

    广播器始终使用 CSA#1、但启动器在其 CONNECT_IND 数据包中使用 CSA#2、它们的通信方式不相同、这就是它们无法建立连接并导致断开0x3E 的原因。
    现在我们来分析为什么 ADV_IND 使用 CSA#1、但 CONNECT_IND 在监听器日志中使用 CSA#2。

    [报价 userid="168885" url="~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1384874/cc2642r-q1-channel-selection-algorithm-2/5295281 #5295281"]

    从监听器日志中、我们可以看到 ADV PDU 使用 CSA#1、而 CONNECT_IND 使用 CSA#2:

    [报价]

    原因应该是处理 ble 堆栈中归档的 ChSel 存在问题。 接收器件应将 ChSel 设置为0、并在使用 CSA#1时将其忽略。 不应根据 Rx PDU 的 ChSel 文件设置它、因为 ChSel 字段是核心规范5.0之前的 RFU 位。

    当广播器不支持 CSA#2时、如果发起方将 ChSel 字段设置为0、则 CONNECT_IND 将使用 CSA#1。 似乎 NXP 的器件没有将 ChSel 字段设置为0、尽管 NXP 符合核心规范、但在这种情况下最好将 ChSel 设置为0。

    这是使用 CSA#1的 CC2652和使用 CSA#2的手机的监听日志、这些手机可以正常通信、CONNECT_IND 使用 CSA#1。

    (奇怪的是、为什么我不能在此处添加嗅探器附件)

        

        


    此致、
    Kevin

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

    您好、沭阳、  

    关于当外设在其 ADV PDU 中禁用 CSA #2时、中央设备发送带有 CSA #2的 CONNECT_IND 是否合法的问题、此问题是合法的。 在规范范围内、没有矛盾之处。 在第6卷第 B 部分第2.3.3.1节中、该部分仅说明了如何使用  中央  当器件同时支持 CSA #1和 CSA #2、而外设不支持 CSA #2时、将正常运行。 在第6卷第 B 部分第4.5节中、该部分指明是否  影响  或两者兼而有之 器件的 ChSel 字段被设置为零、然后使用 CSA #1、否则使用 CSA #2。 这与在监听器日志的 ChSel 字段中看到的内容相匹配。  

    关于0x3E 错误的可能根本原因、该错误表示未能建立连接/同步超时(Vol. 1、Part F、2.59)。 从监听器日志中可以看出、在 CONNECT_IND 数据包之后、中央设备似乎没有发送任何连接数据包。 外设将在预分配的通道上六次查找这些数据包。 如果外设连续六次没有看到任何内容、您将收到0x3E 错误。 如前所述、这似乎是中央设备的问题、因为日志不会显示中央设备在 CONNECT_IND 数据包之后显示至传输窗口。 请参阅 BLE 规范的第6卷、B 部分、图4.43以了解详情。  

    Kevin  

    感谢您发送编修。  

    此致、  

    Isaac

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

    尊敬的 Isaac:

    空数据包在 BlueSPY 的设置中被过滤、请启用"Empty Packets"按钮、然后您可以看到在 CONNECT_IND 之后有6个空数据包:

    并且客户在 GAP_LINK_ESTABLISTED_EVENT 中添加了调试 GPIO、当问题发生时、似乎未输入该事件。

    客户还发现在发生问题时、在 CONNECT_IND 发生后不久出现 ADV_IND、但在成功连接后未看到 ADV_IND (监听器日志中的最后一个连接成功)。

    此致、

    沭阳县

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

    沭阳  

    感谢您的答复。 看到空数据包后、我们需要重新评估我们的响应。 预计下周早些时候会有回应。

    由此给您带来的不便、我深表歉意。  

    谢谢!  

    Isaac