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.

[参考译文] TLV320AIC3120:我想将 tlv320aic3120音频编解码器(主控模式)与 Linux (内核版本为4.4.194)连接。

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1044253/tlv320aic3120-i-want-to-connect-tlv320aic3120-audio-codec-master-mode-with-linux-the-kernel-ver-is-4-4-194

器件型号:TLV320AIC3120

您好的团队,

    我们通过 i2c 将 tlv320aic3120音频编解码器与 SoC 主板(RK3399 tincurboard2)相连。  我们在 Linux 内核(Ver4.4.194)中使用 tlv320aic31xx.c 驱动程序,

       tlv320aic3120的编解码器用于主控模式。  器件树的相关部分为:

i2c6{(&I)
状态="正常";
/*clock-frequency =<100000 >;*/
tlv320aic3120:tlv320aic3120@18{
兼容="ti、tlv320aic3120";
状态="正常";
GPIO-RESET =<&GPIO2 18 GPIO_ACTIVE_LOW_>;
#sound-di-cells =<0>;
/*ai31xx-micbias vg =<0>;*/
reg =<0x18>;
时钟=<&sound_PLL 0>;
clock_name ="MCLK";
/*分配的时钟速率=<12000000>;*/
/*sys-clock-frequency =<12000000>;*/
HPVDD-SUPPLY =<&vcc3v3_DSI>;
SPRVDD-SUPPLY =<&vcc5v0_sys>;
SPLVDD-SUPPLY =<&vcc5v0_sys>;
AVDD-SUPPLY =<&vcc3v3_DSI>;
IOVdd-supply =<&vcc3v3_DSI>;
DVDD 电源=<_vcio_sd>;
};
};

i2s0{(&I)
状态="正常";
FSL、MODE ="I2S-SLAVE;
/*sys-clock-frequency =<12000000>;*/
#sound-di-cells =<0>;
/*sound-dai =<&tlv320aic3120>;*/
};

Rockchip_I2S_SOUND:Rockchip-I2S-sound{
状态="正常";
兼容="简单音频卡";
simple-audio-card、name ="Rockchip、Rockchip-I2S-sound";
simple-audio-card、format ="I2S";
simple-audio-card、bitclock-master =<&snd_codec>;
simple-audio-card、frame-master =<&snd_codec>;
/*简单音频卡,位时钟反转;*/
/*simple-audio-card, convert rate =<48000>;*/
/*简单音频卡,MCLK-FS =<256>;*/

simple-audio-card、小工具=
"麦克风"、"麦克风插孔"、
"扬声器"、"外部扬声器";

简单音频卡,路由=
"MIC1LP"、"麦克风插孔"、
"MIC1RP"、"麦克风插孔"、
"外部扬声器"、"SPK";
简单音频卡、CPU{
Sound-Dai =<&i2s0>;
/*Clocks =<&sound_PLL 0>;*/
/*sys-clock-frequency =<12000000>;*/
};
SND_CODEC:简单音频卡、CODEC{
sound-dai =<&tlv320aic3120>;
时钟=<&sound_PLL 0>;
/*sys-clock-frequency =<12000000>;*/
};
};

i2c 驱动程序会对器件进行注册、并在/proc/asound.中创建 Card1条目
但是、我会收到以下错误消息:

1) ASOC-SIMPLE 卡 Rockchip-I2S-sound: tlv320aic31xx-hifi <->ff880000.I2S 映射正常
2)[63.867324] tlv320aic31xx-codec 6-0018:ASOC:扬声器 DAPM 更新失败:-6
3)[ 64.028268] tlv320aic31xx-codec 6-0018:aic31xx_set_dae_SYSCLK:不支持的频率11289600
4)[64.036908] ASOC-simple-card Rockchip-I2S-sound: ASOC:Machine HW_params failed:-22
5)[ 64.046777] tlv320aic31xx-codec 6-0018:aic31xx_set_dae_SYSCLK:不支持的频率11289600
6)[64.055464] ASOC-simple-card Rockchip-I2S-sound:ASOC:Machine HW_params failed:-22

3)和4)重复480次。

