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.

[参考译文] Linux/PROCESSOR-SDK-AM437X:麦克风不工作

Guru**** 2941480 points

Other Parts Discussed in Thread: TLV320AIC3100, AM4372

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/665615/linux-processor-sdk-am437x-microphone-not-working

器件型号:PROCESSOR-SDK-AM437X
主题中讨论的其他器件:TLV320AIC3100TMDXEVM438X-EPOSAM4372

工具/软件:Linux

大家好、

我们将 TLV320AIC3100与 AM437x 搭配使用。 我们能够使扬声器正常工作、但无法使 MIC 正常工作。 我们使用的是 Processor SDK 02.00.02.11。 以下是我们建立以下连接的连接

上面的一个被修改为 MIC1LP -> MIC OUT

MIC1RP ->悬空

以下是 DTS 条目:

       /* Arun analogics 添加的 TLV320AIC3100 *
       TLV320AIC3100:TLV320AIC3100@18{
               #sound-di-cells =<0>;
               兼容="ti、TLV320AIC3100";
               reg =<0x18>;
               状态="正常";

               pinctrl-names ="default";
               pinctrl-0 =<&clkout1_pin>;

               时钟=<&clkout1_mux_ck>;
               时钟名称="xvclk";
               分配的时钟=<&clkout1_mux_ck>;
               分配的时钟父节点=<&clkout1_osc_div_ck>;

               //ai31xx 微偏置 vg = ;

               /*稳压器*/


               AVDD-SUPPLY =<&dc4>;
               IOVdd-supply =<&dc4>;
               DVDD 电源=<&ldo1>;
               SPRVDD 电源=<VBAT>;/* VBAT */
               SPLVDD-SUPPLY =<VBAT>;/* VBAT */
       };


       声音:声音{
               兼容="简单音频卡";
               simple-audio-card、name ="AM437x-SK-EVM";
               simple-audio-card、小部件="扬声器"、"扬声器"、
                                           "麦克风"、"麦克风插孔";

               简单音频卡、路由="扬声器"、"SPL"、
                                           "扬声器"、"SPR"、
                                           "耳机插孔"、"HPL"、
                                           "耳机插孔"、"HPR"、
                                           "MIC1LP"、"MICBIAS"、
                                           "MIC1RP"、"MICBIAS"、
                                          "MIC1LP"、"麦克风插孔"、
                                          "MIC1RP"、"麦克风插孔";



               simple-audio-card、format ="DSP_b";
               simple-audio-card、bitclock-master =<&sound_master>;
               simple-audio-card、frame-master =<&sound_master>;
               简单音频卡,位时钟反转;

               简单音频卡、CPU{
                       Sound-Dai =<&McASP1>;
                       /*system-clock-frequency =<12000000>;*/
                       系统时钟频率=<24000000>;
               };

               sound_master:simple-audio-card、codec{
                       Sound-Dai =<&TLV320AIC3100>;
                       /*system-clock-frequency =<12000000>;*/
                       系统时钟频率=<24000000>;
               };
       };

随附的是引导日志 e2e.ti.com/.../80546.dmesg.txt

请告诉我们这里可能会有什么问题吗?

此致、

