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 A AM4377上的记录错误

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1034515/tlv320adc3140-tlv320adc3140-arecord-error-on-am4377

器件型号:TLV320ADC3140
主题中讨论的其他器件:AM4377AM4372

尊敬的 TI 团队:

我们有一个 AM4377板 McASP0连接到 TLV320ADC3140、AM4377是从设备、TLV320ADC3140是主设备、TLV320ADC3140配置为8xDMIC。

我们发现一个问题是在运行'arecord'命令时出现'Read error:input/output error'、并且 test.wav 没有数据:

root@AM437X-EVM:~# arecord -DHW:0、0 -c 8 -d 10 -r 48000 -f S32_LE test.wav                                        
录制波'test.wav':                         
有符号32位小端序、速率48000Hz、通道8                                                            
A 记录:PCM_READ:2143:读取错误:输入/输出错误                                                            
根目录@AM437X-EVM:~编号

请帮您检查、谢谢。

以下是我们的一些信息:

方框图:

Block Diagram

2.从以下位置下载 TLV320ADC3140驱动程序源代码:
git.kernel.org/.../codecs
/tlv320adcx140.c?h=v5.9.6.
git.kernel.org/.../codecs
/tlv320adcx140.h?h=v5.9.6.

SDK 为:

TI-PROCESSOR-SDK-LINX-RT-AM437X-EVM-06.03.00.106 (Linux-RT-4.19.94+gitAUTOINC+a242ccf3F1-ga242ccf3F1)。

4.音频相关设备树配置:
#include "am4372.dtsi"
CLK_McASP0_FIXED:CLK_McASP0_FIXED{
   #clock-cells =<0>;
   兼容="固定时钟";
   时钟频率=<24576000>;
};
CLK_McASP0:CLK_McASP0{
   #clock-cells =<0>;
   兼容="GPIO-GATE -时钟";
   时钟=<&clk_McASP0_FIXED>;
   ENABLE-GPIO =<&GPIO4 13 GPIO_ACTIVE_HIGH>;//在 GPIO4_13上启用 Clk *
};
听起来{
   兼容="简单音频卡";
   simple-audio-card、name ="AM4377-音频卡";
   #sound-di-cells =<0>;
   simple-audio-card、di-link@0{
      格式="DSP_b";
      位时钟反转;
      bitclock-master =<&sound0_master>;
      frame-master =<&sound0_master>;
      CPU{
         Sound-Dai =<&McASP0>;
         di-tdm-slot-num =<8>;
         di-tdm-slot-width =<32>;
         di-tdm-slot-TX-mask =<1 1 1 1 1 1>;
         di-tdm-slot-rx-mask =<1 1 1 1 1 1>;
      };
      Sound0_master:CODEC{
         sound-dai =<&tlv320adc3140>;
         时钟=<&clk_McASP0>;
      };
   };
};
i2c2{(&I)
   tlv320adc3140:ctradc@4c{
       reg =<0x4c>;
   };
};

