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.

[参考译文] TLV320AIC3204:无法从编码中看到数据

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1481360/tlv320aic3204-not-able-to-see-the-data-in-from-the-coded

器件型号:TLV320AIC3204

工具与软件:

尊敬的 TI   

我们使用的是  TLV320AIC3204  、如下所示、其中显示了 MFP1、MFP2、MFP3、MFP4和 MFP5配置

 

根据本  应用手册和应用手册 TLV320AIC3204应用参考指南、 我们将寄存器设置为以下值  
我们有两个问题:-

1.  运行时  arecord -D HW:0、0 -r 96000 -c 2 -f s32_le /userdata/audio_test.wav   我们 在示波器中未在 SOUT 编解码器中看到任何输出  
2. 当我们  运行 aplay -D plughw:0 0 file_example_WAV_1MG_test.wav 我们在 示波器中看到输出 ,但我们的扬声器不发出任何声音  

3. 使用以下配置,我们也会得到下面的错误  

root@rk3576- buildroot:/userdata# alsamixer
无法加载混合器控制:不允许操作
root@rk3576-buildroot:/userdata#

&i2c3 {
+       pinctrl-0 = <&i2c3m0_xfer>;
+       status = "okay";
+       clock-frequency = <400000>;
+               status = "okay";
+               #sound-dai-cells = <0>;
+               compatible = "ti,tlv320aic32x4";
+               reg = <0x18>;
+               clocks = <&mclkout_sai0>;
+               clock-names = "mclk";
+               assigned-clocks = <&mclkout_sai0>;
+               assigned-clock-rates = <6140000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&sai0m2_mclk>;
+               reset-gpios = <&gpio3 RK_PA0 GPIO_ACTIVE_HIGH>;
+               aic32x4-gpio-func= <
+                       0x02 /* MFP1 AIC32X4_MFPX_DEFAULT_VALUE */
+                       0x12 /* MFP2 AIC32X4_MFPX_DEFAULT_VALUE */
+                       0x02 /* MFP3 AIC32X4_MFP3_GPIO_ENABLED */
+                       0x0E /* AIC32X4_MFPX_DEFAULT_VALUE */
+                       0x00 /* MFP5 AIC32X4_MFP5_GPIO_INPUT */
+               >;
+       };
+};

4. 如果我保持下面的配置 ALSA 混音器命令运行良好 ,但我们仍然看到问题1和2  

a.

aic32x4-gpio-func= <
0xff /* AIC32X4_MFPX_DEFAULT_VALUE /
0xff / AIC32X4_MFPX_DEFAULT_VALUE /
0x04 / MFP3 AIC32X4_MFP3_GPIO_ENABLED /
0xff / AIC32X4_MFPX_DEFAULT_VALUE /
0x08 / MFP5 AIC32X4_MFP5_GPIO_INPUT */

5. 我已经完成了所有可能的寄存器转储、请查看、并告诉我什么是正确的配置  

e2e.ti.com/.../regmap_2D00_audio.txt

6.   我也得到下面的 日志在 Linux 内核说,我的 regmap 是失败的,我评论了它,以便我的驱动程序可以进一步加载.. 但是 i2cdump 命令有效的文件、可以在地址0x18中检测到器件

 请找到随附的 i2cdump