Ashok

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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    下面是从编解码器连接到 MIC 的连接
    MIC1LP -> MIC 输出
    MIC1RP ->悬空
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    麦克风的类型是什么? 我没有看到任何 MICBIAS 连接。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CMC-2242PBL 驻极体电容式麦克风。 是未连接 MICBIAS。 请指导我们如何连接?


    此致、
    Ashok
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    查看编解码器数据表。 这也应显示在麦克风数据表中。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在数据表的帮助下、连接电路已连接、很幸运。 请提供所需的任何修改建议。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、这似乎正常。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的连接、但我们在 MICBIAS 或 MIC1L 点没有获得任何电压。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    从软件的角度来看、在内核驱动程序级别和 amixer 设置方面、还有什么其他要求?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Ashok、

    [引用 user="Ashok kusa"]      //* Arun analogics 添加的 TLV320AIC3100 */
           TLV320AIC3100TLV320AIC3100@18{
                   #sound-di-cells =<0>;
                   兼容="ti、TLV320AIC3100"
                   reg =<0x18>;
                   状态="正常";

                   pinctrl-names ="default";
                   pinctrl-0 =<&clkout1_pin>;

                   时钟=<&clkout1_mux_ck>;
                   时钟名称="xvclk";
                   分配的时钟=<&clkout1_mux_ck>;
                   分配的时钟父节点=<&clkout1_osc_div_ck>;

                   //ai31xx 微偏置 vg = ;

                   /*稳压器*/


                   AVDD-SUPPLY =<&dc4>;
                   IOVdd-supply =<&dc4>;
                   DVDD 电源=<&ldo1>;
                   SPRVDD 电源=<VBAT>;/* VBAT */
                   SPLVDD-SUPPLY =<VBAT>;/* VBAT */
           };
    [/报价]

    让我们从 AIC3100 DTS Entry 开始。 首先、确保条目位于 I2C 节点内:

    i2c1{(&I)

         TLV320AIC3100TLV320AIC3100@18{

    我在 AIC3100节点中看到的下一个情况是、您正在使用此处的 pinmux (pinctrl)属性、这似乎不受支持。 请参阅以下文件:

    Linux-kernel/Documentation/devicetree/bindings/sound/tlv320aic31xx.txt

    请在此处说明您的引脚复用到底是什么? 您还应该检查所有 pinmux 设置是否正确。 使用 devmem2工具或 omapconf 工具在用户空间中检查这些内容。 同时检查 MCASP_Pdir 寄存器中是否有预期的值。

    另请注意、AM437x EPOS EVM 随附扬声器和麦克风、与您的定制板相同。 您可以参考 EPOS DTS 文件以供参考:

    linux-kernel/arch/arm/boot/dts/am43x-epos-evm.dts

    您还可以查看 EPOS EVM 用户指南和原理图:

    www.ti.com/.../TMDXEVM438X-EPOS

    此致、
    帕维尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Pavel、
    感谢您的回复、我们能够让扬声器正常工作并能听到声音。 即 AIC3100 DTS 输入和引脚多路复用器在 I2C 下正确完成、在这里、我的问题是无法捕获麦克风信号。
    请帮助我们使用 MIC 捕获语音。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Ashok、

    无法从 MIC 捕获音频数据的可能原因之一是引脚多路复用未正确完成。 您可能会正确设置 pinmux、以便通过扬声器播放/传输音频数据、但在 pinmux 中错过了从 MIC 捕获/接收的内容。

    请为我提供 McASP pinmux 值和 MCASP_Pdir 寄存器值以进行分析。

    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢 Pavel、
    以下是给定的 McASP 引脚多路复用值。

    McASP1_PINS:McASP_1_PINS_DEFAULT{
    pinctrl-single、pins =<
    0x1a0 (PIN_INPUT_PULLDOWN | MUX_MODE3)/*(L23) McASP0_aclkr.McASP1_aclkx *
    0x1a4 (PIN_INPUT_PULLDOWN | MUX_MODE3)/*(K23) McASP0_fsr.McASP1_FSX *
    0x1a8 (PIN_INPUT 下拉| MUX_MODE3)//(M25) McASP0_axr1.McASP1_axr0 */
    0x1ac (PIN_OUTPUT 下拉| MUX_MODE3)//(L24) McASP0_ahclkx.McASP1_axr1 */
    >;
    };
    McASP1_PINS_SLEEP:my_McASP_1_PINS_SLEEP{
    pinctrl-single、pins =<
    0x1a0 (PIN_INPUT_PULLDOWN | MUX_MODE7)/*(L23) McASP0_aclkr.McASP1_aclkx *
    0x1a4 (PIN_INPUT_PULLUGDOWN | MUX_MODE7)/*(K23) McASP0_fsr.McASP1_FSX *
    0x1a8 (PIN_INPUT 下拉| MUX_MODE7)/*(M25) McASP0_axr1.McASP1_axr0 */
    0x1ac (PIN_INPUT_PULLDOWN | MUX_MODE7)/*(L24) McASP0_ahclkx.McASP1_axr1 *
    >;
    };

    McASP1{
    #sound-di-cells =<0>;
    pinctrl-names ="default"、"sleep";
    pinctrl-0 =<&McASP1_PINs>;
    pinctrl-1 =<&McASP1_PINS_SLEEP>;

    状态="正常";

    OP-MODE =<0>;
    TDM-SLOTS =<2>;
    serial-dir =<
    /*0 1 2*/
    2 1 0 0
    0 0 0 0 0
    0 0 0 0 0
    0 0 0 0 0
    >;

    /* tx-num-evt =<32>;
    Rx-num-evt =<32>;*/

    tx-num-evt =<1>;
    Rx-num-evt =<1>;
    };
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Biser,感谢硬件连接,在捕获时,我们不会在 MICBIAS 或 MIC1L 点获得电压(假设为2伏)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Ashok kusa"]以下是给定的 McASP pinmux 值。

    [报价用户="Ashok kusa"] 0x1a8 (PIN_INPUT_PULLUGD | MUX_MODE3)/*(M25) McASP0_axr1.McASP1_axr0 */[/报价]

    您在内核(而不是 uboot)中执行此操作、对吧?

    您能否使用 devmem2工具从用户空间检查寄存器 CTRL_CONF_McASP0_AXR1/0x44E109A8。 您有什么价值? 在 AM437X-gp-evm.dts 中、我有一些疑问、我们按如下方式设置寄存器 CTRL_CONF_RMII1_REFCLK/0x44E10944:

    McASP1_PINS:McASP1_PINS{
          pinctrl-single、pins =<

    AM4372_IOPAD (0x944、PIN_INPUT_PULLUGDOWN | MUX_MODE4)   /* rmii1_ref_clk.McASP1_axr3 *

    >;
       };

    如果 M25 McASP1_axr0引脚上出现音频数据信号、您还能使用示波器进行探测吗?

    此致、
    帕维尔

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

    [报价用户="Ashok kusa"]感谢硬件连接,在捕获时,我们没有在 MICBIAS 或 MIC1L 点获得电压(假设为2伏)。

    是否可以尝试在 aic3100 DTS 节点中添加此条目:

    #include

    TLV320AIC3100:TLV320AIC3100@18{

    aic31xx 微偏置 vg = ;

    在本例中、您是否会得到2V 电压?

    此致、
    帕维尔

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

    关于 CTRL_CONF_McASP0_AXR1/0x44E109A8寄存器值为
    #./devmem2 0x44E109A8
    /dev/mem 已打开。
    映射到地址 bb6fde000的内存。
    地址0x44E109A8 (0xb6fde9a8)处的值:0x40003

    关于 CTRL_CONF_McASP0_AHCLKX/0x44E109AC 寄存器值为
    #./devmem2 0x44E109AC
    /dev/mem 已打开。
    映射到地址 bb6f86000的内存。
    地址0x44E109AC (0xb6f869ac)的值:0x3

    在 M25 McASP1_axr0引脚的点处未获得任何信号。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Ashok kusa"]在 M25 McASP1_axr0引脚的点处未获取任何信号。

    McASP1.MCASP_Pdir 寄存器的值是什么? 确保您在那里也有正确的值。

    如果您使用示波器检查 AM437x McASP1引脚的其余部分(axr1、aclkx、FSX、ahclkx)、您是否具有预期值? 如果您使用示波器 AM437x I2C 引脚进行检查、 您是否具有预期的值?

    我的意思是、如果其他一切正常且符合预期、则最有可能是 AIC3100编解码器设置(HW 或 SW)中存在问题。 为了从 MIC 捕获音频、AM437x 器件正在等待在 M25引脚上接收音频数据。 您可以咨询音频编解码器团队、了解 AIC3100编解码器不向 AM437x McASP 模块发送音频数据的原因。

    此致、
    帕维尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Pavel:
    帮助我查找 McASP1.MCASP_Pdir 寄存器的寄存器地址

    DTS 引脚的其余部分(aclkx、FSX、axr0 &axr1)

    /home/devmem2 0x44E109A0
    /dev/mem 已打开。
    映射到地址 bb6f05000的内存。
    地址0x44E109A0 (0xb6f059a0)的值:0x40003
    #/home/devmem2 0x44E109A4
    /dev/mem 已打开。
    映射到地址 bb6f65000的内存。
    地址0x44E109A4 (0xb6f659a4)的值:0x40003
    /home/devmem2 0x44E109A8
    /dev/mem 已打开。
    映射到地址 bb6f69000的内存。
    地址0x44E109A8 (0xb6f699a8)上的值:0x40003
    /home/devmem2 0x44E109AC
    /dev/mem 已打开。
    映射到地址 bb6fc5000的内存。
    地址0x44E109AC (bb6fc59ac)的值:0x20003
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [报价用户="Ashok kusa"]帮助我找到 McASP1.MCASP_Pdir 寄存器的寄存器地址

    0x4803C014

    [引用 user="Ashok kusa">DTS 引脚的其余部分(aclkx、FSX、axr0 &axr1)

    /home/devmem2 0x44E109A0
    /dev/mem 已打开。
    映射到地址 bb6f05000的内存。
    地址0x44E109A0 (0xb6f059a0)的值:0x40003
    #/home/devmem2 0x44E109A4
    /dev/mem 已打开。
    映射到地址 bb6f65000的内存。
    地址0x44E109A4 (0xb6f659a4)的值:0x40003
    /home/devmem2 0x44E109A8
    /dev/mem 已打开。
    映射到地址 bb6f69000的内存。
    地址0x44E109A8 (0xb6f699a8)上的值:0x40003
    /home/devmem2 0x44E109AC
    /dev/mem 已打开。
    映射到地址 bb6fc5000的内存。
    地址0x44E109AC (0xb6fc59ac)的值:0x20003

    我的意思是使用示波器探测这些引脚、并检查您是否将在那里获得预期的信号。 您是否已解决 MICBIAS 中的2V 问题?

    此致、
    帕维尔