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.

[参考译文] CC2564C:CC2564C 与 Android 8集成

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1335241/cc2564c-cc2564c-integration-with-android-8

器件型号:CC2564C
主题中讨论的其他器件: WL1831

您好、我们正在尝试将旧的 BT 控制器 WL1831替换为 CC2564C、此电路板基于运行 Android 8.0的 Jacinto。 您是否有可以帮助我们完成此任务的集成指南?

提前感谢。

马里亚诺

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

    尊敬的 Mariano:

    很遗憾、CC2564c 不支持 Android。 受支持的唯一堆栈是 TI 提供的 Bluetopia 堆栈。

    此致!

    罗格利奥

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

    Rogelio、您好、感谢您的快速响应。 好的、我明白你的观点了。 我们正在进行替换、我们几乎集成了所有功能、但进行了 WB 调用。 让我来问你几件事,看看,除了没有官方支持 Android 的事实,我们是否可以实现一个有效的集成。

    当前的情况是、氟化物堆栈要求我们通过添加

    SEND_HCI_VS_LE_Enable 0xFD5B、0x01、0x01

    命令执行此操作(如果我们不添加、堆栈初始化会失败、并且会卡在.bts 加载和初始化循环中)。 另一方面、根据我们在控制器数据表中看到的内容、为了使用 WBS (16ksps 调用)、必须禁用 BLE、因为协处理器在多个任务之间共享、并且 BLE 和 WBS 可以同时使用。

    我知道我们应该在运行时检测 WB 调用时执行此操作。 此假设是否正确?

    在检测调用时、API (如果存在)能够发送此命令的对象是什么?

    有没有其他方法支持16ksps 调用?

    我们将感谢您提供任何帮助。

    此致

    马里亚诺

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

    尊敬的 Mariano:

    首先、我们祝贺您移植到 Android。 出于好奇、您是否创建了自己的 HAL 来与 HIDL 连接?

    很遗憾、我不熟悉 Flouride 堆栈及其 API。 不过,我同意你的做法是最合理的。 我假设必须有一个 API、才能使用 Flouride 发送特定于供应商的命令、您可以在需要时使用该命令来禁用 BLE。 我建议您创建与将在所运行的任何配置文件中使用 WBS 的设备的连接、以禁用 BLE。 BLE 和 NBS (8kHz)并非总是可行的

    此致、

    罗格利奥

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

    你好,罗格利奥

    好的、我们将探索这条路径。

    我们基本上修改了用于 WiLink 的代码、引入了一些微小的更改、除了 WB 调用之外、几乎所有代码都运行得很顺利。

    当我们通过 WB 进行通信时、呼叫不会转接到链接到芯片的手机、而是直接在2个电话之间建立、并且芯片的 I2S 线路上没有任何活动(我们使用 CC2564C 在该总线上具有主设备)。 如果在接到呼叫时已启用 BLE、这会是预期行为吗?

    谢谢!

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

    尊敬的 Mariano:

    是的、由于协处理器将不 发送正确的 I2S 信号、预计此运行方式。

    这是一个可在数据表中找到的图表。

    左侧为 NBS、右侧为 WBS

    另外、下面是在模式之间切换时的正确顺序。

    • 从 BLE 切换到 AVPR
      1. 发送 HCI_VS_LE_Enable 0xFD5B、0x00、0x00
      2. 下载(所有命令) initscripts-TIInit_6.12.26_avpr_add-on.bts
      3. 从主机堆栈启动 WBS 调用或辅助 A2DP。
    • 从 AVPR 切换到 BLE
      1. 发送 HCI_VS_AVPR_Enable 0xFD92、0x00、0x00、0x00、0x0000
      2. 下载(所有命令) initscripts-TIInit_6.12.26_Ble_add-on.bts
      3. 从主机堆栈启动 BLE 活动。

    因此、当您希望通过 WBS 连接至器件并禁用 BLE 时、必须在您的堆栈上运行此序列。

    此致!

    罗格利奥

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

    再次尊敬的 Rogelio、非常感谢您的答复。 最后、我们能够通过在应答/发出此呼叫时按需发送命令来支持宽带调用(验证 WS 时钟已切换为16kHz)。

    请允许我再问一个问题。 我们根本不使用 BLE、在早期阶段为 WBS 发送一组命令(包括启用 AVPR)并在我们的产品运行时不恢复该配置是否合理? 我们之所以考虑这一点、是因为它可以避免在每次调用中发送命令。 从我们测试的结果来看,我们没有发现这种方法有问题,即使最终配对的 MD 仅支持 NB,但我们不知道是否有任何情况会导致问题。

    再次感谢您的参与!

    Br

    马里亚诺

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

    尊敬的 Mariano:

    如果您根本不需要使用 BLE、那么这将是最佳解决方案、并且不应该在仅支持 NB 而不支持 WB 的呼叫之间存在任何问题。

    这样我就可以更熟悉 Android 轻载堆栈。 为什么它需要进行初始化?

    此致!

    罗格利奥

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

    您好、Rogelio、很抱歉我的回答延迟了。

    好的、我们将尝试这种方法。

    我们观察到了另外一种行为、我想问您。 在我们禁用 BLE 以支持 WB 调用时、我们会根据随附的应用手册(顺便说一下、我询问您此文档是否有特定于 cc2564c 的不同版本)向控制器发送以下命令序列。

    HCI_VS_AVPR_Enable 0xFD92、0x01、0x00、0x01、0x0000
    HCI_VS_BLE_Enable 0xFD5B、0、0
    HCI_VS_Write_CODEC_Config 0xFD06,3072、0x00,16000、0x0001、 1、0x00、0x00、16、1、 0x01、16、1、0x00、0x00、 16、17、0x01、16、17、 0x00、0x00
    HCI_HCI_0x0063 Write_Voice_Setting
    HCI_FD78 Vs_Wbs_Associate、0x1
    HCI_N38 1、0x1f40、0x1f40、0xE、0x0063、Setup_Synchronous_Connection 0x02、0x03C8


    这些命令具有所需的效果、但尽管如此、在分析控制器的响应后、我们看到 HCI_VS_BLE_Enable 命令以0x0C 进行响应、相当于禁用命令。 您是否知道我们收到该回复的原因?

    关于您关于堆栈和启用 BLE 的需求的问题、我实际上没有正确地表达自己。 当 AOSP 尝试调用一些需要 BLE 支持的方法时、由于在堆栈中完成的验证失败、因此会发生崩溃。 这不是堆栈本身的问题、而是集成的问题。

    再次感谢我们的导游支持

    Br

    马里亚诺

    e2e.ti.com/.../3617.CC256x-Advanced-Voice-and-Audio-Features-_2D00_-Texas-Instruments-Wiki.pdf

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

    尊敬的 Mariano:

    命令具有所需的效果,但通过分析控制器的响应,我们发现 HCI_VS_BLE_Enable 命令以0x0C 响应,相当于禁用命令。 您是否知道我们收到该回复的原因?
    [/报价]

    我会尝试在启用 AVPR 之前禁用 BLE。

    (顺便问一下,我是否有本文档特定于 cc2564c 的不同版本)。

    我相信很多此类信息已写入数据表。 第6.4.4节

    https://www.ti.com/lit/ds/symlink/cc2564c.pdf 

    还有这份 VS 命令指南、

    https://www.ti.com/lit/an/swra751/swra751.pdf 

    这将解释每条 VS 命令的参数。

    关于堆栈和是否需要启用 BLE 的问题,我实际上没有正确地表达自己。 当 AOSP 尝试调用一些需要 BLE 支持的方法时、由于在堆栈中完成的验证失败、因此会发生崩溃。 这不是堆栈本身的问题,而是集成的问题。

    我明白了、您能否向我发送在 AOSP 中完成的必要更改、以使器件运行? 我已经有很多关于如何开始的问题、这可以帮助回答这些问题。

    此致、

    罗格利奥

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

    您好:Rogelio、

    您建议交换 HCI_VS_BLE_Enable 和 HCI_VS_AVPR_Enable 命令的发送顺序后可行。 进行该更改后、对这两条命令的响应为 HCI_SUCCESS (0x00)、这是预期值。

    我之前没有注意到另外一件事、那就是显然我们没有收到任何有关发送 Setup_Synchronous_Connection 命令的响应。 我们的命令由以下数据构成:

    命令操作码: 0x0428

    连接句柄: 0x0001 (2字节)

    发送带宽:0x00001F40 (4字节)

    接收带宽: 0x00001F40 (4字节)

    最大延迟:            0x000E (2字节)

    语音设置:           0x0063 (2字节)

    重新传输力度:     0x0002 (2字节)

    数据包类型:             0x03C8 (2字节)

    问题是、此命令是否也应该发送成功(或任何其他响应)? 引起我们注意的是、 HCI 测试仪 ,我们看不到与此命令关联的 Command_Complete_Event (与它们的其余部分相同)。 此命令不会出现在 cc2564c 文档中、因为它不是 VS 命令、而是标准 HCI 命令、 在我们在网上搜索的文档中,我们找不到任何关于发送这个命令后应该得到什么响应的线索(如果可以得到任何响应的话)。 您是否有关于预期行为的一些信息?

    再次感谢您的支持。

    Br

    马里亚诺

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

    您好、Mariano:

    这是预期行为无法获得 HCI_COMMAND_COMPLETE_EVENT。  但是、您应该会收到 Synchronous_Connection_Complete

    请参阅第858页的蓝牙核心规范(5.1)。

    您可以从 BTSig 网站下载核心规范。 您应该能够在其中找到所有标准命令定义和参数。

    此致!

    罗格利奥

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

    完美的 Rogelio,非常感谢!

    关于 HCI_VS_WBS_Associate 和 HCI_HCI_Disconnect Setup_Synchronous_Connection 命令及 HCI_VS_WBS_Disassociate 命令、您认为有必要对每个呼叫执行关联和解除关联、还是可以执行一次、并且只要 HFP 未断开、就可以重复使用?

    Br

    马里亚诺