..e2e.ti.com/.../audio_2D00_i2c_2D00_dump_2D00_output.txt 

 驱动程序探测器中 I2C 的问题日志  

  RET = regmap_write (regmap、AIC32X4_RESET、0x01);
  如果 (ret){
    dev_err (dev、"*** ######写入 regmap %d\n",ret 失败;
    goto err_disable_regulators;
  }
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 TI:请帮助调试此问题、感谢您的答复  

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

    嗨、Nitin:

    有很多潜在的事情可能导致这些问题、让我们一次解决一个问题。

    首先、GPIO func 配置-我在 tlv320aic32x4.h 中的 Linux 内核的 include/sound 中看到、这些是定义的"GPIO API"常量-这些看起来是这些常量的唯一允许值、因此尝试设置为其他值可能会导致错误。

    接下来、要启用线路输出的输出、您需要在 dts 文件中启用正确的路由。 但是、您的意思是您在示波器中得到输出、而在扬声器中却没有得到输出? 您是否测量线输出并在示波器上获得信号? 如果是这样、那么您的放大器设置有问题、但我在您发布的屏幕截图中看不到您原理图的这一部分。  

    我注意到的另一点是您的寄存器映射和转储不同- i2cdump 是否在初始化失败时被获取、而寄存器映射是您要进行的写入? 您能详细解释一下这些发生的顺序以及它们的含义吗?

    请告诉我这些问题。

    此致!
    MIR

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

    你(们)好  

    早上好!  


    感谢您 回复此帖子。
    是的,我同意您的意见,我们需要逐一调试这个.. 在此之前、 我想谈谈我们昨天取得的一些进展。
    在 alsamixer GUI 工具的帮助下、我们更改了音频的一些设置、结果如下  

    1.  播放模式:-  
        
         问题:-我们现在连接了2个扬声器和 o 仅左侧扬声器工作正常。 右扬声器无法正常工作
         命令:-  aplay -D plughw:0、0 file_example_WAV_1MG_test.wav
         附加:- i2cdump-for-playback.txt 我在播放前后连接新的 I2C 转储。 (i2cdump - FY 3 0x18)

    2. 捕获 模式:-

        问题:-  声音非常微弱 . 我们的要求是在3米距离处捕捉
        第一步、我在 alsamixer GUI 工具中更改了 Capture 设置、并在 i2cdump-for-playback.txt 中转储 i2c 输出
        命令:- arecord -D HW:0、0 -r 96000 -c 2 -f s32_le /userdata/audio_test.wav  
         附件: audio_test.wav 和 i2cdump-for-playback.txt

    3. 我仍然可以看到从驱动程序的 regmap 问题,不知道为什么它出现,即使我们有 i2c 工作。


    您可以指导查看 alsa mixer GUI 命令或任何 有助于在 higvolum 中捕获和启用右扬声器的命令 吗?

    另外、我还贴附了快照、 供您参考  

    e2e.ti.com/.../i2cdump_2D00_for_2D00_capture.txt

    e2e.ti.com/.../i2cdump_2D00_for_2D00_playback.txt

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

    您好!

    您的播放文件看起来不错,并且您已经达到了 L+R DAC 的数字音量。 我想知道您的文件是单声道还是立体声? 通常、播放单声道文件只会发送 DAC 的左侧、因为您设置寄存器、使左 DAC 数据是左声道数据、右 DAC 数据是右声道数据(寄存器0x3f)。 我可以在这里为您附加注释的寄存器转储、以防您想进行验证。  

    04 03 #MCLK pin input to PLL, PLL CLK is CODEC_CLKIN
    05 91 #11, PLL powered up now. P=1, R=1 
    06 09#J=9
    0b 89#09, ndac powered up now. ndac=9
    0c 82#from 02, mdac powered up, mdac=2
    0e 80#dosr=128
    0f 02
    11 08
    12 89#09, nadc powered up, nadc=9
    13 82#02, madc powered up, madc=2
    14 80#aosr=128
    15 01
    17 04
    1a 01
    1d 01#BDIV_CLKIN=DAC_MOD_CLK
    1e 84#04, BCLK N div powered up, N=4
    !!!! 24 66#left adc powered up, gain is equal to max allowed gain in left agc, NOT equal to programmed gain. same w right agc
    25 cc#00, left+right dac powered up, lol+lor powered up
    26 11#left and right dac pga is equal to gain programmed
    !!!! 2a e0#ee, overflow has happened in l+r dac, NOW l+r adc have had overflow but also this register is copied next so maybe an issue w datasheet
    # 2d 60 #signal power was lower than noise threhold on left+right agc, now it is greater
    2f 60#l+r AGC signal power was lower than threshold
    34 08#GPIO is general purpose input
    35 12#dout is default primary dout
    36 03#din is gpi
    37 02
    38 04#SCLK GPI
    3c 01
    3d 01
    3f d4#14, now l+r dac channels powered up. left dac data is left channel data, right dac data is right chanel 
    # 40 0c now dac channels not muted
    41 30#max digital volume control, ldac
    42 30#max digital volume control, rdac
    44 6f#default drc. it is enabled, threshold=-12dbfs, hysteresis=3db
    45 38#drc holdtime=default

    至于记录噪声太小、我看到启用了 AGC (自动增益控制)、补偿增益最大化、但您可以增加 PGA 音量控制并减小 AGC 最大增益吗? 这将对进入 ADC 的所有信号产生同等影响并将其放大。 该器件在第1页寄存器0x3b 和0x3c 中具有高达47.5dB 的可编程增益。

    我还注意到、录制和播放的时钟/PLL 配置不同-您是更改时钟还是具有不同的采样率? 看起来录制的数据为32位、回放数据为16位。

    下面是我在录音上的笔记:

    # weirdly no matching registers in the before capture and the during capture i2cdump. 
    # all registers from after DAC playback that differ are commented here.
    04 03
    05 91
    06 03#09 after playback. j=3 now
    07 1d#00 after playback, now D MSB=011101 
    08 4c#00, now D LSB=01001100 so D=7500 for J.D=3.75
    0b 83#89, now NDAC=3
    0c 85#82, now MDAC=5
    0e 40#80, now DOSR=64
    0f 02
    11 08
    12 85#89, now NADC=5 (weird since 5 and 3 are switched for dac but not a huge deal prob)
    13 83#82, now MADC=3
    14 40#80, now AOSR=64
    15 01 
    17 04 
    1a 01 
    1b 30#00, now we have 32 bits instead of 16 bits
    1d 01 
    1e 81#84, BCLK NDIV is now 1 instead of 4 
    24 66 #max gain for adc pga, not equal to programmed gain
    26 11 
    2a e0 
    2d 20#00, signal power was lower than noise threshold but just for RIGHT AGC, Left AGC was greater 
    2f 60 
    34 08
    35 12 
    36 03
    37 02
    38 04 
    !!!! 3c 09#01, now we are using prb_9 for DAC unsure why
    3d 01 #using prb_r1 for adc
    3f 14 
    40 0c
    41 0a#30, left dac volume is +5dB
    42 0a#30, right dac volume is +5dB
    44 6f
    45 38
    4b ee
    4c 10
    4d d8
    4e 7e
    4f e3
    51 c0#00, now l+r adc powered up
    53 28
    54 28
    56 81#93, LEFT AGC enabled and target=-5.5dBFS, left channel agc gain hysteresis is .5dB when it was 1.5dB
    57 44#12, LEFT AGC hysteresis 2.0dB, left channel agc noise threshold is -32dB
    58 75#7f, left channel agc maximum gain =58dB (not recommended, should be 74)
    59 20#00, attack time=9*32 adc wclk
    5a 20#00, decay time=9*32 adc wclk
    5b 02#09, agc noise debounce time=4 adc wclk
    5c 01
    5d 75#7f, left channel agc gain=58dB (above the max actually)
    5e 81#93, right channel has all the same settings as left
    5f 44#12
    60 75#7f
    61 20#00
    62 20#00
    63 02#09
    64 01
    65 75#7f

    此致!
    MIR

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


    你(们)好   

    感谢你的评分
    实际上、我使用 alsamixer GUI 来配置声卡、这是一个 Linux 免费命令、输出显示如下所示

    昨天、我只是谈到可能导致 I2cdump 中不同输出的设置  
    所以我正在重新发送 I2cdump 与下面提到的测试案例(对不起 这么多的转储,但确保我没有丢失任何东西)

    我还有一个问题   
       如何通过使用麦克风的内置音频块提高质量?

    请在下面的附录中找到最后一个 clap 声音存在的录制音频  

    仅供参考  

    我使用 以下命令来了解页码  

    i2cget -fy 3 0x18 0  以了解选择了哪个页面
    i2cdump -fy 3 0x18 转储 i2cdump
    i2cset -FY 3 0x18 0 01  以设置页面  




    我不确定您是否 拥有 Linux 环境、但如果是、那么您可以轻松理解我的设置控制。
    我们需要对任何 Linux 内核计算机运行 alsamixer 命令(如果有 pkg)、它将显示并按 F6键选择卡。


    请找到 设置完成后创建的附加 asound.state。 寄存器转储是之后的输出。
    连接的   asound.state  

    1.当器件启动时、我获取第0页和第1页寄存器。 ( Dump1)

    2.  我恢复我的设置使用 alsactl 恢复和再次采取  (Dump2)


    3.在那之后,我尝试了恶作剧,并在恶作剧中我拿了 (Dump3)

      
        root@rk3576- buildroot:~# arecord -D HW:0、0 -r 96000 -c 2 -f s32_le /userdata/audio_test.wav
             记录波“/userdata/audio_test.wav”:有符号32位小端、速率96000Hz、立体声
            ^已接收信号中断...

       顺便说一下、当我录制它时、它提供了如下所示的输出、看起来是 立体声  

    4.一次 破纪录的完成,我再次采取 (Dump4)

    5.之后,我播放录制的视频,并再次播放 (转储5)

            root@rk3576- buildroot:~# aplay -D plughw:0,0/userdata/audio_test.wav
    Playing wave '/userdata/audio_test.wav : Signed 32 bit Little Endian, Rate 96000Hz, Stereo

     

    6.一旦完成比赛,我再次采取了垃圾场 (转速6)

    7.我将卷更改为20%然后执行7选项  

     

    root@rk3576- buildroot:~# amixer set Master 20%、20%
    简单的混合器控制"Master"、0
    功能:pvolume pswitch pswitch-joined.
    播放通道:左前-右前
    限制:播放0 - 65536
    单声道:
    左前:播放13107 [20%][开]
    右前:播放13107 [20%][开]

     播放的 附加 wav 文件从 互联网似乎工作在我的两个扬声器在 Windows 笔记本电脑
          
           Aplay -D plughw:0、0 file_example_WAV_1MG_test.wav
       
        在做7的时候 花了( Dump7  )



    我注意到、 当我 执行7个命令 页时、没有寄存器始终切换回第0页、我无法转储第1页  

    附件  

    e2e.ti.com/.../audio_5F00_test.wav

     e2e.ti.com/.../dump1.txt

    e2e.ti.com/.../dump2.txt

    e2e.ti.com/.../dump3.txt

    e2e.ti.com/.../dump4.txt

    e2e.ti.com/.../dump5.txt

    e2e.ti.com/.../dump6.txt

    e2e.ti.com/.../dump7.txt

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

    e2e.ti.com/.../asound_5F00_state.txt

    我已 在此处附加了 asound.state 并将 其重命名为 txt 文件、请检查该文件、一旦该文件将提供我们用于 alsamixer GUI 的完整 alsa 设置。

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

    嗨、Nitin:

    立体声播放是否仍有问题?  

    我无法在 Linux 系统上测试您的确切文件、但我熟悉 alsamixer、并且我可以访问我用来验证您的 alsamixer 控件的驱动程序文件。 以下是我从您的 alsamixer 屏幕截图中注意到的一些内容:

    1) 1) ADCFGA 应取消静音、此寄存器也可能使 ADC 静音和取消静音-尽管在绑定状态文件中、"静音开关"设置为 false、因此这可能没有问题。

    2) 2)您应该会在某个位置看到一个标记为"PGA Level Volume (PGA 级别音量)"的滑块、这就是在没有 AGC 的情况下增加 PGA 电平的方法。 现在它根据你的声音状态设置为0,但可以增加到95。 您应该慢慢提高此级别、直至录制达到您喜欢的级别。 PGA 是 ADC 中的可编程增益放大器、它首先可以提高器件内部输入信号的音量。

    3) 3)将输入阻抗更改为10k Ω 而不是20 -降低输入阻抗后、便可以通过更大的信号将其发送到 ADC。 其中包括 CM_L 和 CM_R、可以在您的屏幕截图中看到(尽管我不确定是不是使用 CM 输入)、以及输入 IN1_L/R、IN2、IN3等 您是否有关于您希望进入哪种输入混频器(L/R ADC)的图示或解释? 您处于环绕状态的设置将帮助我们确定设置的外观。

    以下是您当前在 asound 状态文件中的连接:

    IN2_R 到右混频器正电阻器(20k)
    CM_R 到右侧混频器负电阻器(20k)
    IN1_L 到左混频器正电阻器(20k)
    IN2_L 到左混频器正电阻器(20k)
    IN1_R 到左混频器正电阻器(20k)
    CM_L 到左混频器负电阻器(20k)
     
    我想我在原理图中看到这些应该是差分麦克风信号、但从这种连接状态来看、它们看起来都是单端信号。 例如、对于差分信号、您可能希望 IN1_L 左混频器为正、IN1_R 左混频器为负。 如果您希望拥有电流环绕状态配置、那么您将需要将电阻器更改为10k (这也是使用 alsamixer 完成的)。 您还可以根据需要调整设置。 将输入阻抗降低2倍会使中的电压增加2倍、相当于大约6dB 的差值。

    4) 4) AGC 通过 AGC 左右开关静音。 同样、我认为您应该在担心 AGC 之前提高 PGA 水平音量、但使增益迟滞和噪声阈值达到最大不会达到您所需的效果、如果您打算使用 AGC、则应降低这些值。 如有任何疑问、您可以增大"AGC Max PGA"和"AGC Target Level"并减小迟滞/噪声阈值。 我建议将 AGCFGA 和 AGC 开关静音、保持它们现在的状态、直到能够通过增加 PGA、更改输入阻抗和布线获得所需的音量为止。

    此致!
    MIR

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

    你(们)好  

    感谢您的详细答复 、我们现在能够正确录制音频  
    此外  ,我们没有问题的  立体声播放,有一些硬件连接问题,然后左右扬声器都工作

    今天我们有1个支持和1个问题 ,   


    问题1:-  请找到支持一个回环 PDM 卡和 TLV 声卡的附加 asound-temp.state  
                当我做了 alsactl 恢复后,我无法访问 TLV320编解码器. 即使在 I2C 中没有检测到它  
                 写入错误的 asound.state 可能会损坏 编解码器卡吗?

    e2e.ti.com/.../7282.asound_2D00_temp_5F00_state.txt

    问题1:-  我们希望启用     数据表中提到的数字麦克风立体声 IM69D130V01XTSA1 、连接到(MFP4、MFP3)
                如何为其启用配置.. 如果我 根据应用手册将 MFP4寄存器写入0x0E、则我将获得  
                 root@rk3576- buildroot:/userdata# alsamixer
                无法加载混合器控制:不允许操作

    这是你 在 #1评论中提到的相同.. 请帮助启用  数字麦克风立体声。 下面是再次根据您的参考资料从原理图中摘录的内容   

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

    您好!

    我不确定、该驱动程序可能不支持将 MFP 引脚设置为数字麦克风设置、因为我看到您还需要更改第0页寄存器81 (0x51)以设置为数字麦克风配置哪个 ADC。 在初始化脚本中包含所需的3个寄存器组可能会更好:对于 MFP3、要将寄存器56位 D2-D1=01、寄存器81位 D5-4=01设置为麦克风数据。 若要将 MFP4设置为麦克风时钟、请设置寄存器55位 D4-1=0111。

    如果您需要更多帮助、请告诉我。

    此致!
    MIR

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

    你(们)好  

    我打开了支持数字 MIC 的新问题  

    TLV320AIC3204:关于数字麦克风支持-音频论坛-音频- TI E2E 支持论坛


    对于 该线程、只剩下一个问题  

    问题1:-  请找到支持一个回环 PDM 卡和 TLV 声卡的附加 asound-temp.state  
                当我做了 alsactl 恢复后,我无法访问 TLV320编解码器. 即使在 I2C 中没有检测到它  
                 写入错误的 asound.state 可能会损坏 编解码器卡吗?

    您能帮助回答这个问题吗? 不确定会发生什么、但写入卡后在 I2C 中未进行检测  

    [报价 userid="644573" url="~/support/audio-group/audio/f/audio-forum/1481360/tlv320aic3204-not-able-to-see-the-data-in-from-the-coded/5696118 #5696118"]

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

    您好!

    关于 alsactl 恢复,您可以发送所有命令来获取此错误吗? 您得到的误差是什么? 执行此操作时、默认音频设备可能会被删除、因此需要再次初始化它。 Linux 论坛上有一个类似的主题: https://bbs.archlinux.org/viewtopic.php?id=233813

    此致!
    MIR

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

    你(们)好  

    我有 asound.state 设置只有一张卡 ,但 实际上我有2张卡.. 我还启用了环回卡。
    我应用了 asound.state 和之后的音频卡没有检测到在 I2C 本身..

    所以目前的问题是卡不是检测在 i2cdetect -y 3命令和0x18地址没有来..

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

    您好!

    如果卡未在 i2cdetect 中进行检测、则可能是器件因错误而关闭、或者系统中可能存在阻塞 i2c 地址的问题。 如果对器件进行硬复位或软复位、会发生什么情况?  

    -mir