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.

[参考译文] PCM3060:在数据上运行 DSP 时出现的问题

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1271501/pcm3060-issues-running-dsp-on-data

器件型号:PCM3060

您好!

我是音频编解码器和 DSP 领域的新手、我已经能够借助简单的板载微控制器 ADC/DAC 实现这一目标。 我正在尝试在新设计上使用 PCM3060、我能够毫无问题地传递信号。 PCM3060被配置为完全将右侧通道(ADC 和 DAC)静音、并以单端模式运行 DAC。 它在 STM32微控制器中使用标准24位 I2S 数据模式。 我使用的控制器不提供全双工 I2S、因此我使用两个设置相同的不同 I2S 通道:48kHz I2S PHILLIPS。 一个是主器件发送、另一个是主器件接收。 我知道这不是建议的设置、但它可以使用正弦波。  

我用于解释数据的函数如下:

float AUDIO_STREAM:::convert_input_audio_signal (int32_t val){

VAL >>=8

返回(float) val / 8388608

int32_t AUDIO_STREAM:::convert_output_audio_signal (float val){

VAL *= 8388608

int32_t int_val =(int32_t) val

返回(int_val << 8)& 0xFFFFFF00

我已经试过很多东西、这只是当前状态-但是简单的削波功能(下面)根本无法正常工作。

if (val > thresh) val = thresh;  

if (val <-thresh) val =-thresh;

通过使用调试器和简单的幅度函数、我似乎获得了预期范围(-8388608至8388608 )内的数据。  

我的问题 是、还有什么可能导致这种情况? 有人知道为什么会这样吗? 我应该如何在有符号24位数据范围中获得合适的值? 我添加了示波器图片、一个是不使用 DSP 的直通正弦波、另一个具有削波功能。 黄色表示~100Hz 正弦波(~1Vp)、蓝色表示输出。  我已尝试通过 PCM 寄存器和代码中反转数据。 我已经尝试运行我发现的其他简单算法、无论我怎么做、输出看起来都非常失真。  

非常感谢有关此主题的任何帮助! 到目前为止、浏览在线论坛尚未提供任何解决方案。   谢谢!

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

    您好!

    1.您是否正在使用以下设备文件夹中的 Linux 驱动程序?

    https://www.ti.com/product/PCM3060

    2.您对 PCM3060的配置如何,即器件寄存器设置?

    3.检查您的音频串行接口时钟,例如 lclk、bclk、data,它们是否符合您设置的格式?

    此致。