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.

[参考译文] TLV320ADC3140:TLV320ADC3140不能在带有 Linux 内核6.1的 AM62上录制音频

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1480116/tlv320adc3140-tlv320adc3140-not-recording-audio-on-am62-with-linux-kernel-6-1

器件型号:TLV320ADC3140

工具与软件:

您好!

我在 TI AM62处理器上使用 TLV320ADC3140编解码器录制音频时遇到问题。 尽管我配置了器件树并调整了增益设置、但仍然无法捕获任何音频。 VU 仪表保持在0%、记录的 WAV 文件包含平坦数据。

设置:

-设备树配置:

          sound {
                compatible = "simple-audio-card";
                simple-audio-card,bitclock-slave = <&codec_dai>;
                simple-audio-card,format = "i2s";
                simple-audio-card,frame-slave = <&codec_dai>;
                simple-audio-card,mclk-fs = <256>;
        //      simple-audio-card,name = "adau7118";
                simple-audio-card,name = "TLV320ADC3140";

                simple-audio-card,widgets =
                        "Microphone", "Mic1",
                        "Microphone", "Mic2",
                        "Microphone", "Mic3",
                        "Microphone", "Mic4";
                simple-audio-card,routing =
                        "MIC1P", "Mic1",
                        "MIC2P", "Mic2",
                        "MIC3P", "Mic3",
                        "MIC4P", "Mic4";

      codec_dai: simple-audio-card,codec {
          sound-dai = ; // Link to TLV320ADC3140 node
      };

      cpu_dai: simple-audio-card,cpu {
          sound-dai = ; // I2S interface
          dai-tdm-slot-num = ; // Number of TDM slots (adjust as needed)
          dai-tdm-slot-width = ; // Width of each TDM slot
      };
  };

内核版本:  6.1.
处理器:TI AM62

**问题:**

-`arecord`命令生成 WAV 文件,但它不包含音频数据(平线),文件大小增加。
-声量计在记录期间保持在0%。
-使用`amixer`调整增益设置不能解决问题。
-我们探测了 I2S 线路,我们没有在该线路上看到任何东西。

**使用的命令:**
arecord -D HW:0、0 -V mono -c 2 -f S16_LE -r 48000 -t wav mic.wav
```μ A

其他信息:

-编解码器被`arecord -l`检测。
- I2C 通信正在工作,由`i2cdump`确认。

下面是 i2cdump 结果:

i2cdump -f -y 4 0x4f
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    
00: 00 00 81 00 00 05 00 40 00 00 00 00 01 02 03 04    
10: 05 06 07 02 48 46 10 10 04 20 02 08 00 00 02 40    
20: 00 22 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
30: 00 00 00 ff 00 00 c0 00 40 00 00 00 00 54 c9 80    
40: 00 00 54 c9 80 00 00 54 c9 80 00 00 54 c9 80 00    
50: 00 00 c9 80 00 00 00 c9 80 00 00 00 c9 80 00 00    
60: 00 c9 80 00 00 00 00 00 00 00 00 01 40 7b 00 00    
70: e7 00 00 f0 00 60 f0 e0 00 00 ff 40 ff 8c 4e 00    
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    

如果就如何解决这一问题提供任何指导或建议、我将不胜感激。

感谢你的帮助。

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

    您好!

    根据寄存器转储、寄存器0x74设置为0x00。 这会禁用所有4个通道上的 ASI 输出。 为了在这4个通道上启用 ASI 输出、需要将寄存器0x74设置为0xF0。

    谢谢。此致、

    Lakshmi Narasimhan

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

    尊敬的 Lakshmi Narasimhan:

    感谢您的宝贵答复、

     我们已建立连接 三个麦克风 三个不同的通道中。  重置  寄存器0x74至0xF0  编解码器、并且可以看到数据正在通过 I2S 传输。 但是、我们没有从特定麦克风接收数据、因此我们更改了以下寄存器值:

    • 0x0B = 0x00
    • 0x0C = 0x01
    • 0x0D = 0x20
    • 0x0E = 0x21

    我们使用以下arecord命令测试了音频捕获:

    arecord -D hw:0,0 -V mono -c 1 -f S16_LE -r 48000 -t wav mic.wav
    Recording WAVE 'mic.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
    arecord: set_params:1358: Channels count non available

    通道数为2 (-c 2) 、我们从中获取数据 一个麦克风 .
    定义的 3 (-c 3) 两个麦克风(麦克风2和麦克风3)的 VU 仪表开始增加 、但不适用于麦克风1。

    问题:

    1. 无法从其中一个麦克风接收数据的原因可能是什么?
    2. 是否有其他 寄存器配置 需要在 TDM MODE/I2S 模式下启用所有三个麦克风?
    3. ALSA 是否需要任何 设置 arecord针对正确多通道捕捉和最终应用的命令中、我们使用了 ALSA 库 API ( SND_PCM_READI (PCM_Handle、缓冲区、帧) )以捕获麦克风的数据。

    非常感谢您提供任何见解或建议!

     

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

    您好!

    根据寄存器转储、我相信器件配置如下:

    1) P0R0x07 为0x40表示器件配置为16位 I2S

    2) P0R0x15 (ASI_STS)读回0x46表示 FSYNC = 48kHz、且 BCLK 转 FSYNC = 128 (BCLK = 6.144MHz)

    请澄清配置是否正确。

    也就是说、在记录期间、我们是否还可以检查 FSYNC 和 BCLK 频率。 如果确实针对 I2S 进行了配置、那么 FSYNC 在一半的 BCLK 周期(64个周期)内是否为高电平、而在另一半的 BCLK 周期内是否为低电平?

    谢谢。此致、

    Lakshmi Narasimhan