我想  将 tlv320aic3120音频编解码器与 Linux 连接(内核版本为4.4.194)。 编解码器处于主控模式。

谁可以帮助我?

 此致、

ODA Yosuke

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

    您好!  

    AIC 编解码器似乎不支持11.2896MHz。

    您可以在驱动程序中看到支持的时钟。

    此致。

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

    大家好、  

    根据我的理解、  驱动程序中支持的时钟 如下:

    /*可以通过将 ADC 分频器配置为0来禁用它们*/
    静态常量结构 aic31xx_rate _divs aic31xx_divs[]={
    /* MCLK/p Rate PLL:j d dosr ndac aors nadc mAdc */
    /* 8k 速率*/
    {12000000、8000、8、1920、128、 48、2、128、48、2}、
    {12000000、8000、8、1920、128、 32、3、128、32、3}、
    {1250000、8000、7、8643、128、 48、2、128、48、2}、
    /* 11.025k 速率*/
    {12000000、11025、7、5264、128、 32、2、128、32、2}、
    {12000000、11025、8、4672、128、 24、3、128、24、3}、
    {1250000、11025、7、2253、128、 32、2、128、32、2}、
    /* 16k 速率*/
    {12000000、16000、8、1920、128、 24、2、128、24、2}、
    {12000000、16000、8、1920、128、 16、3、128、16、3}、
    {12500000、16000、7、8643、128、 24、2、128、24、2}、
    /* 22.05k 速率*/
    {12000000、22050、7、5264、128、 16、2、128、16、2}、
    {12000000、22050、8、4672、128、 12、3、128、12、3}、
    {1250000、22050、7、2253、128、 16、2、128、16、2}、
    /* 32k 速率*/
    {12000000、32000、8、1920、128、 12、2、128、12、2}、
    {12000000、32000、8、1920、128、 8、3、128、8、3}、
    {12500000、32000、7、8643、128、 12、2、128、12、2}、
    /* 44.1k 速率*/
    {12000000、44100、7、5264、128、 8、2、128、8、2}、
    {12000000、44100、8、4672、128、 6、3、128、6、3}、
    {12500000、44100、7、2253、128、 8、2、128、8、2}、
    /* 48K 速率*/
    {12000000、48000、8、1920、128、 8、2、128、8、2}、
    {12000000、48000、7、6800、96、 5、4、96、5、4}、
    {12500000、48000、7、8643、128、 8、2、128、8、2}、
    /* 88.2k 速率*/
    {12000000、88200、7、5264、64、 8、2、64、8、2}、
    {12000000、88200、8、4672、64、 6、3、64、6、3}、
    {12500000、88200、7、2253、64、 8、2、64、8、2}、
    /* 96k 速率*/
    {12000000、96000、8、1920、64、 8、2、64、8、2}、
    {12000000、96000、7、6800、48、 5、4、48、5、4}、
    {12500000、96000、7、8643、64、 8、2、64、8、2}、
    /* 176.4k 速率*/
    {12000000、176400、7、5264、32、 8、2、32、8、2}、
    {12000000、176400、8、4672、32、 6、3、32、6、3}、
    {1250000、176400、7、2253、32、 8、2、32、8、2}、
    /* 192k 速率*/
    {12000000、192000、8、1920、32、 8、2、32、8、2}、
    {12000000、192000、7、6800、24、 5、4、24、5、4}、
    {12500000、192000、7、8643、32、 8、2、32、8、2}、
    };

     AIC 编解码器使用 固定时钟(12000000Hz)作为时钟。

    我在 DTS 中设置了输入时钟、如下所示:

    时钟=<&sound_PLL 0>;
    clock_name ="MCLK";

    sound_PLL 是外部固定时钟(&S)。   sound_PLL 的频率 为12000000Hz。

    我不知道频率 11.2896MHz 来自哪里。

    可以帮帮我吗?

    除此之外、  

      错误 列表中出现"ASOC:Speaker DAPM update failed:-6 (ASOC:扬声器 DAPM 更新失败:-6)"。

    您能告诉我如何解决它吗?

    此致。

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

    Yosuke-San、您好!

    您可能需要与 Rockchip 联系、因为该 SOC 提供了时钟。

    此致、

    Peter

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

    尊敬的 Peter:

    连接 到编解码器(tlv320aic3120)的输入时钟 是固定外部振荡器时钟。

    我已经检查了时钟频率。 它的固定频率为12000000Hz。

    我在 DTS 中进行如下设置:

    sound_pll:sound_pll{
    #clock-cells =<0>;
    兼容="固定时钟";
    时钟频率=<12000000>;
    Clock-output-names ="sound_pll";
    状态="正常";
    };

    tlv320aic3120:tlv320aic3120@18{
    兼容="ti、tlv320aic3120";
    状态="正常";
    GPIO-RESET =<&GPIO2 18 GPIO_ACTIVE_LOW_>;
    #sound-di-cells =<0>;
    /*ai31xx-micbias vg =<0>;*/
    reg =<0x18>;
    时钟=<&sound_PLL 0>;
    clock_name ="MCLK";
    /*分配的时钟速率=<12000000>;*/
    /*sys-clock-frequency =<12000000>;*/
    HPVDD-SUPPLY =<&vcc3v3_DSI>;
    SPRVDD-SUPPLY =<&vcc5v0_sys>;
    SPLVDD-SUPPLY =<&vcc5v0_sys>;
    AVDD-SUPPLY =<&vcc3v3_DSI>;
    IOVdd-supply =<&vcc3v3_DSI>;
    DVDD 电源=<_vcio_sd>;
    };

    我没有将 mclock 设置为  11289600。

    根据我的理解、我注意到错误发生 在 SoC-PCM.c 中  

    whitch 为   ALSA_LIB 文件、如下所示。

    静态 int SoC_PCM_HW_params (struct snd_PCM_Substream *子流、
    struct snd_pcm_hw_params *参数)

    struct snd_soc_PCM_runtime* RTD =子流->专用数据;
    struct snd_soc_platform *平台= rtd->平台;
    struct snd_soc_dai * cpu_dai = rtd->cpu_dai;
    int i、ret = 0;

    互斥锁嵌套(&RTD->PCM_互 斥、RTD->PCM_SUBCLASS);

    RET = SoC_PCM_params_Symmetry (子流、params);
    IF (RET)
    转至输出;

    if (RTD->Dai_link->ops && RTD->Dai_link->ops->hw_params){
    RET = RTD->Dae_link->ops->hw_params (子流、params);
    如果(ret < 0){
    DEV_ERR (RTD->卡->DEV、"ASOC:Machine HW_params"
    "失败:%d\n"、ret);
    转至输出;

    .
    输出:
    互斥锁(&RTD->PCM_互 斥);
    回程;

    .

    "RET = RTD->Dae_link->ops->hw_params (子流、params);"

    调用 tlv320aic31xx.c 中的函数 aic31xx_set_dai SYSCLK、如下所示

    静态 int aic31xx_set_da_SYSCLK (struct snd_soc_dai * codec_dai、
    int clk_id、unsigned int freq、int dir)

    struct snd_soc_codec *编解码器= codec_dai ->编解码器;
    struct aic31xx_priv* aic31xx = snd_soc_codec_get_drvdata (codec);
    int i;

    dev_dbg (codec->dev、"#%s:clk_id =%d、freq =%d、dir =%d\n"、
    _func__、clk_id、freq、dir);

    对于(i = 1;freq/i > 20000000 && i < 8;i++)

    if (freq/i > 20000000){
    DEV_ERR (aic31xx->dev、"%s":MCLK 频率过高%u\n"、
    _func__、freq);
    return -EINVAL;

    aic31xx->p_div = i;

    对于(i = 0;i < array_size (aic31xx_divs)&&
    aic31xx_divs[i].MCLK_p!= freq/aic31xx->p_div;i++)

    if (i = array_size (aic31xx_divs)){
    dev_err (aic31xx->dev、"%s":不支持的频率%d\n"、
    _func__、freq);
    return -EINVAL;

    /*将 MCLK、BCLK 或 GPIO1上的时钟设置为 PLL 输入*/
    SND_SoC_UPDATE_Bits (编解码器、AIC31XX_CLKMUX、AIC31XX_PLL_CLKIN_MASK、
    CLK_id << AIC31XX_PLL_CLKIN_SHIFT);

    aic31xx->SYSCLK = freq;
    返回0;

    如上所述、、ALSA_LIB 将默认播放频率设置为
    44100。默认系统时钟设置为 11289600Hz。
    根据它、编解码器的寄存器必须与这个条件匹配。
    编解码器的输入时钟固定为12000000Hz。 我已经设置了寄存器
    以将时钟偏离为11289600Hz。 我想是的时钟  
    应支持编解码器11289600Hz。
    为什么会出现错误?
    可以帮帮我吗?

    此致、

    官方发展援助

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

    Yosuke-San、您好!

    因此、您在来自 OSC 的电路板上有固定的12MHz、这意味着您不能将 MCLK 更改为11.2896MHz。

    因此、使编解码器成为从器件、这样 WCLK 和 BCLK 将来自您的主机。

    如果您已修复12MHz MCLK、则可以将主机设为从机、并应起作用、但我认为该 ALSA aplay 是主机。

    查看此链接、或许它有助于底部的 DTS 配置。

    https://e2e.ti.com/support/audio-group/audio/f/audio-forum/773056/faq-linux-drivers-device-drivers-for-aic31xx-dac31xx-aic325x-aic320x-aic326x-aic321x?tisearch=e2e-sitesearch&keymatch=AIC310x%25252525252525252520Linux%25252525252525252520Driver#

    此致。

    Peter

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

    你(们)好  

    我已将编解码器更改为从器件、 但 仍显示错误"Unsupported frequency 11289600"。

    同时调用函数"SoC_PCM_HW_params"。

    此致。

    官方发展援助

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

    Yosuke-San、您好!

    我认为代码不正确、似乎仍然希望编解码器使用11.2896MHz。

    我不知道此设置的主机和 Linux 端。

    您能否确认它确实是从器件并使用示波器 MCLK、WCLK 和 BCLK 检查时钟频率?

    将寄存器的 i2cdump 发送给我。

    此致、

    Peter

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

    你(们)好

    寄存器的 I2cdump 如下所示:

    linaro@linaro-alip:~$ sudo i2cset -y -f 6 0x18 0x00 0x00
    linaro@linaro-alip:~$ sudo i2cdump -y -f 6 0x18
    未指定大小(使用字节数据访问)
        0 1 2 3 4 5 6 7 8 9 A b c d e f   0123456789abcdef
    00:00 00 01 66 00 11 04 00 30 00 01 00 80 80   ..?f..????????????
    10:08 00 01 80 04 00 00 01 00 00 01 00 01 00   ???? ...?...?
    20:00 00 00 80 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ……?………………………………
    30:00 00 00 02 32 12 03 02 02 11 00 01 04 00 16   ??2??????? ???
    40:0C D8 00 6F 38 00 00 00 00 00 00 10 D8 7e e3?..o8   … ???~?
    50:00 00 80 00 00 00 00 00 7f 00 00 00 00 00 00 00 00 00 00 00 00 00...   ? ?。
    60:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    70:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    80:00 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 00    
    A0:00 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 00    
    C0:00 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 00    
    E0:00 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 00    

    linaro@linaro-alip:~$ sudo i2cset -y -f 6 0x18 0x00 0x01
    linaro@linaro-alip:~$ sudo i2cdump -y -f 6 0x18
    未指定大小(使用字节数据访问)
        0 1 2 3 4 5 6 7 8 9 A b c d e f   0123456789abcdef
    00:01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00..........    
    10:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06    ?
    20:46 3E 00 7f 7f ff 7f 02 00 01 20 86 00 80   F>..??????? ???
    30:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    40:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    50:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    60:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    70:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    80:00 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 00    
    A0:00 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 00    
    C0:00 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 00    
    E0:00 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 00    

    DTS 如下所示:

    Rockchip_I2S_SOUND:Rockchip-I2S-sound{
      状态="正常";                   
      兼容="简单音频卡";
      simple-audio-card、name ="Rockchip、Rockchip-I2S-sound";
      simple-audio-card、format ="I2S";
                   simple-audio-card、bitclock-master =<&snd_master>;   
                   simple-audio-card、frame-master =<&snd_master>;
                   /*简单音频卡,位时钟反转;*/
      /*simple-audio-card, convert rate =<48000>;*/                
      simple-audio-card、MCLK-FS =<256>;
      
                   simple-audio-card、小工具=
            "麦克风"、"麦克风插孔"、
                          "扬声器"、"扬声器";
                  
                   简单音频卡,路由=
            "MIC1LP"、"麦克风插孔"、
            "MIC1RP"、"麦克风插孔"、
                          "扬声器"、"SPK";
      snd_master:simple-audi-card、CPU{                                
       Sound-Dai =<&i2s0>;
                           /*sys-clock-frequency =<12000000>;*/                          
      };                                                     
      简单音频卡、编解码器{                              
       sound-dai =<&tlv320aic3120>;
       /*Clocks =<&sound_PLL 0>;*/
                           /*sys-clock-frequency =<12000000>;*/                  
      };                                                     
     };

    i2s0{(&I)
     状态="正常";
           FSL、MODE ="I2S-MASTER";  
           #sound-di-cells =<0>;
         };

    i2c6{(&I)
     状态="正常";
           /*clock-frequency =<100000 >;*/
           tlv320aic3120:tlv320aic3120@18{
      兼容="ti、tlv320aic3120";
                   状态="正常";
      GPIO-RESET =<&GPIO2 18 GPIO_ACTIVE_LOW_>;
      #sound-di-cells =<0>;
                   /*ai31xx-micbias vg =<0>;*/
      reg =<0x18>;
                   /*Clocks =<&sound_PLL 0>;*/
                   /*clock_name ="MCLK";*/
                   /*分配的时钟速率=<12000000>;*/
      /*sys-clock-frequency =<12000000>;*/
                   HPVDD-SUPPLY =<&vcc3v3_DSI>;
      SPRVDD-SUPPLY =<&vcc5v0_sys>;
      SPLVDD-SUPPLY =<&vcc5v0_sys>;
      AVDD-SUPPLY =<&vcc3v3_DSI>;
      IOVdd-supply =<&vcc3v3_DSI>;
      DVDD 电源=<_vcio_sd>;   
     };
    };

    我想使用 bclock 作为输入时钟。

    但我未能将寄存器 4 (0x04)设置为0x01。

    可以帮帮我吗?

    此致、

    官方发展援助

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

    Yosuke-San、您好!

    从寄存器转储中、编解码器处于从模式。 音频时钟来自 MCLK、PLL 被禁用。

    对于从 BCLK 获取的 CODEC CLKIN、您应该能够将寄存器0x04设置为0x01。  

    如果无法设置、请检查 I2C 事务以进行确认。 当您写入该值时、应该有一个 ACK、除非事务发生错误。

    下面是一个将 PLL 时钟设置为从11.2896MHz 或1.4112MHz 提供44.1kHz 的示例。

    如果您想使用 PRB、请查看数据表、因为有推荐的 OSR。

    此致、

    Peter

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

    你(们)好

    我已修改  文件 tlv320aic31xx.c 中的结构 reg_default aic31xx_reg_defaults,

    但我修改的值没有设置到编解码器的寄存器。

    我想知道如何 通过修改 aic31xx_reg_defaults 来设置编解码器的寄存器。

    此致、

    官方发展援助

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

    你(们)好

    我已修改  文件 tlv320aic31xx.c 中的结构 reg_default aic31xx_reg_defaults,

    但我修改的值没有设置到编解码器的寄存器。

    我想知道 如何 通过修改 aic31xx_reg_defaults 来设置编解码器的寄存器。

    (I2C 转换正常、我已 通过示波器进行检查。)

    此致、

    官方发展援助

     

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

    Yosuke-San、您好!

    我不知道您的系统是如何配置编解码器的。

    这些是 I2C 接口、因此您应该发送 I2C 事务、以 相应地配置寄存 器并通过示波器进行确认。

    此致、

    Peter

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

    你(们)好

    我成功地配置了我的编解码器系统、但当我使用命令"aplay"来播放 PCM 文件时。

    发生写入/读取错误。 你能告诉我从玩耍到停止的过程。

    此致、

    Peter

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

    你(们)好

    我成功地配置了我的编解码器系统、但当我使用命令"aplay"来播放 PCM 文件时。

    发生写入/读取错误。 你能告诉我从玩耍到停止的过程。

    此致、

    Peter

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

    你(们)好

    我成功地配置了我的编解码器系统、但当我使用命令"aplay"来播放 PCM 文件时。

    发生写入/读取错误。 你能告诉我从玩耍到停止的过程。

    此致、

    Peter

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

    Yosuke-San、您好!

    我不熟悉 Linux 声音 架构、您可能可以从 Web 上找到这些信息。

    此致、

    Peter

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

    你(们)好

    当编解码器处于从模式时、我想使用外部时钟作为编解码器的输入时钟。

    mclock 与 I2S 时钟(Bclock 和 Wclock)不同步。

    mclock 需要编解码器的哪个输入 来 与数据事务时钟同步吗?

    此致、

    官方发展援助

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

    Yosuke-San、您好!

    是的、您应该同步它们。

    此致、

    Peter

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

    你(们)好

    我使用从 tlv320aic3120演示板中读取的 init config 文件初始化编解码器。

    init 的结果如下所示:

    第0页:

    linaro@linaro-alip:~$ sudo i2cdump -y -f 6 0x18
    未指定大小(使用字节数据访问)
        0 1 2 3 4 5 6 7 8 9 A b c d e f   0123456789abcdef
    00:00 00 01 66 07 91 20 00 00 00 00 84 00 80 80   ??f? ????
    10:08 00 84 80 04 00 00 01 00 00 10 00   ???? ...?...?
    20:00 00 00 80 bb 11 e0 00 00 00 00 00 00 00 00   00。。。???。。
    30:00 00 00 02 32 12 02 02 02 11 10 00 0b 04 00 d6   ……?2???????? ???
    40:0C 30 00 38 00 00 00 00 08 9d 10 CD 7e E3   ?00...8...???~
    50:00 00 90 1b 00 00 00 00 00 7f 00 00 00 00 00 00 00 00 00 00 00...   ?...?
    60:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    70:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    80:00 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 00    
    A0:00 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 00    
    C0:00 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 00    
    E0:00 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 00    

    第1页:

    linaro@linaro-alip:~$ sudo i2cdump -y -f 6 0x18
    未指定大小(使用字节数据访问)
        0 1 2 3 4 5 6 7 8 9 A b c d e f   0123456789abcdef
    00:01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00..........    
    10:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 C6    ?
    20:C6 4e 00 70 00 80 7f 0f 02 19 01 20 86 0b C3   »N..p.??????? ???
    30:FC 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ?0..........
    40:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    50:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    60:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    70:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
    80:00 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 00    
    A0:00 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 00    
    C0:00 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 00    
    E0:00 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 00    

    当我将 PCM 日期发送到编解码器时、数据成功

    发送到编解码器、但扬声器无法播放。

    可以帮帮我吗?

    此致、

    官方发展援助

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

    Yosuke-San、您好!

    我看到您正在使用 BCLK 作为 PLL 的输入、并且我已经检查了上面的设置。

    您需要修改  在 AIC3120_I2C_102921选项卡下的附加工作表中以红色突出显示的寄存器数据。

    您可以滚动到该单元格、它将向您显示要更改的内容。

    该设置、尤其是与 PLL 相关的分频器基于1.4112MHz (16位深度和44.1kHz)的 BCLK、PLL 计算器会显示相应的分频器以提供44.1kHz 采样。 请参见下面的。  

    我已使用来自数字接口的数据启用 SPKR 和 HPOUT 输出。

    e2e.ti.com/.../AIC3120_5F00_i2c.xlsx

    此致、

    Peter