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.

[参考译文] WL1831MOD:PCM HSP 音频的 HCI 命令

Guru**** 2398195 points
Other Parts Discussed in Thread: WL1831MOD, WL1831

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1058978/wl1831mod-hci-commands-for-pcm-hsp-audio

器件型号:WL1831MOD
Thread 中讨论的其他器件: WL1831

我的系统在连接到 WL1831MOD 的 I2S 上提供双向 PCM 音频、需要使用第一个 HSP 将其路由到蓝牙耳机、最后使用 HFP 配置文件。 音频为8kHz、立体声、16位。

我能够配对和连接到耳机、并且能够通过 UART HCI - A2DP 和 HSP over HCI (在发出 VS HCI 命令(0xFE10)后)将音频流式传输到耳机。 但是、我需要从 I2S 接口而不是 HCI 接口获取音频。

我认为我已经在 WL1831中正确配置了编解码器(具有 VS HCI 0xFE06)并设置了同步连接(具有 HCI 0x0128)。 在这种情况下、我不使用0xFE06 -我需要 PCM 音频。 我能够在主机上的 btmon 中看到 AT+CKPD=200、AT+VGS 和 AT+VGM 命令、但耳机上没有主机音频、主机上没有耳机音频。 我可以看到 PCM_CLK、PCM_SYNC 和 PCM 数据流向 WL1831MOD (来自我的主机)、但绝不会看到来自 WL1831MOD (流向我的主机)的 PCM 数据。

我觉得这是 WL1831编解码器或同步连接的配置问题。 以下是两者的当前配置:  

hcitool -I hci0 cmd 0x3f 0x106 0x01 0x00 0x01 0x00 0x00 0x1f 0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x10 0x00 0x01 0x00 0x00 0x10 0x00 0x01 0x00 0x00 0x01 0x00 0x00 0x11 0x00 0x01 0x00 0x00 0x11 0x00 0x11 0x00 0x00 0x00 0x00 0x11 0x00 0x00

hcitool -I hci0 cmd 0x01 0x0028 0x01 0x00 0x40 0x1f 0x00 0x40 0x1f 0x00 0x00 0x0a 0x00 0x00 0x01 0x00 0x00 0x01 0x00

