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.

[参考译文] Starterware/TM4C123GH6PZ:双 SPI I2S 仿真软件 spma042b 的声音问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/583543/starterware-tm4c123gh6pz-sound-problem-with-dual-spi-i2s-simulation-software-spma042b

器件型号:TM4C123GH6PZ
主题中讨论的其他器件:DIT4096PCM3060

工具/软件:Starterware

大家好、

我在 Tiva C 上实现了软件示例 SPMA042b、到目前为止、我可以播放 SD 卡中的文件、但输出音质很粗糙... 听起来像是一个旧的乙烯基光盘。

我尝试了使用 PCM3060作为电源的放大器、声音非常完美、因此我认为放大器和连接都可以。 I2S BLCK 和 LRCLK 由 DIT4096生成。 MLCK 是一款12、288MHz 振荡器、也为 Tiva C XIN 引脚供电。 音频文件具有48kHz 采样率和16位。 内核以80MHz 运行,因此我将 SoundPlayContinue()调用时间线性更改为示例中的时间。

我尝试更改 SPI 模式和频率,从 I2S 到左对齐的声音格式尝试了不同的位数和中断时间, SoundPlayContinue()被调用,但没有什么帮助。 我还禁用了任何其他功能、以便 MCU 在两次调用之间自由运行。

是否有人遇到了同样的问题或一些可能是问题的提示?

谢谢 Alex

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否获得了正确的声音、但有噼啪声和划痕、或者您是否仅听到噪音? 如果是第一种情况、您是否有显示 CPU 负载的 I/O 引脚? 您可能需要增加计时器中断的频率、以防止 SPI FIFO 变空。 (我不确定为什么他们使用计时器中断来检查 FIFO 缓冲区。 使用 FIFO 半满/空中断更有意义。)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Bob:

    感谢你的帮助。

    我得到正确的声音、但有划痕。 否、我没有检查 CPU 负载、但我让播放器以无限循环运行、因此 CPU 不执行任何其他操作。 如果这不起作用、我被拧紧、因为我既不能将 CPU 时钟设置为大于80MHz、也不能在播放运行时执行任何操作。

    在我看来、计时器呼叫仅检查主音频缓冲器是否为空、而不是补充或不执行任何操作。 我尝试将计时器频率增加到比原始值高100倍以上、但音频输出没有变化。

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

    感受您的疼痛。 您是否曾尝试测量和/或描述这些"划痕?" 也许-如果他们"定期重复"、这可能会指向他们的来源-或者允许您采取一些适当的滤波器/信号限制措施。

    与往常一样-"单板异常"是可能的-在其他板上重复此测试。

    电源"接近其限值"也可能会导致/产生影响(我会重新测试-使用"最干净、明显过额可用的电源"。)

    供应商的 Bob 提供了"FIFO"详细信息-也许您可以尝试(故意)违反/破坏该 FIFO -并注意"如何-甚至是如何-影响该暂存。"

    通常、确定/I "发现"、"能够导致故障"(即按需故障!) 证明了它在根除方面的宝贵价值!

    使用多通道示波器来"检查所有可能与"临时事件"相关的内容通常是明智的。   请勿忽略搜索"其他/外部噪声/电源事件"、因为这些事件可能会引起划痕-以及...

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

    我播放了频率从20Hz 到20kHz 的正弦测试文件、看起来较低频率时出现的划痕更类似、而其他的则是一些没有噪声的范围。 在较高的频率范围内、噪声也更高、在我看来、它们是来自主频率的一些基本波形。  结论:失真似乎随主频率增加而增加的频率、而频率响应也取决于主频率。

    是否可以上载声音文件?

    PCM3060位于同一电路板上、因此相同的电源连接和放大器可提供清晰的声音、但 Tiva 的 I2S 输出无法提供清晰的声音。

    如何操作 FIFO? DMA 将数据从缓冲区复制到 FIFO 中、因此我无法操作数据。

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

    您对以下方面保持沉默:

    • 在(其他)电路板上重复测试
    • 与"划痕"相关的任何测量数据(理想情况下为示波器迹线)
    • 您的3V3和5V0电源是否足够(两者都有)

    您的(必须)是定制 PCB -(任何) 24位器件(描述 PCM3060)需要熟练/周到的电路板布局。  此外、PCM3060手册的第40页详细介绍了3个示例原理图、其中大部分说明了高通滤波器和低通滤波器、这将减少(或消除)您注意到的问题。   您是否遵循/实施了这些原理图中的任何一个?   (非常)特别说明-显示了400Hz (外部)高通滤波器-您是否在 PCB 实现中包含了该滤波器?

    在(非常)快速扫描该器件的规格中-我注意到-现在 引用-(来自图27、Pg22:)

    "在未定义的数据期间、它可能会在音频信号中产生一些噪声。   此外、将正常数据转换为未定义数据以及将未定义或零数据转换为正常数据会导致模拟和数字输出上的数据不连续性、 这可能会在音频信号中产生一些噪声。"   ***这是最能说明问题的-不是吗?  (似乎解释了(一些)噪声生成-至少需要调查...)

    下面是信号时序图、它进一步详细说明并清楚地说明了:

    我们还不知道您是否成为这些"未定义数据"时隙的受害者-这(可能)是供应商的 Bob (早期)在 SPI FIFO 的 MCU (未完成填充)中提到的问题。

    您对"ADC DOUT"和"DAC Vout"的范围监控是否有助于确定您的"划痕"是否与"未定义数据"时隙重叠?

    此外、器件的49页手册中还有其他内容-有一个"高通滤波器"("HPF"软件控制)、默认为"关闭!"  (在第29页、表3上找到) 您注意到并订购了 HPF "on"、您没有?

    深入了解 MCU 的 SPI FIFO 是供应商支持的领域-我的技能/才能(如果有)以通用/基于逻辑的"技术问题识别和纠正"为中心。

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

    HEI CB1_MOBILE

    感谢您的帮助、但 PCM3060不是问题所在。 它是电路板上工作的 I2S 源。 我的 Tiva 输出有问题。

    我使用的放大器是 ST 的 STA326、它可能会对某人有所帮助。

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

    [引用用户="Alexander Ahrens"] PCM3060 不是问题。

    不确定您为什么会这样回答-我对编解码器时序图的演示突出显示了那些使编解码器"易受噪声影响"的"时隙"。  我在任何设备上都没有"指责"、而是提供了一种方法来获得更深刻的见解...  

    您是否没有任务监控这2条编解码器信号线("ADC DOUT"和"DAC Vout")并确定 MCU 是否"符合"编解码器的规格?   这似乎是一项有用的工作-并且(似乎)被绕过...