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.

[参考译文] CC2564MODA:蓝牙列表测试失败

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/886401/cc2564moda-bluetooth-listing-test-fails

器件型号:CC2564MODA

您好!

客户使用具有适用于 Tiva 的蓝皮协议栈1.2R 的 CC2564MODA。
http://www.ti.com/tool/CC256XM4BTBLESW

它们处于蓝牙列表的最后阶段、但以下两种格式的测试失败。
A2DP/SNK/CC/BV-01-1

A2DP/SNK/CC/BV-02-1.


他们的软件基于我们 SDK 中的 A2DP 演示。
我想我们的软件应该能够顺利通过这些测试。
故障的潜在原因是什么?
这是客户的停产问题。

谢谢、此致、
田志郎一郎

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

    一郎

    这似乎与我们在一个月前处理的 A2DP 问题有关。 您能否提供有关我们如何通过这些测试的更多详细信息?

    此外、这里的测试标准是什么? 它说"SNK 可以通过扬声器以可接受的质量播放"。 这是我们失败的吗? 音频质量是否差?

    BR、

    Vince  

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

    尊敬的 Vince:

    很抱歉耽误你的时间。 我询问故障标准等的详细信息、并等待客户的回答。

    同时、您能否确认我们 SDK 中的原始 A2DP 演示是否支持这些格式而不会出现任何问题?

    谢谢、此致、
    田志郎一郎

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

    您好、Koichiro、

    我看不到我们无法在 Tiva 上使用的任何设置。 请记住、对于仿真的 I2S、您需要创建 X 和 Y 值、以便在所有位速率(单声道/立体声、44.1/48kHz)之间切换频率

    BR、

    Vince  

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

    尊敬的 Vince:

    很抱歉耽误你的时间。
    客户尚未从其测试机构获得详细的故障原因。
    因此、他们希望自己尝试这两种格式。
    您是否知道有任何工具(PC、智能手机等)可用于生成此类 SBC 格式?

    谢谢、此致、
    田志郎一郎

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

    尊敬的 Vince:

    我有客户提供的其他信息。
    试验室说:
    -播放正常音频格式没有问题
    -这些失败的格式(在我的第一个帖子中附带)与正常音频格式不同,不播放音乐。

    我在 SDK 中查看了 Bluetopia 子频带编解码器 API 文档(SubbandCodecAPI.pdf)、并确认 SBC_Decode_Data API 支持所有参数。
    但我不确定 A2DPDemo 示例代码中是否支持所有参数。
    我可以在 A2DPDemo.c 中找到以下配置。 代码似乎指定了采样率、通道模式和解码格式(SBC)。

    静态 AUD_Stream_Format_t AudioSNKSupportedFormats[]=
    {
    {44100、2、0}、
    {48000、2、 0}、
    {48000、1、0}、
    {44100、 1、0}
    }; 


    在哪里可以找到代码指定子频段、分配方法和块大小?
    A2DPDemo 是否支持这两种格式?

    谢谢、此致、
    田志郎一郎

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

    尊敬的 Vince:

    问题是由根导致的。

    无论 SBC 格式如何、A2DPDemo 代码都会将音频样本数指定为128。
    在 AudioDecoder.c 中:

    /*以下定义为
    每个 SBC 帧生成的*//*音频样本数。*/
    #define NUM_AUDIO_SAMESS_PER_SBC_FRAME128
    


    但对于某些 SBC 格式、音频样本数为64。 代码从这里的 while 循环退出。
    在 AudioDecoder.c、Decode()函数中:

    /*确保有足够的空间容纳
    来自单个 SBC 帧的样本*/*。//
    if (DecodedData.ChannelDataSize < NUM_AUDIO_SABLE_PER_SBC_FRAME){
    break;
    }
    


    为了实现正确操作、必须根据解码的 SBC 格式(64或128)调整 NUM_AUDIO_SAMLES_PER_SBC_FRAME。

    我知道 Bluetopia 符合 QDID42849标准、并且支持所有 SBC 格式。
    客户抱怨 A2DPDemo 本身不支持所有 SBC 格式。
    Bluetopia 是否有任何原因无法提供他们获得 QDID 的确切代码?

    谢谢、此致、
    田志郎一郎

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

    我认为 QDID 非常陈旧、不是直接来自 TI。  A2DPdemo 是、只有一个演示、我们 不知道 Stonestreet One 使用了什么软件来获得 QDID。 调整帧大小后、客户是否能够传递?

    此致、

    特拉维斯

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

    您好、Travis、

    客户希望获取 Stonestreet 使用的确切代码。
    您可以让他们提供代码吗?

    >调整帧大小后,客户是否能够通过?

    还不是。 稍后会尝试。

    谢谢、此致、
    田志郎一郎

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

    您能否确认这是 A2DP 还是 A3DP?

    此外、配置文件可能不支持其 ICS 产品 测试计划测试的所有 SBC 格式。  他们是否再次将 IC 与我们的 QDID 中的 IC 进行了比较?  首先检查这一点很重要。

    我与我们的第三方 Cloud2gnd 进行了交谈、后者支持 Bluetopia 栈和配置文件自定义等、他们认为演示代码是用于获得认证的代码、并希望查看是否有其他演示版本可用。

    此致、

    特拉维斯

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

    您好、Travis、

    这适用于 A2DP

    我在 SIG 网站(Launch Studio)中仔细检查了 QDID42849 ICS 详细信息。
    以下是页面中的快照。
    如上表所示、支持所有编解码器特性(通道模式、块长度、子频带和分配)。




    谢谢、此致、
    田志郎一郎

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

    Tashiro-san、

    我曾与 Cld2gnd 讨论过、Stonestreet One 用于认证的确切演示代码并不明显。  他们回顾了该主题、可能没有足够的信息来得出问题的根本原因、但建议是查看故障案例、或许可以指定更大的缓冲区大小、或者可以使用大小可变的 NUM_AUDIO_SAMLE_PER_SBC_FRAME 来解决此问题。 如果客户无法解决问题、他们可以联系 Cld2gnd 并与他们签订合同来解决问题。

    客户是否进行了任何其他测试?

    谢谢、

    特拉维斯

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

    您好、Travis、

    感谢您与 Cld2gnd 合作。
    我不知道为什么他们无法根据此主题提供的信息得出问题的根本原因。

    代码在此中断、因为 DecodedData.ChannelDataSize 保持为64、NUM_AUDIO_SAMESS_PER_SBC_FRAME 为128。
    (以下所有代码均位于 AudioDecoder.c 中)

    /*确保有足够的空间容纳
    来自单个 SBC 帧的样本*/*。//
    if (DecodedData.ChannelDataSize < NUM_AUDIO_SABLE_PER_SBC_FRAME){
    break;
    } 


    DecodedData.ChannelDataSize 计算如下

    //计算音频样本的可用空间量。
    if (PlaybackContext.OutIndex > PlaybackContext.InIndex){
    DecodedData.ChannelDataSize =(unsigned int)(PlaybackContext.OutIndex - PlaybackContext.InIndex);
    } 否则{
    DecodedData.ChannelDataSize =(unsigned int)(audio_buffer_size - PlaybackContext.InIndex);
    }
    



    和 PlaybackContext.InIndex 在此处更新

    //调整刚才添加的音频样本的索引。
    PlaybackContext.InIndex += DecodedData.LeftChannelDataLength;
    

    大多数 SBC 格式的 DecodedData.LeftChannelDataLength 为128、这就是 NUM_AUDIO_SAMESS_PER_SBC_FRAME 默认为128的原因。
    但是、对于这些失败的 SBC 参数、DecodedData.LeftChannelDataLength 为64、而不是128。
    这使得 DecodedData.ChannelDataSize=64的末尾、因为 AUDIO_Buffer_size 是128 * 8。
    更正确的是、解码15个 SBC 帧后、剩余 DecodedData.ChannelDataSize 为64。
    (128 * 8)–(64 * 15)= 64

    /*每个 SBC 帧将生成128个左侧样本和128个右侧样本。 //
    //*设置缓冲区以容纳8个解码的 SBC 帧。*/
    #define AUDIO_buffer_size(128 * 8)
    



    谢谢、此致、
    田志郎一郎

     

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

    您好、Koichiro、

    我认为、只有当您的音频缓冲器与 NUM_AUDIO_SABLE_PER_SBC_FRAME 的倍数绑定、并且您正在执行更多的缓冲器动态内存分配时、此检查才有效。 由于缓冲区硬编码为128 * 8、并且在编译时创建、因此该检查失去了一些意义。  

    由于缓冲区已经考虑了128的最大大小、因此我认为最简单的更改就是取消检查。  

    我的理解是、您已经完成了这项工作、该示例现在正在工作、因此应该可以解决这个问题。  

    BR、

    Vince