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.

[参考译文] CCS/CC2564:CC2564:Windows 10 (版本1803 Creator)通过 HID 连接到 CC2564B

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/933532/ccs-cc2564-cc2564-windows-10-version-1803-creator-connection-to-cc2564b-with-hid

器件型号:CC2564

工具/软件:Code Composer Studio

  您好:

  我使用 STM32 cc2564b 的 TI-hiddemo。  在我的器件配对和连接之前、我将器件的 HID 模式设置为"器件"、 然后,当 PC 连接设备并成功匹配设备时,我将与 PC 的连接的“LinkKeyInfo”信息保存在 STM32的闪存中,设备重新启动后,STM32程序将首先检查“LinkKeyInfo”是否保存在闪存中。 如果是、器件将 HID 模式设置为"主机"。 此时、器件将使用子例程"ConnectRemoteHIDDevice"自动连接保存的"LinkKeyInfo[index]。 BD_ADDR"、与 PC 系统(例如:Windows 7或 Windows 8(Ver:1083)或 Windows 8 (Ver:1093))所有设备均可正确连接。 但是、当我重新启动 PC 时、  此时 Windows 10 (版本1803 Creator)无法通过 HID 连接到 CC2564B、但是 Windows 10 (版本1903) 或 Windows 7可以通过 hid 连接到 cc2564b。

    分析 HCI 层的数据后、Windows 10 (版本1803创建者)无法通过 HID 连接到 cc2564b 的原因是计算机侧的 l2ca 通道无法正常打开

    我现在的想法是"再次"完成 L2CA_Connect_request、但" L2CA_Connect_request "连接_不知道如何编写它?

    主要问题是在 cc2564b 应用?的 hiddemo 中找不到事件"L2CA_Event_Callback"

    请提供源代码的这一方面?

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

    我们无法提供 BT 堆栈的源代码。 但是、让我看看我们的软件专家是否对未来发展有任何想法。

    此致、

    特拉维斯

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

    您好!

    HIDConnectRemoteDevice 会调用 HID_Connect_Remote_Device、然后 在内部调用 L2CA_Connect_Request。 遗憾的是、我们不会发布此源代码。 该演示仅具有 GAP 事件回调和 HID 事件回调。

    但是、我确实看到我们公开了 L2CAPAPI、您可以在 SDK 的 include 文件夹中找到该 API。 您好像调用 L2CA_Register_PSM 在 您的应用程序中注册您自己的 L2CA_Event_Callback。 请参阅随附的示例:

    e2e.ti.com/.../1256.L2CAP_5F00_CallbackSampleCode.c

    Jesu

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

    您好 Jesu:

        感谢你的答复。 根据上述答复,我的问题已得到解决。

        我现在遇到一个新问题。 当我的 CC2564器件连接到 PC 计算机时、当距离大于10米时、这两个器件通常无法通过 HID 发送数据。 此时、CC2564和 PC 之间的蓝牙连接仍处于连接状态。 现在、我将蓝牙距离保持在10米以上、并等待20多秒、然后两个设备的蓝牙断开连接。 要解决此问题,在两个设备之间建立蓝牙连接后,我使用“HCI_Write_Link_Supervision_Timeout”(BluetoothStackID、Connection_Handle、0x160和 status, Connect_Status);” LSTO 的监控时间已调整。 此程序返回的值为0、但断开连接时间仍然大约为20秒。 我的问题是如何缩短监控时间、以便在远距离通信失败时立即断开两个器件的蓝牙?

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

    我认为 HCI_Write_Link_Supervision_Timeout 是实现您在这里所需内容的正确命令。 是否尝试将其设置为0而不是0x160?  

    Jesu

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

    您好、Jesu:

          我。设置不同的 Link_Supervision_Timeout,值,并且两个设备的断开连接时间仍然大约为20秒,我尝试使用“HCI_Switch_Role”程序在主设备和从设备之间切换,但问题仍然存在。我现在应该更改什么? 感谢您的指导!

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

    嗯。 我不确定那么监控超时的问题是什么。 您是否介意捕获 FW 日志、以便我可以看到发生了什么情况?

    https://processors.wiki.ti.com/index.php/CC256x_Logger_User_Guide#Setting_up_the_Bluetooth_logger

    Jesu

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

    您好、Jesu:

         根据您的说法、我 已经捕获了数据。 整个过程分为三个部分:第一部分,打开 cc2564b 的设备,然后使用 PC 主动连接 cc2564b 的设备。 连接后、我关闭 cc2564b 的器件。 在第二部分中、我打开 cc2564b 的器件、 然后 cc2564b 的器件将自动连接到 PC。 在第三部分中、我将 PC 和 cc2564b 器件之间的距离设置为20m。 此时、两个器件无法正常通信。 此时、时间是下面的画面时间。

        CC2564B 控制台 UART 日志:  /cfs-file/__key/communityserver-discussions-components-files/538/8321.Console_5F00_USART-Log.txt

       CC2564B TXDebug 日志:       /cfs-file/__key/communityserver-discussions-components-files/538/CC2564B_5F00_TXDebug.zip

        通信不正常的时间点:

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

    您好、Jesu:

        在提供上述日志的基础上、我发现了另一个问题。 我使用"ret_val=HCI_Write_Link_Supervision_Timeout (BluetoothStackID、Connection_Handle、0x1000、&status、&Connect_Status);"来修改超时。 辅助函数的返回值为" 0 "、我不关心是否将"Link_Supervision_Timeout"调整为其他值、但我使用"Link_Supervision_Timeout"读取超时, 通过超时读取的值始终为"0x7000"。

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

    您好!

    感谢您发送 FW 日志。 我只看到1 HCI_Write_Link_Supervision_Timeout、并尝试将其设置为20秒(0x7d00)。  

    我在 FW 日志中看不到您的呼叫:

    RET_val = HCI_Write_Link_Supervision_Timeout (BluetoothStackID、Connection_Handle、0x1000、&status、&Connect_Status); 

    是否可以确保在发送此命令时捕获日志?

    根据上面的命令判断、您正在尝试将超时设置为2.56秒。 我附加了 BT 规范中的监控超时表以供参考。

    Jesu

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

    您好、Jesu:

        我已经解决了这个问题。 我发现在发送修改后的超时时间后、"statusresult"的返回值为"0x0c"。 通过求解此状态值、我成功修改了超时时间。