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.

[参考译文] TLV320ADC3101:仅使用 BCLK 录制音频

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/980478/tlv320adc3101-recording-audio-using-only-bclk

器件型号:TLV320ADC3101

您好!

我正在使用 TLV320ADC 和 ESP32录制音频。 录制的音频在噪声方面很好、但看起来信号是以低8倍的速率离散化- I2S 数据中的每个采样重复8次。

我的目标是22050Hz 的双通道16位音频;我已设置 I2S 连接、并连接 BCLK、WCLK 和数据(无 MCLK);

I2S 配置:

静态常量 I2S_CONFIG_t I2S_CONFIG ={
.MODE =(I2S_MODE_t)(I2S_MODE_MASTER | I2S_MODE_RX)、
.SAMPLE_RATE = SAMPLE_RATE、
.BISTS_PER_SAMPLE = I2S_BLE_SAMPLE_16BIT、
.CHANNEL = I2S_FMT_LEFT
、I2S_COMM_COMM_COMMON_COMM_COMMAND_COMMAND_B = LEVACATION = I2S_LEFT_COMMAND_COMMAND_COMMAND_B
intr_alloc_flags = 0、//默认中断优先级
.dma_buf_count = 32、
.dma_buf_len = 1024、
.use_apll = true、
.TX_desc_auto_clear = false、
.fixed_MCLK = 0
}; 

和 TLV 注册表设置:

tlv320_selectPage (0);

i2c_write_reg_BYTE (1、0x01);//重置
vTaskDelay (20 / portTIk_Period_MS);//提供20ms

i2c_write_reg_BYTE (4、0x05);// Clocl-gen 多路复用-使用通过 ESP I2S 发出的 BCLK 时钟

I2C_WRITE_REG_BYTE (5、0x11);//禁用 PLL

i2c_write_reg_BYTE (18、0x81);// NADC = 1、分频器加电
i2c_write_reg_BYTE (19、0x82);// mAdc = 2、分频器加电 i2c_write_reg_BYTE

(27、0x00

);

/ select_trl 1

(0x22);/ select_length (0x32);/ trl 1、ip_re_trl 1、ip_trl (0x32);/ self 1、ip_length (1) //左 PGA 的左侧 ADC 输入选择= IN1L (P)作为单端
i2c_write_reg_BYTE (55、0xFC);//右 PGA 的右侧 ADC 输入选择= IN1R (M)作为单端

i2c_write_reg_BYTE (59、0x00);//左侧模拟 PGA 选择= 0dB
idb_write_byte (0x2c

);// vc2c_reg_byte (0x2c);// tc2 (0x2c);tc2 (0xc2)

//为左侧 ADC 和右侧 ADC 加电
i2c_write_reg_Byte (82、0x00);//取消静音 

我尝试使用以下命令启用 tlv 的 PLL:P:1 R:8K:16 NADC:8mAdc:4 AOSR:128、但它没有产生任何有用的结果。

欢迎您提供任何帮助、让 TLV 以更好的质量进行记录。

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

    尊敬的乔治:

    您是否已对照我们的 PLL 计算器工具查看了当前的 PLL 设置?  也许有一些时钟优化。 您会确认您的 BCLK 频率吗?

    计算工具

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

    感谢您提供电子表格!

    我的 BCLK 为22050 (样本)* 2 (立体声)* 16 (位)= 0.7056MHz、我将其用作 PLL_CLKIN 和 CODEC _CLKIN

    按照数据表指南、我选择了 PLL 设置:P:1 R:8K:16 NADC:8mAdc:4 AOSR:128

    电子表格确认这些设置符合已知要求。 不过、我记录的样本大多为调零点。

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

    我一直在修改我的设置。 我在 ESP32和 TLV 之间添加了一个 MCLK 连接、时钟频率为5.6448MHz (是我的 BCLK 的8倍)。
    使用 P:1;R:1 J:16;NADC:1;mAdc:2;AOSR:128; 我获得了无噪声的高质量录音(迄今为止最好的录音);
    我无法理解以下几点:

    1. 我期望 ADC_FS 应该是705khz、但当 ADC 正常工作时、实际值是352.8KHz;每个通道是否有 ADC_FS? 这是有意义的、因为22050 * 16 (bit)= 352.8KHZ
    2. 如果我使用 NADC:2 mAdc:1 (nadc 1 mAdc 2)记录停止正常工作;我期望没有任何差异、我在数据表中没有找到任何解释

    在使其与 MCLK 配合使用后、我仅使用 BCLK 重试。
    最佳结果是使用:P:1;R:8 J:16;NADC:1;mAdc:2;AOSR:128; 然而、它的运行方式与我最初的非 PLL 版本一样-每个样本重复8次;

    我觉得我缺少一些关于选择正确设置的依赖关系知识。

    任何见解都很有帮助
    谢谢

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

    是否有关于如何在没有 MCLK 信号的情况下设置录制的建议?

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

    我仍然无法仅使用 BCLK 获得任何令人满意的结果。
    有人建议我的实施可能会有什么问题?

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

    您好、Georgi、

    感谢您在这里的耐心等待。 我一直在研究您的问题、我想强调几个重要事项:

    1) 1)器件支持的最大采样率仅为96kHz、因此352.8kHz 的配置(尤其是源时钟仅为705.6kHz)可能会产生意外结果、因为我们不测试或确保以该速率运行。

    2) 2) ADC_MOD_CLK 的最大值为6.5MHz、支持以96kHz 频率支持2个32位数据通道所需的6.144MHz 公共倍频。 以上显示方式将其设置为远高于其限制、因此可能再次出现意外行为。  

    3) 3)您的初始脚本显示 PLL 已禁用、但如果您想从 BCLK 运行器件、则需要使用 PLL。 您能否确认在启用 PLL 的情况下测试了您最初的22.05kHz 情况?

    4) 4) 22.05kHz 的采样率将要求您使用抽取滤波器 A、因此、如果您使用的是处理块1、则该值应适合/

    5) 5)每个处理块都有一个与之关联的特定指令计数、如表6所示。 PLL 计算器不包含此选择、但时钟图(图28)中显示了另一个限制、其中 mAdc x AOSR >=指令计数。 在上面的示例中、这是 NADC = 1和 mAdc = 2正常工作但反向不工作的原因、因为 PRB1的指令计数为188、AOSR 为128。

    6) 6)还要确认 ADC/DAC 采样率是 LRCK 频率、因此您希望它与预期的采样率匹配、而不是在2个通道中将其加倍。

    我希望这对您有所帮助!

    最棒的

    Zak

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

    Zak 感谢您的提示!

    是的、我正在启用 PLL

    它们是非常合乎逻辑的、正是我期望的 tlv 工作方式。 在我看来、ADC 的工作频率比我设置的频率低16倍、因此我将尝试测量来自 tlv 的 PLL 或其他时钟、然后发布我的结果和进度。

    最棒的
    格鲁吉亚语