你可以帮帮我吗?

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

    您好 Mitch、

    我下周将在这里跟进。

    谢谢、
    Jacob

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

    你好、Jacob -

    谢谢。 期待您的跟进。

    Mitch

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

    你好、Jacob -

    对上述问题是否有任何建议?

    谢谢、-Mitch

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

    您好 Mitch、

    我将在今天晚些时候跟进。 顺便说一下、您是使用 BlueZ 堆栈、还是使用用于 Linux 的 BluetopiaPM 构建?  

    谢谢、
    Jacob

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

    谢谢、Jacob。

    我们目前正在使用 BlueZ 5.50、但如果有必要、可以考虑改用 Bluetopia。

    Mitch

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

    嗨、Mitch、

    您是否正在尝试为 I2S 跟随器配置 WL1831? 我将仔细检查您的命令、但我想确认。

    谢谢、
    Jacob  

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

    我需要在 I2S 总线上将 WL1831作为从器件。 我意识到0xFE06命令中的一些参数可能不太正确。 但是、我已经尝试过许多组合、并且在引脚60和58上分别存在 PCM_CLK 和 PCM_SYNC 时、从未在 BT 音频输出(引脚57)上看到过 WL1831输出数据。  请帮助我了解这只是参数问题、还是我完全缺少其他东西。
    谢谢、-Mitch

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

    您好 Mitch、

    在将 HCI 命令转换为 hcitool 格式之前、您能否提供此格式的 HCI 命令?  

    您传入的第三个参数似乎仅指定长度为1:

    [引用 userid="506708" URL"~/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum 1058978/wl1831mod-hci-commands-for -pcm-HSP-audio"]hcitool -I hci0 cmd 0x3f 0x106 0x01 0x00 0x00 0x00 0x1f 0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x10 0x00 0x01 0x00 0x00 0x10 0x00 0x01 0x00 0x00 0x00 0x01 0x00 0x11 0x00 0x01 0x00 0x11 0x00 0x11 0x00 0x00 0x00 0x00 0x00 0x00[/报价]

    此外、我找不到0x0128 HCI 同步连接命令。  是否正在尝试改用此命令?

    谢谢、
    Jacob

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

    我认为这是我发送给您的第一条命令在请求的格式中的样子:

    再说一次、我不确定参数是否正确。 我正在寻找一些指导。

    就 hcitool 命令中的第三个参数而言、基于  论坛中的此示例(https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/451013/why-is-sound-distorted-when-using-wl18xx-hfp-hsp-over-hci):)

    例如)
    #通过 HCI 而不是 PCM 路由 SCO 连接
    hcitool -i hci0 cmd 0x3f 0x210 0x01 0x00 0x00 0x00 0xFF >/dev/null

    它看起来不像 hcitool 命令需要长度参数。 我弄错了吗? 我找不到对0xFE10 (0x3f 0x210)命令(在该链接中提到)的引用、以了解它需要四个还是五个参数。 无论哪种方式 、命令中的第三个参数都是0x01、这毫无意义。 如果以下四个字节是参数、则应为0x04。

    关于0x0128命令... 我从 btmon 跟踪中获取了它。 从核心 v4.2规范的角度来看、我认为"01"是正确的-这是一个链路控制命令。 但是、我不确定命令中的参数是否正确、或者如果这是启动 WL1831在引脚57 (BT 音频输出)上发送接收到的耳机音频所必需的全部参数。

    请注意、我尝试通过手动发出0x0128命令来启动蓝牙协议栈之外的音频、因为我相信 Bluez 协议栈只会通过 HCI 接口发送/接收 SCO 音频、并且我需要 WL1831通过 I2S 接口发送/接收音频。

    问题...
    如果 WL1831设置为从模式、并且连接了蓝牙耳机、并且引脚60和58上有 PCM 时钟和 SYNC 信号、WL1831是否会将接收到的耳机音频数据放在引脚57上? 或者、是否还有其他要求? 特定于供应商的命令? 核心 BT 命令? 还是两者都有? 此外、我是否为8kHz、16位、双通道音频正确设置了 WL1831编解码器?

    再次感谢您的帮助。 Mitch

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

    您好 Mitch、

    总体而言、您的编解码器配置看起来非常好。 感谢您为我提供表格式。  我建议的唯一更改是使您的通道 OUT_edges 相互匹配、IN_edges 相互匹配。 例如、OUT_edges 可能都在下降、而 IN_edges 可能都在上升、具体取决于您的用例。  

    您是否 在 I2S 线路上看到任何数据?  

     我将在本周晚些时候跟进您的其他问题。

    谢谢、
    Jacob

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

    你好、Jacob -

    我将根据您的建议查看边缘方向。 关于 I2S 数据... 否 这是问题所在。 引脚57上未生成数据(BT_AUD_OUT)。 是否应该有我提供的条件和配置(请参阅我的上一篇文章和最后的问题)?

    谢谢、-Mitch

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

    您好 Mitch、

    [引用 userid="506708" URL"~/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum 1058978/wl1831mod-HCI-commands-for -PCM-HSP-AUDIO/3936355#3936355]]如果 WL1831设置为从模式并且连接了蓝牙耳机、并且引脚60和58上有 PCM 时钟和同步信号、接收到的音频数据是否会放到 WL1831引脚上? 或者、是否还有其他要求? 特定于供应商的命令? 核心 BT 命令? 还是两者都有? 此外、我是否为8kHz、16位、双通道音频正确设置了 WL1831编解码器?[/quot]

    如果已连接 PCM 信号(BT_AUD_IN、BT_AUD_OUT、BT_AUD_FSYNC、BT_AUD_CLK)、则应在 BT_AUD_OUT 引脚(引脚57)上看到输出。 您应该只需要用于启用 PCM 接口的 HCI_VS_Write_CODEC 配置(0xFD06)。

    您的 WL1831 PCM 接口是连接到 BlueZ Linux 主机 还是连接到外部音频编解码器?

    谢谢、
    Jacob

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

    你好、Jacob -

    BT_AUD_IN、BT_AUD_FSYNC 和 BT_AUD_CLK 上存在有源 PCM 信号。  WL1831 PCM 连接到 BlueZ Linux 主机、但 BlueZ 不知道 PCM 音频-它由蜂窝式调制解调器生成。 我正在尝试将蜂窝音频连接到 BT 连接的耳机。

    谢谢、-Mitch

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

    您好 Mitch、

    我将在本周稍后的时间跟进。

    谢谢、
    Jacob

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

    您好 Mitch、

    我从上面发送的图片中生成了 hcitool 命令。 除了长度规格为0x00而不是0x01外、它看起来几乎完全相同。 您可以尝试改用该值吗?

    [引用 userid="506708" URL"~/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum 1058978/wl1831mod-hci-commands-for -pcm-HSP-audio"]hcitool -I hci0 cmd 0x3f 0x106 0x01 0x00 0x00 0x00 0x1f 0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x10 0x00 0x01 0x00 0x00 0x10 0x00 0x01 0x00 0x00 0x00 0x01 0x00 0x11 0x00 0x01 0x00 0x11 0x00 0x11 0x00 0x00 0x00 0x00 0x00 0x00[/报价]

    转换后的 hcitool:

    hcitool cmd 0x3f 0x0106 0x00 0x01 0x40 0x1f 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x10 0x00 0x01 0x00 0x10 0x00 0x01 0x00 0x00 0x00 0x10 0x00 0x11 0x00 0x10 0x00 0x11 0x00 0x11 0x00 0x00 0x11 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

    如果这不能解决问题、您能否尝试将您的边沿配置为与编解码器相反?  确保 WL1831帧同步边沿使用的边沿与音频编解码器正在采样/置位的边沿相反。 如果音频编解码器在上升沿生效、则应使用 WL1831上的下降沿。  

    最后、如果这两种方法都不起作用、您能否尝试运行环回测试:

    尝试使用 您刚刚尝试过的相同的 Send_HCI_VS_Write_CODEC 配置命令、但将 PCM 方向更改为0x00 (主器件)。 这一点很重要、以便 WL1831器件驱动时钟。 接下来、 您能否立即运行 HCI_VS_SET_PCM_Loopback _Enable (0xFE28)命令以在器件上循环音频? 然后、您应该能够收听发送到器件的音频、或者使用 AUD_IN 和 AUD_OUT 引脚来确保音频不会损坏。 此测试不需要蓝牙连接、因为它是 PCM 接口的本地测试。

    如果您观察到噪音和/或数据损坏、则 PCM 配置是问题所在。 否则、这是蓝牙问题。

    谢谢、
    Jacob