tlv320adc3140{
   状态="正常";
   #sound-di-cells =<0>;
   兼容="ti、tlv320adc3140";
   /* Areg-supply =<&vsys_1v8>;*/
   ti、mic 偏置源=<6>;
   TI、PDM 边缘选择=<0 0 0 0>;
   /* GPI1 ~ GPI4 */
   TI、GPI-CONFIG =<4 5 6 7>;
   TI、GPIO-CONFIG =<10 0>;   
   TI、GPO-CONFIG-1 =<4 1>;
   TI、GPO-CONFIG-2 =<4 1>;
   TI、GPO-CONFIG-3 =<4 1>;
   TI、GPO-CONFIG-4 =<4 1>;
   TI、ASI-TX-DRIVER =<1>;
   RESET-GPIO =<&GPIO4 12 GPIO_ACTIVE_HIGH_>;
};
&McASP0{
   状态="正常";
   #sound-di-cells =<0>;
   pinctrl-names ="default"、"sleep";
   pinctrl-0 =<&McASP0_PINS_DEFAULT>;
   pinctrl-1 =<&McASP0_PINS_SLEEP>;
   OP-MODE =<0>;/* MCASP_IIS_MODE */
   TDM-SLOTS =<8>;
   /* 4个串行器 ARX0、ARX1、ARX2、ARX3 */
   serial-dir =< /* 0:非活动、1:TX、2:Rx *
       2 0 0 0 0
   >;
   tx-num-evt =<32>;
   Rx-num-evt =<32>;
};
am43xx_pinmux{(am43xx_pinmux)}
   GPIO4_PINS:GPIO4_PINS_DEFAULT{
       pinctrl-single、pins =<
           AM4372_IOPAD (0x9e0、PIN_OUTPUT 上拉| MUX_MODE7) /* CAM1_FIELD.GPIO4_12 */
           AM4372_IOPAD (0x9e4、PIN_OUTPUT 上拉| MUX_MODE7) /* CAM1_WN.GPIO4_13 */
       >;
   };

   McASP0_PINS_DEFAULT:McASP0_PINS_DEFAULT{
       pinctrl-single、pins =<
           AM4372_IOPAD (0x99c、PIN_INPUT_PULLUP | MUX_MODE0)/*(M24) McASP0_ahclkr.McASP0_ahclkr*/
           AM4372_IOPAD (0x9ac、PIN_INPUT_PULLUP | MUX_MODE0)   /*(N24) McASP0_ahclkx.McASP0_ahclkx *
           AM4372_IOPAD (0x998、PIN_INPUT_PULLUP | MUX_MODE0) /*(H23) McASP0_axr0.McASP0_axr0 *
           AM4372_IOPAD (0x9a8、PIN_INPUT_PULLUP | MUX_MODE0) /*(L24) McASP0_axr1.McASP0_axr1 *
           AM4372_IOPAD (0x994、PIN_OUTPUT 上拉| MUX_MODE0)  /*(N22) McASP0_FSX.McASP0_FSX *
           AM4372_IOPAD (0x9a4、PIN_INPUT_PULLUP | MUX_MODE0)/*(N24) McASP0_fsr.McASP0_fsr */
           AM4372_IOPAD (0x990、PIN_OUTPUT 下拉| MUX_MODE0)/*(N24) McASP0_aclkx.McASP0_aclkx、*
           AM4372_IOPAD (0x9a0、PIN_INPUT_PULLUP | MUX_MODE0)/*(N22) McASP0_aclkr.McASP0_aclkr */
       >;
   };

   McASP0_PINS_SLEEP:McASP0_PINS_SLEEP{
       pinctrl-single、pins =<
           AM4372_IOPAD (0x99c、PIN_INPUT_PULLUP | MUX_MODE7)/*(M24) McASP0_ahclkr.McASP0_ahclkr*/
           AM4372_IOPAD (0x9ac、PIN_INPUT_PULLUP | MUX_MODE7)   /*(N24) McASP0_ahclkx.McASP0_ahclkx *
           AM4372_IOPAD (0x998、PIN_INPUT_PULLUP | MUX_MODE7) /*(H23) McASP0_axr0.McASP0_axr0 *
           AM4372_IOPAD (0x9a8、PIN_INPUT_PULLUP | MUX_MODE7) /*(L24) McASP0_axr1.McASP0_axr1 *
           AM4372_IOPAD (0x994、PIN_OUTPUT 上拉| MUX_MODE7)  /*(N22) McASP0_FSX.McASP0_FSX *
           AM4372_IOPAD (0x9a4、PIN_INPUT_PULLUP | MUX_MODE7)/*(N24) McASP0_fsr.McASP0_fsr *
           AM4372_IOPAD (0x990、PIN_OUTPUT 下拉| MUX_MODE7)/*(N24) McASP0_aclkx.McASP0_aclkx、*
           AM4372_IOPAD (0x9a0、PIN_INPUT_PULLUP | MUX_MODE7)/*(N22) McASP0_aclkr.McASP0_aclkr */
       >;
   };
};

5.运行'arecord '命令时,i2cdump 将 TLV320ADC3140的所有寄存器转储并显示如下:

此致、

Xing-Qin

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

    你好,Xing-Qin

    我们实际上并不支持代码调试、但我将查看寄存器转储来帮助找出问题。

    最棒的

    Carson

    低功耗音频工程师

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

    尊敬的卡森:

    感谢您的回答、这是 TLV320ADC3140的 DAI 信号波形。ADC 似乎正常工作、但 CPU 无法记录、请帮助检查、谢谢。

    此致、

    Xing-Qin

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

    如果处理器有问题、您应该在该论坛上发帖、但也要验证 ADC 是否正确提供了时钟。

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

    尊敬的 卡森:

    很抱歉、我的更新太晚了、我在处理器论坛中创建了有关此问题的新主题、如果我有任何问题、我将在此处更新、谢谢。

    此致、

    Xin-Qin

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

    尊敬的 卡森:

    在将我们的电路板重新绘制为 fallow 方框图之后:

    我们的问题已经解决。

    但我们遇到了以下其他问题:

    我使用'arecord '命令在 Linux 中记录8个通道的音频、我发现输出.wav 文件中只有4个通道(CH1-CH4)具有数据、而其他4个通道(ch5-ch8)为零。

    我在记录时转储了 ADC 的寄存器:

    它显示寄存器0x73和0x76已设置为0xf0、ch5-ch8已禁用、PDM ch5-ch8已断电。

    我还通过将 ADC 寄存器0x73设置为0xff 启用了所有8个通道:

    i2cset -f -y 2 0x4c 0x73 0xff

    并验证其值已通过'i2cget -f -y 2 0x4c 0x73'设置为0xff

    之后、如上所述、重转储 ADC 寄存器的结果相同(reg.0x73=0xf0、reg.0x76=0xf0)。

    根据我们的实验、ADC ch5-ch8在记录时似乎自动断电、这会导致通道5通道8为零。

    请帮帮我。

    谢谢、

    此致、

    Xing-Qin

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

    您好、Xing-Qin、

    您能否分享有关 DMIC 输入配置的完整原理图?

    此致、

    Carson

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

    尊敬的卡森:

    很抱歉,我忘记了。 现在、我将原理图上传到这里、谢谢。

    e2e.ti.com/.../MIC_5F00_00.pdf

    此致、

    Xing-Qin