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.

[参考译文] CC2564CSTBTBLESW:BLE 连接时音乐中断(LinkQuality 问题)

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1122249/cc2564cstbtblesw-music-breaking-when-ble-is-connected-linkquality-issue

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

尊敬的 TI:

项目的背景信息: 我们正在项目中使用 CC2564C+ STM32F4。 我们使用双模 BT 功能(BT+BLE)、也使用最新的5.1堆栈。

当我们一起使用 BT&BLE 时、我们将使用无辅助 HFP 和 A2DP 模式进行音乐和电话呼叫。

我们面临的问题:

连接 BLE 时、我们面临着一些手机音乐中断的问题。(主要在 Samsung 和 Google Pixel 手机上观察到)。

断开 BLE 或断开蓝牙并重新连接时、中断恢复。  

当问题发生时,我们在 LinkQualityMonitor 工具(由 TI 提供)中发现数据速率大幅下降。

TI 是否观察到此问题? 是否有任何解决方案?

此外,由于它受到带宽的影响,我想知道我们是否可以减少 BLE 带宽(通过控制 BLE 的连接间隔、事件大小等)。

以便我们可以增加 BT 的可用带宽。

谢谢!

Vishnu。

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

    您好 Vishnuprasad、

    问题可能是由于带宽限制、数据速率会下降。 您可以尝试按照 GAPAPI.h 文件中的建议调整连接间隔。 您可以参考 SPPLEDemo.c 中的 ConnectLEDevice 作为参考:

    /* Initialize the connection parameters.                 */
        ConnectionParameters.Connection_Interval_Min    = 50;
        ConnectionParameters.Connection_Interval_Max    = 200;
        ConnectionParameters.Minimum_Connection_Length  = 0;
        ConnectionParameters.Maximum_Connection_Length  = 10000;
        ConnectionParameters.Slave_Latency              = 0;
        ConnectionParameters.Supervision_Timeout        = 20000;

    谢谢、
    Jacob

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

    您好、Jacob、

    感谢您的回复。

    我们将对此进行检查并恢复。

    此致、

    Vishnu

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

    您好、Jacob、

    我们尝试按照您的建议更改连接参数。

    我们确认它正在更改 CI。 我们将 CI_MIN 保持为90、 将 CI_MAX 保持为150。

    不过、我们仍会遇到问题。  

    我随函附上我们在这里得到的详细信息。

    图1 (音乐断开时所连接的 PIC 是链路质量监测器。)

    图2 (当音乐正常工作时、所连接的 PIC 是链路质量监测器)

    在上述两种情况下、图1和图2的手机和 cc2564C 芯片组之间都存在 BR/EDR 和 BLE 连接。

    在图1中:蓝牙链接看起来不可见。  RX 数据速率约为23500范围

    在图2中: 我们可以看到 BT 和 BLE 链路。 RX 数据速率约为332000范围

    图3 (音乐中断部分-> BLE 已断开连接&音乐暂停-> 5秒后播放音乐)

    在图3中

    红色标记是音乐中断的部分。

    标记为蓝色的是我们从手机上断开 BLE 连接的地方(当 BLE 断开连接时,音乐仍然很糟糕)  

    要从不良情况中恢复、请断开 BLE 连接、然后暂停音乐、然后等待 A2DP 非活动事件(5s 后出现)。 然后再次播放音乐。

    如果我们未断开 BLE 连接、则暂停和播放音乐仍会出现问题。

    以绿色标记的是音乐开始播放的地方。 (此时未连接 BLE)。

    我将在  此处附加相关的.lgr 文件和.lQM 文件。

    您能看一下这些数据吗?

    此致、

    Vishnu

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

    您好、Jacob、

    未正确插入文件。  

    在这里、我将其作为 zip 文件夹附加。

    e2e.ti.com/.../BT_5F00_LOGS.zip

    此致、

    Vishnu

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

    您好 Vishnuprasad、

    我将查看日志。 也感谢您发布图片。  

    您使用的是什么 UART 波特率?

    谢谢、
    Jacob

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

    您好、Jacob、

    我们使用 的波特率为4079104L。

    谢谢、

    Vishnu

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

    您好,Vishnu,

    波特率末尾的"L"是指什么? 这是一个单元吗?

    CC2564C 的最大波特率为4Mbps、因此您的波特率不能超过此值。

    谢谢、
    Jacob  

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

    您好、Jacob、  

    在定义 宏时、L 显示它是 long int、这就是全部。  

    是的、它小于4Mbps。 我们现在使用该工具 已 有一年多了。 在该 UART 波特率上未观察到问题。  

    另一个信息: 与 Samsung 和 Google 像素电话配对时,我们会看到此问题的更多信息。 (例如:Google 像素4A、三星银河 A12等)

    此致、  

    Vishnu。  

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

    您好、Jacob、

    是否有更新?

    谢谢!

    Vishnu

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

    您好、Jacob、

    是否有此更新?

    谢谢。

    Vishnu

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

    嗨、Vishnu、

    我没有注意到您的日志中有任何异常。 但是、为了更好地调试此问题、最好采用能够捕获空中流量的监听器日志。 HCI/BT 固件日志未捕获所有蓝牙协议层、我可以在其中看到配置文件级通信。 您是否能够像这样记录日志?

    此外、不建议同时长时间保持 BLE、A2DP 和 HFP 连接。 您的连接越多、就越有可能出现性能问题。  

    BR、

    Jacob

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

    您好、Jacob、

    我们的应用需要同时连接到 BLE、A2DP 和 HFP。 因此没有选项。

    即使连接了 HFP 和 A2DP、任何一个都将在任何给定时间处于活动状态。  

    遗憾的是、我们无法访问监听器来收集空气日志。

     如果您查看链路质量监测数据、您可以看到数据速率下降。 是否有任何数据速率下降的线索? 在所有情况下、数据速率都可能会变低。

    此致、

    Vishnu

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

    您好,Vishnu,

    [引用 userid="447335" URL"~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1122249/cc2564cstbtblesw-music-breaking-when-ble-is-connected-linkquality-issue/4181847 #41847"]如果查看链路质量监测器数据,则可以看到数据速率下降。 是否有任何数据速率下降的线索? 在所有情况下、数据速率都可能会变低。[/quot]

    从您共享的链路质量监控器图片中、您的数据速率下降看起来与 BLE 连接相关。 在本例中、CC2564C 是中央设备还是外设(或两者)? 由于您正在管理与 HFP 的同步连接、与 A2DP 的异步连接和 BLE 连接、因此您的 BLE 连接间隔应根据应用确定。 为了优化性能、最好围绕音频流设计 BLE 连接

    此外、我建议将服务质量从"尽力"更改为"保证"。 当 ACL 连接被限制为"尽力"时、其他较高优先级的活动可能会导致吞吐量降低、从而导致音频断断续续。 要将 QoS 更改为"保证"、请使用 HCI_Flow_Specification HCIAPI.h 中的 API:

       /*! @brief The following function issues the HCI_Flow_Specification Command
        * to the Bluetooth Device that is associated with the Bluetooth
        * Protocol Stack specified by the BluetoothStackID parameter.
        * @param BluetoothStackID Unique identifier assigned to this
        * Bluetooth Protocol Stack via a call to BSC_Initialize
        * @param Connection_Handle Unique identifier for the connection
        * returned in the Connection Complete event associated with the
        * HCI_Create_Connection command.
        * @param Unused   Reserved for future use and shall be set to 0
        * and ignored by the receiver.
        * @param Flow_Direction Determines if the parameters refer to the
        * outgoing or incoming traffic of the ACL link.
        * @param Service_Type Indicates the level of service required.
        * @param Token_Rate  The average data rate with which the application
        * transmits data.
        * @param Token_Bucket_Size Specifies a limit on the 'burstiness'
        * with which the application may transmit data.
        * @param Peak_Bandwidth Limits how fast packets from applications
        * may be sent back-to-back.
        * @param Access_Latency The maximum acceptable delay of an L2CAP
        * packet to the air-interface.
        * @param StatusResult Returned HCI status code.
        * @return This function returns zero if successful, or a non-zero value if there
        * was an error.  If this function returns zero (success) then the
        * StatusResult variable will contain the Status Result returned from
        * the Bluetooth Device.
        * \note This function blocks until either a result is returned
        *          from the Bluetooth Device OR the function Times Out
        *          Waiting for a response from the Bluetooth Device.
        */
    BTPSAPI_DECLARATION int BTPSAPI HCI_Flow_Specification(unsigned int BluetoothStackID, Word_t Connection_Handle, Byte_t Unused, Byte_t Flow_Direction, Byte_t Service_Type, DWord_t Token_Rate, DWord_t Token_Bucket_Size, DWord_t Peak_Bandwidth, DWord_t Access_Latency, Byte_t *StatusResult);

    您可以参阅 A3DP 演示以了解如何更改连接优先级。  您应结合使用此命令 VS_Send_DDIP来设置"尽力"与"保证"的百分比。

    如果您可以在 HFP/A2DP 设置期间提供日志、也会有所帮助。 您提供的日志仅包含 LMP 流量、不包含 HCI 流量。 如果日志中包含具有 HCI 命令的音频配置文件设置(采用此格式)(BLE 广播示例)、将会有所帮助:

    BR、
    Jacob

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

    您好、Jacob、

    感谢您提供信息。

    在本例中、CC2564C 是中央设备还是外设(或两者)?

    它将同时充当这两个角色、但当问题发生时、它仅在外设角色上。

     由于您正在管理与 HFP 的同步连接、与 A2DP 的异步连接和 BLE 连接、因此您的 BLE 连接间隔应根据应用确定。 为了优化性能、最好围绕音频流设计 BLE 连接。

    您能否举例说明如何有效地做到这一点? 或者、您能否提供一些数据来说明如何处理该操作(确切值)。

     

    此外、我建议将服务质量从"尽力"更改为"保证"。

    我将添加我们在这里使用的配置。  

    #define FLOG_SPEC 标志(0)
    #define FLOAD_SPEC_FLOAD_DIRECTION (0x01)
    #define flow_spec_service_type_guaranted_(HCI_flow_specification;service_type_guanted_)
    #define flow_spec_service_type_BESTEFFORT (HCI_flow_specification;service_type_best)
    //#define FLOAD_SPEC_TOKEN_RATE (25000)
    #define FLOG_SPEC TOKEN_RATE (42000)
    //#define FLOAD_SPEC TOKEN_COUSE_SIZE (333)
    #define flow_spec_token_bucke_size (1008)
    //#define FLOAD_SPEC_PEAK 带宽(25000)
    #define FLOAD_SPEC 峰值带宽(45000)
    #define FLOAD_SPEC 访问延迟(13000)

    #define BEST _PRIESS_HIGH_PRIORITY (50)
    #define BEST 努力正常优先级(50)
    #define Ganted_HIGH_PRIORITY (90)
    #define Ganted_normal_priority (70)

    静态空 Change_connection_priority (int high_normal)


    byte_t Flags = flow_spec_FLAGS;
    byte_t Flow_Direction = flow_spec_flow_Direction;
    byte_t Service_Type = flow_spec_service_type_guaranted_;
    /*其余为 A2DP-*/的默认值
    dWORD_t Token_Rate = flow_spec_token_rate;
    dWORD_t Token_Bucke_size = flow_spec_token_bucke_size;
    dWORD_t Peak 带宽= flow_spec_peak_bandwidth;
    dWORD_t Access_Latency = flow_spec_access_latency;
    byte_t StatusResult;

    if (high_audio_connection_priority = high_normal){


      /*对于 A2DP 流式传输-将 ACL 设置为保证其90%的 ACL 超过扫描优先级*/
      HCI_Flow_Specification (BluetoothStackID、AUD_Connection_Handle、Flags、Flow_Direction、Service_Type、
      TOKEN_RATE、TOKEN_Bucke_size、Peak 带宽、Access_Latency、StatusResult);


      /*发送供应商 DDIP 命令,将 ACL 优先级高于扫描的优先级更改为90%*/  
      VS_Send_DDIP (BluetoothStackID、BEST _MUST_HIGH_PRIORITY、BLEASE_HIGH_PRIORITY);


     }否则{


       /*将优先级改回最佳努力=20%、保证=70%*/
       /*将 ACL 改回“尽力而为”*/
       service_Type = flow_spec_service_type_BESTEFFORT;
       HCI_Flow_Specification (BluetoothStackID、AUD_Connection_Handle、Flags、Flow_Direction、Service_Type、
       0、0、0、0xFFFFFFFF、STATUSResult);
       /*将优先级改回最佳努力=20%、保证=70%*/
       Vs_Send_DDIP (BluetoothStackID、BEST _MUST_NORMAL 优先级、BLEASE_NORMAL 优先级);
     }

    当 A2DP 启动时、我们将优先级更改为  HIGH_AUDIO_CONNECT_PRIORITY。

    在这里、我要在出现问题(音乐中断)时附加连接过程的日志。

    e2e.ti.com/.../Full-connection-Parameter_5F00_WhenMusicis-Breaking-.zip

    在这里、当问题不存在时、我将附加日志。   (音乐工作正常)

    e2e.ti.com/.../Full-connection_5F00_Parameter_5F00_When_5F00_MusicWorks.zip

    在这两种情况下、使用的电话都是 Samsung Galaxy A12。

    查看此日志是否有用。

    此致、

    Vishnu

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

    您好,Vishnu,

    这是您以前的配置吗? 我建议将 ACL 连接改为100%时间"保证"、而不是70%时间。

    最棒的
    Jacob

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

    您好、Jacob、

    是的、这是我们的配置、它适用于大多数电话、没有任何问题。 但有些手机、如三星 Galaxy、Google Pixel 等 我们经常观察这个问题。

    [引用 userid="456020" URL"~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1122249/cc2564cstbtblesw-music-breaking-when-ble-is-connected-linkquality-issue/4184089 #4184089")这是否是您以前的配置? 我建议将 ACL 连接更改为100%时间"保证"、而不是70%时间。[/引述]

    我按照您的建议尝试了以下参数。 不过、我还是重现了这个问题。

    我使用的参数是  

    此致、

    Vishnu

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

    您好、Jacob、

    请告诉我们我们还可以尝试解决此问题吗? 产品将在未来2-3周内交付给最终客户、我们确实需要在这之前找到解决方案。

    谢谢!

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

    您好、Sundararajan、

    如果您可以在音频初始化期间共享 HCI 日志、以便我可以查看为 A2DP 和 HFP 配置决定了哪些参数、数据包类型等、这对于我的调试过程非常有帮助。 您以前共享的日志具有固件和 LMP 日志、但没有 HCI 跟踪。

    谢谢、
    Jacob

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

    您好、Jacob、

    请查找我们使用 BT 记录器软件收集的附加日志。

    log_withot_MusicBreaking 问题。

    e2e.ti.com/.../Log_5F00_without_5F00_Music_5F00_Breaking.zip

    记录音乐中断问题。

    e2e.ti.com/.../Log_5F00_with_5F00_MusicBreaking_5F00_time_5F00_20_5F00_37.zip

      在日志中出现音乐中断问题。 最初、音乐工作正常、然后我断开连接并重新连接、然后我能够重现此问题。

    重新连接发生的时间是20:37:37。 我将随附该特定时间的屏幕截图、以便您可以在日志上进行跟踪。

    谢谢、

    Vishnu

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

    您好、Jacob、

    我也从 Samsung Phone 收集了 HCI 日志。 您可以使用 Wireshark 打开日志。

    e2e.ti.com/.../SamsungA12_5F00_MusicBreaking_5F00_Time21_5F00_12.zip

    问题发生在印度标准时间21:12。 您可以在这段时间内专注于日志。 看看这是否有用。 我们可以轻松地重现 BLE 连接问题。

    此致、

    Vishnu

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

    嗨、Vishnu、

    感谢 HCI 流量的附加日志。 即使在 Log_without_Music_Breaking.zip 文件中、我也会看到 BLE 连接间隔频繁。 是否可以尝试将连接间隔增加到更大的值? 类似如下:

    ConnectionParameters.Connection_Interval_Min    = 100;
    ConnectionParameters.Connection_Interval_Max    = 200;

    更大的连接间隔将使 A2DP 流能够持续更长时间、而无需重新建立 BLE 连接。 请告诉我这是否有帮助。

    谢谢、
    Jacob

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

    您好、Jacob、

    我尝试了您建议的相同参数。

    在该过程之后、它选择了连接间隔180。

    不过、我还是得到了这个问题。

    这似乎没有什么帮助。

    谢谢!

    Vishnu

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

    你(们)好雅各

    鉴于我们处于不同的时区、您能建议3-4件我们可以尝试的事情吗? 我不想浪费时间每天运行一次检查、然后确定我们仍然看到同样的问题。

    谢谢!

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

    您好、Sundararajan、

    我需要进一步考虑其他建议。 我明天将在这里回答。

    最棒的
    Jacob

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

    您好、Jacob、

    这些线程都没有意义。

    所有这些线程似乎都讨论了 PCM 时钟接口等、当我们使用 CC2564C 的辅助模式时、会出现这种情况。  

    当我们使用无辅助模式(数据通过 HCI 接口传输并在 STM32控制器上解码,我们在 TT 中已经提到)时,这些模式都不会对我们有所帮助。  

     从 HCI 日志和链路质量监测器中可以清楚地看到 BT 的带宽正在下降。 当我们处于最后阶段时、我们的音频路径上有足够的验证。  

    问题出在 CC2564C 缓冲或无线电 管理部分、我们对此没有明确的了解。

    对于某些特定的手机以及 BLE 出现时、问题似乎会更容易发生。 即使我们断开 BLE 连接、它也没有恢复。  

    请尝试使用我们拥有的数据。   

    此致、

    Vishnu

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

    您好、Jacob、

    对此进行了任何更新?

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

    您好、Jacob、

    只需再次更新即可。 这个问题对我们来说非常关键。 我们希望从这种情况中取得进展。  

    如果您仍然无法重现问题或无法获得任何线索、 我建议您只需尝试在 DualMode (BT+BLE)中设置系统、并连接一些 Samsung Galaxy 电话、然后尝试通过 A2DP 流式传输音乐。  请断开并重新连接 BT、然后尝试。 您应该能够重现此问题。  

    Vishnu

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

    您好,Vishnu,

    我们没有很好的参考来重现您的问题。 您是否能够在没有专有代码的情况下共享包含 BLE +(A2DP | HFP)的示例项目、我们可以在 STM32上重现您的问题?

    最棒的
    Jacob

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

    您好、Jacob、

    我在 e2e Messenger 中共享了一个示例项目。

    您可以尝试在您的设置中进行设置、如果您遇到任何问题、请告诉我。

    谢谢!