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.

[参考译文] TLV320AIC3206EVM-U:关于混频器控制。

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1094336/tlv320aic3206evm-u-about-mixer-control

器件型号:TLV320AIC3206EVM-U
主题中讨论的其他器件:TLV320AIC3206PCM1780

您好!

我以前曾尝试过 STM32MP157D-DK1和 PCM1780。 但是、我无法解决问题、因此我将器件更改为 TLV320AIC3206。

使用示例器件树作为参考、我为 STM32MP157D 和 TLV320AIC3206构建了"简单音频卡"器件树。

I/F:i2c4 & sa.1

--------

STM32MP> i2c DEV 0
 将总线设置为0
STM32MP> i2c 探针
 有效芯片地址:18 33
STM32MP> i2c 总线0
 总线0:I2C@5c002000 (有效0)
 33:stpmic@33、偏移 len 1、标志0

 18:generic_18、偏移 len 1、标志0 // TLVC320AIC3206
STM32MP> i2c MD 18 32 10.
 0032:00 00 12 03 02 00 00 01 00 14 0c 00
STM32MP> i2c MW 18 34 01
STM32MP> i2c MD 18 32 10.
 0032:00 01 12 01 00 00 00 00 01 01 00 14 0c D8…

--------

我可以通过 i2c 从 u-boot 控制台访问 TLV320AIC3206。

从 Linux 终端尝试混频器控制失败。
您是否知道此问题的原因是什么?

[3.609648] ALSA 器件列表:
[3.611159]未找到声卡。
[70.881989] ASOC-simple-card sound:tlv320aic32x4-hifi <-> 4400a004.audio-controller 映射正常

$alsamixer
无法加载混合器控件:不允许操作
$ amixer -c0
amixer:Mixer HW:0加载错误:不允许操作

$ sudo i2cdetect -y 0
0 1 2 3 4 5 6 7 8 9 A b c d e f
00:------------ ------
10:------------ ------ UU -------------- ----
20:------------ ------------ ------------ --
30:---- UU -------------- ------------ ----
40:------------ ------------ ------------ --
50:---------- ------------ ------------ --
60:------------ ------------ ------------ --
70:------------ ------

谢谢、

西村

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

    你(们)好

    检查  ti 和 cs 之间时钟名称的差异。

    对于 TI:

    时钟名称="MCLK";

    用于 CS

    时钟名称="MCLK";  

     是 IT 资本吗?

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

    您好!

    我只需要音频回放。
    由于 CS 是评估板、因此它具有一些不需要捕捉的功能。
    我已经尝试将时钟名称更改为"MCLK"。
    此设置将导致错误。 "MCLK"路由似乎失败。

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

    请在 alsa 端代码中添加一些日志以检查 .set_SYSCLK 为何不调用。 这可以帮助我们了解 不 会每次调用 SET_SYSCLK 的原因。

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

    您好!

    我认为 MCLK-FS 解决了这个问题。
    我发现"简单音频卡"和"音频图形卡"之间的器件树结构有很大差异。
    我检查了 simple-card.c、simple-card-utils.c、audio-graph-card.c 文件并定义了"MCLK-FS"。

    在执行 aplay 命令后设置时钟、但 aic32x4_setup_clocks ()无法调整。

    [127.289000] WVC:su:ASOC_SIMPLE_STARTUP ()
    [127.2905] WVC:su:ASOC_simple_clk_enable () dai = 1
    [127.297696] WVC:su:ASOC_SIMPLE_clk_enable () DAI=1
    播放波'loop3.wav':有符号16位 L
    [127.308711] WVC:su:ASOC_SIMPLE_HW_params()启动 MCLK_FS=0,DAI_PROps->MCLK_FS=256
    [127.316182] WVC:su:ASOC_SIMPLE_HW_params () MCLK_FS=256
    [127.3263] WVC:su:ASOC_SIMPLE_HW_params () ASOC_SIMPLE_SET_clk_rate (DAI_PROps->CODEC_DAI)
    [127.329757] WVC:su:ASOC_SIMPLE_SET_clk_RATE ()
    [127.334139] WVC:su:ASOC_SIMPLE_HW_params () ASOC_SIMPLE_SET_clk_rate (DAI_PROps->CPU_DAI)
    [127.342284] WVC:su:ASOC_SIMPLE_SET_clk_rate ()
    [127.346678] WVC:su:ASOC_SIMPLE HW_params () snd_soc_da_set_SYSCLK (codec_dai、snd_SOC_clock_in)
    [127.3555525] asoc tlv320aic32x4编解码器驱动程序:aic32x4_set_dai SYSCLK () clk_id=0、freq=11289600、dir=0
    [127.364818] asoc tlv320aic32x4编解码器驱动程序:aic32x4_set_dai SYSCLK () clk_set_rate ret=0
    [127.373054] WVC:su:ASOC_SIMPLE HW_params () snd_soc_da_set_SYSCLK (cpu_dai、snd_osc_clock_out)
    [127.381698] WVC:STM32_SAI_SET_SYSCLK () clk_id=0、freq=11289600、dir=1、1.
    [127.388529] WVC:STM32_SAI_SET_SYSCLK ()(dir = snd_SOC_clock_out && SAI_MCLK)
    [127.396085] WVC:STM32_SAI_SET_SYSCLK () STM32_SAI_SUB_REG_UP
    [127.401864] WVC:STM32_SAI_SUB_REG_UP () reg=0x0、MASK=0x80000、val=0x0
    [127.408351] WVC:STM32_SAI_SUB_REG_UP () clk_enable 成功
    [127.413774] WVC:STM32_SAI_SUB_REG_UP () regmap_update_bits
    [127.419331] WVC:STM32_SAI_SUB_readable_reg () reg=0x0、true
    [127.424846] WVC:STM32_SAI_SUB_volatile () reg=0x0、false
    [127.430508] WVC:STM32_SAI_SUB_readable_reg () reg=0x0、true
    [127.436084] WVC:STM32_SAI_SUB_volatile_reg () reg=0x0、false
    [127.441751] WVC:STM32_SAI_SUB_writeable_reg () reg=0x0、true
    [127.447414] WVC:STM32_SAI_SUB_readable_reg () reg=0x0、true
    [127.452991] WVC:STM32_SAI_SUB_volatile_reg () reg=0x0、false
    [127.458823] WVC:STM32_SAI_SUB_REG_UP () clk_disable
    [127.463547] WVC:STM32_SAI_SET_SYSCLK () STM32_SAI_SET_parent_clock
    [127.469820] WVC:STM32_SAI_SET_parent_clock ()
    [127.474095] WVC:STM32_SAI_MCLK_recalc_rate () MCLK->freq=0、MCLK->SAI_DATA->MCLK_RATE=0
    [127.482280] WVC:STM32_SAI_MCLK_recalc_rate () MCLK->freq=0、MCLK->SAI_DATA->MCLK_RATE=0
    [127.490222] WVC:STM32_SAI_SET_SYSCLK () clk_Set_RATE_Exclusive
    [127.495957] WVC:STM32_SAI_MCLK_ROUND ()
    [127.500288] WVC:STM32_SAI_GET_clk_div ()
    [127.504151] WVC:STM32_SAI_MCLK_ROUND ()
    [127.508476] WVC:STM32_SAI_GET_clk_div ()
    [127.512347] WVC:STM32_SAI_MCLK_SET_RATE () RATE = 11290699、parent_RATE = 11290699
    [127.519637] WVC:STM32_SAI_GET_clk_div ()
    [127.52394] WVC:STM32_SAI_MCLK_SET_RATE () div=1
    [127.528109] WVC:STM32_SAI_SET_clk_div () div=1
    [127.532718] WVC:STM32_SAI_SUB_REG_UP () reg=0x0、MASK=0x3f00000、val=0x100000
    [127.539810] WVC:STM32_SAI_SUB_REG_UP () clk_enable 成功
    [127.545188] WVC:STM32_SAI_SUB_REG_UP () regmap_update_bits
    [127.550736] WVC:STM32_SAI_SUB_readable_reg () reg=0x0、true
    [127.556258] WVC:STM32_SAI_SUB_volatile_reg () reg=0x0、false
    [127.561921] WVC:STM32_SAI_SUB_readable_reg () reg=0x0、true
    [127.567497] WVC:STM32_SAI_SUB_volatile_reg () reg=0x0、false
    [127.573163] WVC:STM32_SAI_SUB_writeable_reg () reg=0x0、true
    [127.578827] WVC:STM32_SAI_SUB_readable_reg () reg=0x0、true
    [127.584403] WVC:STM32_SAI_SUB_volatile_reg () reg=0x0、false
    [127.590244] WVC:STM32_SAI_SUB_REG_UP () clk_disable
    [127.594963] WVC:STM32_SAI_MCLK_recalc_rate () MCLK->freq=11290699、MCLK->SAI_DATA->MCLK_RATE=0
    [127.60368] WVC:STM32_SAI_SET_SYSCLK () SAI->MCLK_RATE = 0、freq=11289600
    [127.610463] WVC:STM32_SAI_SET_SYSCLK ()结束
    [127.614436] WVC:su:ASOC_SIMPLE_HW_params ()通过
    [127.619131] ASOC tlv320aic32x4编解码器驱动程序:aic32x4_hw_params()启动
    [127.625788] params_channels (params)=2、params_rate (params)=44100、params_width (params)=16

    [127.637123] asoc tlv320aic32x4编解码器驱动程序:aic32x4_setup_Clocks () sample_rate =44100
    [127.645144] ASOC tlv320aic32x4编解码器驱动程序:aic32x4_setup_Clocks () devm_clk_bulk_get 0
    [127.653218] asoc tlv320aic32x4编解码器驱动程序:aic32x4_setup_Clocks() sample_rate <= 48000

    [127.661518] asoc tlv320aic32x4编解码器驱动程序:aic32x4_set_processing_blocks()

    脆性 en

    [127.670030] asoc tlv320aic32x4编解码器驱动程序:aic32x4_setup_Clocks () mAdc=2,max_dosr=136,min_dosr=56,max_nadc=9

    [127.680106]在内核中将零除。
    [127.683670] CPU:0 PID:8105 Comm:aplay not intas. 5.4.56 #96
    [127.689588]硬件名称:STM32 (设备树支持)
    [127.694763][ ](展开回扫)从[ ](show_stack+0x10/0x14)
    [127.702497][ ](show_stack)从[ ](dump_stack+b0/0xc4)
    [127.709731][ ](dump_stack)从[ ](Ldiv0_64+0x8/0x18)
    [127.716703][ ](Ldiv0_64)从[ ](clk_aic32x4_pll_calc_muldiv+0xe8/0x134)
    [127.725329][ ](clk_aic32x4_pll_calc_muldiv)、从[ ](clk_aic32x4_pll_round_rate + 0x2C/0x68)
    [127.735439][ ](clk_aic32x4_pll_round_rate)、来自[ ](clk_core_determine、round_nolock.part.0+0x44/0x60)
    [127.746503][ ](clk_core_determine round_nolock.part.0)从[ ](clk_round_rate + 0x5c/0xe0)
    [127.756524][ ](clk_round_rate)、来自[ ](aic32x4_setup_Clocks+0x394/0x59c)
    [127.765154][ ](aic32x4_setup_Clocks)、来自[ ](aic32x4_hw_params+0x54/0xcc)
    [127.773872][ ](aic32x4_hw_params)、来自[ ](snd_soc Dai_hw_params+0x5c/0xa4)
    [127.782672][ ](snd_soc_da_hw_params)从[ ](SoC_PCM_HW_params+0x248/0x5b4)
    [127.791646][ ](SoC_PCM_HW_params)从[ ](SND_PCM_HW_params+0x118/0x388)
    [127.800274][ ](snd_pcm_hw_params)、来自[ ](snd_pcm_common_ioctl+0x250/0x1118)
    [127.809252][ ](snd_pcm_common_ioctl)、来自[ ](do_vfs_ioctl+0x404/0x7c8)
    [127.817706][ ](do _vfs_ioctl)、从[ ](ksys_ioctl+0x34/0x60)
    [127.825111][ ](ksys_ioctl)从[ ](RET_FAST_SYSCALL +0x0/0x54)
    [127.832772]异常堆栈(0xdf759fa8至0xdf759ff0)
    [127.837832] 9fa0:bed22620 0048cd98 00000004 c25c4111 bed22620 0002000e
    [127.846024] 9fc0:bed22620 0048cd98 0048cd48 00000036 bed22250 004823f8 bed22260 0000ac44
    [127.854211] 9fe0:b6f53844 bed22184 b6eed02b b6e1d418

    [127.859731] ASOC tlv320aic32x4编解码器驱动程序:aic32x4_setup_Clocks () clk_round_rate faild.
    ・・・μ A
    [143.637617] asoc tlv320aic32x4编解码器驱动程序:aic32x4_setup_Clocks ()无法设置时钟以支持采样率。
    [143.648127] tlv320aic32x4 0-0018:无法设置时钟以支持采样率。
    [143.655899] asoc tlv320aic32x4编解码器驱动程序:aic32x4_hw_params()成功

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

    恭喜你迈出了重要的一步。 请分享您在设备树中所做的更改。

    请先尝试48kHz wav 文件。 让我们检查一下是否存在相同的问题。

    还可以在 aic32x4_setup_Clocks 中添加更多日志、以检查其导致问题的原因。 似乎平台不支持要设置的 clk。

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

    您好!

    失败的原因似乎是以下代码未通过。
     if (clk_round_rate (时钟[0].clk、DAC_clock_rate)= 0){
     }

    您是否知道确保此设置正常的简单方法?
     RET = devm_clk_bulk_get (component->dev、array_size (时钟)、时钟);

    我更改了器件树设置。
    /{
    声音:声音{//返回页首
    兼容="简单音频卡";
    simple-audio-card、name ="IoTGateway-S";
    simple-audio-card、format ="I2S";
    simple-audio-card、MCLK-FS =<256>;
    simple-audio-card、bitclock-master =<&dailink0_master>;
    simple-audio-card、frame-master =<&dailink0_master>;
    simple-audio-card、小工具=
    "线路"、"线路输入"、
    "线路"、"线路输出"、
    "耳机"、"耳机";
    简单音频卡,路由=
    "IN1_L"、"线路输入"、
    "IN1_R"、"线路输入"、
    "线路输出"、"LOL"、
    "线路输出"、"左"、
    "耳机"、"HPL"、
    "耳机"、"HPR";

    状态="正常";

    simple-audio-card、CPU{// CPU
    Sound-Dai =<?Saa1a 0>;
    };

    dailink0_master:simple-audio-card、codec{// codec
    sound-dai =<&tlv3206_codec>;
    时钟=<&RCC SAI1_K>;
    系统时钟方向输出="OUT";
    da-tdm-slot-num =<2>;
    da-tdm-slot-width =<32>;
    };
    };
    };

    i2c4{(&I)
    pinctrl-names ="default"、"sleep";
    pinctrl-0 =<&i2c4_PINs_a>;
    pinctrl-1 =<&i2c4_PINS_SLEEP_A>;
    I2C-SCL-rising-time-ns =<185>;
    I2C-SCL-Falling-time-ns =<20>;
    时钟频率=<400000>;
    状态="正常";
    /delete-property/DMA;
    /delete-property/dma-names;

    tlv3206_codec:tlv320aic32x6@18{
    兼容="ti、tlv320aic32x6";
    #sound-da-cells =<0>;
    reg =<0x18>;
    时钟=<(&S) 1a>;
    时钟名称="MCLK";
    IOV-supply =<_v3v3>;
    ldoin_supply =<_v1v8_audio>;
    dV-supply =<_v1v8_audio>;
    AV-SUPPLY =<_v1v8_AUDIO_>;
    状态="正常";
    };
    };

    Saa1{(&S)
    时钟=<&RCC SAI1>、<&RCC PLL3_Q>、<&RCC PLL3_R>;
    时钟名称="pclk"、"x8k"、"x11k";
    pinctrl-names ="default"、"sleep";
    pinctrl-0 =<&sa1a_pins_a>;
    pinctrl-1 =<&sa1a_sleep_pins_a>;
    状态="正常";

    Saa1a:音频控制器@4400a004{
    #clock-cells =<0>;
    dma-names ="TX";
    时钟=<&RCC SAI1_K>;//
    时钟名称="SAI_CK";
    状态="正常";
    };
    };

    谢谢、

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

    您好!

    我尝试了一个48kHz wav 文件。
    问题与44.1kHz 类似。
    存在问题、因为在以下位置、parent_rate 为0。

    tlv320aic32x4-clk.c
     clk_aic32x4_pll_calc_muldiv (){
      do_div (乘法器、parent_rate);

    日志;
    root@arm:/home/debian/wav# aplay st005.wav
    [34967537] WVC:STM32_SAI_STARTUP ()
    [34969682] WVC:STM32_SAI_SUB_REG_Wr () reg=0x18、MASK=0x7f、val=0x7f
    [34976222] WVC:STM32_SAI_SUB_readable_reg () reg=0x18、true
    [349981779] WVC:STM32_SAI_SUB_volatile () reg=0x18、false
    [349987528] WVC:STM32_SAI_SUB_readable_reg () reg=0x18、true
    [349993191] WVC:STM32_SAI_SUB_volatile () reg=0x18、false
    [349998946] WVC:STM32_SAI_SUB_writeable_reg () reg=0x18、true
    [350.004696] WVC:STM32_SAI_SUB_readable_reg () reg=0x18、true
    [350.010360] WVC:STM32_SAI_SUB_volatile_reg () reg=0x18、false
    [350.016215] WVC:STM32_SAI_SUB_REG_UP () reg=0x10、MASK=0x7f、val=0x61
    [350.022572] WVC:STM32_SAI_SUB_REG_UP () clk_enable 成功
    [350.028158] WVC:STM32_SAI_SUB_REG_UP () regmap_update_bits
    [350.033547] WVC:STM32_SAI_SUB_readable_reg () reg=0x10、true
    [350.039209] WVC:STM32_SAI_SUB_volatile_reg () reg=0x10、false
    [350.044961] WVC:STM32_SAI_SUB_readable_reg () reg=0x10、true
    [350.050624] WVC:STM32_SAI_SUB_volatile_reg () reg=0x10、false
    [350.056378] WVC:STM32_SAI_SUB_writeable_reg () reg=0x10、true
    [350.062129] WVC:STM32_SAI_SUB_readable_reg () reg=0x10、true
    [350.067792] WVC:STM32_SAI_SUB_volatile () reg=0x10、false
    [350.073644] WVC:STM32_SAI_SUB_REG_UP () clk_disable
    [350.078512] WVC:su:ASOC_SIMPLE_STARTUP ()
    [350.082437] WVC:su:ASOC_simple_clk_enable () dai = 1
    [350.087336] WVC:su:ASOC_SIMPLE _clk_enable () DAI=1

    播放波的005.wav':有符号24位小端字节序,3字节,速率48000 Hz,立体声

    [350.099433] WVC:su:ASOC_SIMPLE_HW_params ()启动 MCLK_FS=0、DAI_PROps->MCLK_FS=256
    [350.107208] WVC:su:ASOC_SIMPLE_HW_params () MCLK_FS=256
    [350.112147] WVC:su:ASOC_simple_hw_params () ASOC_simple_set_clk_rate (dai props->codec_dai)
    [350.121391] WVC:su:ASOC_SIMPLE_SET_clk_RATE ()
    [350.12566] WVC:su:ASOC_SIMPLE HW_params () ASOC_SIMPLE 设置 clk_rate (dai props->cpu_dai)
    [350.133684] WVC:su:ASOC_SIMPLE_SET_clk_rate ()
    [350.138191] WVC:su:ASOC_SIMPLE_HW_params () snd_soc_da_set_SYSCLK (codec_dai、snd_SOC_clock_in)
    [350.146937] WVC:tlv320aic32x4;aic32x4_SET_DAI_SYSCLK () clk_id=0、freq=12288000、dir=0
    [350.155145] WVC:tlv320aic32x4;aic32x4_SET_DAI_SYSCLK () clk_set_rate ret=0
    [350.161829] WVC:su:ASOC_SIMPLE HW_params () snd_soc_da_set_SYSCLK (cpu_dai、snd_SOC_clock_out)
    [350.170575] WVC:STM32_SAI_SET_SYSCLK () clk_id=0、freq=12288000、dir=1、1.
    [350.177329] WVC:STM32_SAI_SET_SYSCLK ()(dir = snd_SOC_clock_out && SAI_MCLK)
    [350.185041] WVC:STM32_SAI_SET_SYSCLK () STM32_SAI_SUB_REG_UP
    [350.190590] WVC:STM32_SAI_SUB_REG_UP () reg=0x0、MASK=0x80000、val=0x0
    [350.197269] WVC:STM32_SAI_SUB_REG_UP () clk_enable 成功
    [350.202614] WVC:STM32_SAI_SUB_REG_UP () regmap_update_bits
    [350.208240] WVC:STM32_SAI_SUB_readable_reg () reg=0x0、true
    [350.213682] WVC:STM32_SAI_SUB_volatile_reg () reg=0x0、false
    [350.219344] WVC:STM32_SAI_SUB_readable_reg () reg=0x0、true
    [350.224919] WVC:STM32_SAI_SUB_volatile_reg () reg=0x0、false
    [350.230587] WVC:STM32_SAI_SUB_writeable_reg () reg=0x0、true
    [350.236251] WVC:STM32_SAI_SUB_readable_reg () reg=0x0、true
    [350.241828] WVC:STM32_SAI_SUB_volatile_reg () reg=0x0、false
    [350.247641] WVC:STM32_SAI_SUB_REG_UP () clk_disable
    [350.252385] WVC:STM32_SAI_SET_SYSCLK () STM32_SAI_SET_parent_clock
    [350.258656] WVC:STM32_SAI_SET_parent_clock ()
    [350.262928] WVC:STM32_SAI_SET_SYSCLK () clk_set_rate _exclusive
    [350.26881] WVC:STM32_SAI_MCLK_ROUND ()
    [350.273069] WVC:STM32_SAI_GET_clk_div ()
    [350.277047] WVC:STM32_SAI_MCLK_ROUND ()
    [350.281228] WVC:STM32_SAI_GET_clk_div ()
    [350.285250] WVC:STM32_SAI_MCLK_SET_RATE () RATE = 12286937、parent_RATE = 24573875
    [350.292384] WVC:STM32_SAI_GET_clk_div ()
    [350.296381] WVC:STM32_SAI_MCLK_SET_RATE () div=2
    [350.300929] WVC:STM32_SAI_SET_clk_div () div=2
    [350.305446] WVC:STM32_SAI_SUB_REG_UP () reg=0x0、MASK=0x3f00000、val=0x200000
    [350.312523] WVC:STM32_SAI_SUB_REG_UP () clk_enable 成功
    [350.318071] WVC:STM32_SAI_SUB_REG_UP () regmap_update_bits
    [350.32363] WVC:STM32_SAI_SUB_readable_reg () reg=0x0、true
    [350.329076] WVC:STM32_SAI_SUB_volatile_reg () reg=0x0、false
    [350.334741] WVC:STM32_SAI_SUB_readable_reg () reg=0x0、true
    [350.340318] WVC:STM32_SAI_SUB_volatile_reg () reg=0x0、false
    [350.345985] WVC:STM32_SAI_SUB_writeable_reg () reg=0x0、true
    [350.351649] WVC:STM32_SAI_SUB_readable_reg () reg=0x0、true
    [350.357225] WVC:STM32_SAI_SUB_volatile_reg () reg=0x0、false
    [350.363034] WVC:STM32_SAI_SUB_REG_UP () clk_disable
    [350.36775] WVC:STM32_SAI_MCLK_recalc_rate () MCLK->freq=12286937、MCLK->SAI_DATA->MCLK_RATE=0
    [350.376488] WVC:STM32_SAI_SET_SYSCLK () SAI->MCLK_RATE=0、freq=12288000
    [350.383027] WVC:STM32_SAI_SET_SYSCLK ()结束
    [350.387299] WVC:su:ASOC_SIMPLE_HW_params ()通过
    [350.391836] WVC:tlv320aic32x4;aic32x4_hw_params () start
    [350.397311] params_channels (params)=2、params_rate (params)=48000、params_width (params)=32
    [350.408613] WVC:tlv320aic32x4;aic32x4_setup_Clocks () sample_rate = 48000
    [350.415325] WVC:tlv320aic32x4;aic32x4_setup_Clocks () clocks.id=PLL、clk=afde89f3
    [350.42338] WVC:tlv320aic32x4;aic32x4_setup_clocks () clocks.id=nadc、clk=8722a559
    [350.431814] WVC:tlv320aic32x4;aic32x4_setup_clocks () clocks.id=mAdc、clk=db063d60
    [350.440041] WVC:tlv320aic32x4;aic32x4_setup_Clocks () clocks.id=ndac、clk=a5f68547
    [350.448277] WVC:tlv320aic32x4;aic32x4_setup_Clocks () clocks.id=MDAC、clk=054d83ff
    [350.456578] WVC:tlv320aic32x4;aic32x4_setup_clocks () clocks.id=bdiv、clk=df38ab58
    [350.464783] WVC:tlv320aic32x4;aic32x4_setup_Clocks () devm_clk_bulk_get pass ret = 0
    [350.472505] WVC:tlv320aic32x4;aic32x4_setup_Clocks () sample_rate <=48000
    [350.479330] WVC:tlv320aic32x4;aic32x4_set_processing_blocks ()
    [350.486613] WVC:tlv320aic32x4;aic32x4_set_processing_blocks () snd_soc_component_write (reg=3D、val=1)
    [350.49673] WVC:tlv320aic32x4;aic32x4_set_processing_blocks () snd_soc_component_write (reg=3c、v=1)
    [350.506030] WVC:tlv320aic32x4;aic32x4_setup_Clocks () aic32x4_set_processing_blocks (1、1)
    [350.514217] WVC:tlv320aic32x4;aic32x4_setup_Clocks ()开始调整 mAdc=2、max_dosr=128、min_dosr=56、max_nadc=8
    [350.524904] WVC:tlv320aic32x4;aic32x4_setup_Clocks () clk_round_rate PLL DAC_clock_rate = 98304000
    [350.533732] WVC:clk;clk_round_rate () clk->dev_id=0-0018、clk->con_id=PLL、clk->min_rate = 0、clk->max_rate = 4294967295、 比率= 98304000
    [350.545788] WVC:clk;clk_round_rate () clk_prepare_lock
    [350.550897] WVC:clk;clk_round_rate () clk->Excluse_count1=0
    [350.556826] WVC:clk;clk_round_rate () clk_core_get_Boundaries
    [350.562576] WVC:clk;clk_round_rate () req.rate = 98304000
    [350.568016] WVC:clk;clk_round_rate () clk_core_round_rate nolock
    [350.573992] WVC:clk;clk_core_round_RATE_nolock () lockdep_assert_held
    [350.580604] WVC:clk;clk_core_round_rate_nolock () clk_core_init_rate_req
    [350.58739] WVC:clk;clk_core_round_rate _nolock () clk_core_determine round_nolock
    [350.594955] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_round_rate ()比率=98304000,parent_rate = 0
    [350.603629] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_calc_muldiv ()比率=98304000,parent_rate = 0
    [350.612489] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_calc_muldiv()设置->p=1
    [350.619981] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_calc_muldiv ()乘法器=983040000000
    [350.628337]在内核中除以零。
    [350.632141] CPU:1 PID:8086 Comm:aplay not intas5.4.56 #125
    [350.638143]硬件名称:STM32 (设备树支持)
    [350.643319][ ](展开回扫)从[ ](show_stack+0x10/0x14)
    [350.651054][ ](show_stack)从[ ](dump_stack+b0/0xc4)
    [350.658288][ ](dump_stack)从[ ](Ldiv0_64+0x8/0x18)
    [350.665260][ ](Ldiv0_64)从[ ](__div64_32+0x14/0x20)
    [350.672319][ ](__div64_32)、来自[ ](clk_aic32x4_pll_calc_muldiv+0xc4/0x198)
    [350.681121][ ](clk_aic32x4_pll_calc_muldiv)、从[ ](clk_aic32x4_pll_round_rate + 0x44/0xa0)
    [350.691235][ ](clk_aic32x4_pll_round_rate)、来自[ ](clk_core_determine、round_nolock.part.0+0x44/0x60)
    [350.703301][ ](clk_core_determine round_nolock.part.0)从[ ](clk_round_rate + 0x88/0x288)
    [350.712409][ ](clk_round_rate)、来自[ ](aic32x4_setup_Clocks+0x3c8/0x5e4)
    [350.721037][ ](aic32x4_setup_Clocks)、来自[ ](aic32x4_hw_params+0x54/0xcc)
    [350.729756][ ](aic32x4_hw_params)、来自[ ](snd_soc Dai_hw_params+0x5c/0xa4)
    [350.738559][ ](snd_soc_da_hw_params)从[ ](SoC_PCM_HW_params+0x248/0x5b4)
    [350.747535][ ](SoC_PCM_HW_params)从[ ](SND_PCM_HW_params+0x118/0x388)
    [350.756164][ ](snd_pcm_hw_params)、来自[ ](snd_pcm_common_ioctl+0x250/0x1118)
    [350.765144][ ](snd_pcm_common_ioctl)、来自[ ](do_vfs_ioctl+0x404/0x7c8)
    [350.773599][ ](do _vfs_ioctl)、从[ ](ksys_ioctl+0x34/0x60)
    [350.781006][ ](ksys_ioctl)从[ ](RET_FAST_SYSCALL +0x0/0x54)
    [350.788670]异常堆栈(0xd0d17fa8至0xd0d17ff0)
    [350.793730] 7fa0:bec91f08 00515d98 00000004 c25c4111 bec91f08 0002000e
    [350.801925] 7fc0:bec91f08 00515d98 00515d48 00000036 b6f268f5 b6f2540d b6f268d9 bec9224c
    [350.810117] 7fe0:b6f88844 bec91e4c b6f2202b b6e52418
    [350.815316] ASOC TLV320AIC32x4时钟:clk_aic32x4_pll_calc_muldiv()设置->r=1
    [350.822673] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_calc_muldiv ()乘法器=0
    [350.830183] ASOC TLV320AIC32x4时钟:clk_aic32x4_pll_round_rate () clk_aic32x4_pll_calc_muldiv error=-1
    [350.839550] WVC:clk;clk_round_rate () clk->Excluse_count2=0
    [350.845417] WVC:clk;clk_round_rate () clk_prepare_unlock
    [350.850741] WVC:clk;clk_round_rate () req.rate = 0
    [350.855524] WVC:tlv320aic32x4;aic32x4_setup_Clocks () clk_round_rate faild DAC_clock_rate = 98304000
    [350.864511] WVC:tlv320aic32x4;aic32x4_setup_Clocks () clk_round_rate PLL DAC_clock_rate = 98304000
    [350.873521] WVC:clk;clk_round_rate () clk->dev_id=0-0018、clk->con_id=PLL、clk->min_rate = 0、clk->max_rate = 4294967295、 比率= 98304000
    [350.885413] WVC:clk;clk_round_rate () clk_prepare_lock
    [350.890573] WVC:clk;clk_round_rate () clk->Excluse_count1=0
    [350.896462] WVC:clk;clk_round_rate () clk_core_get_Boundaries
    [350.902256] WVC:clk;clk_round_rate () req.rate = 98304000
    [350.907624] WVC:clk;clk_round_rate () clk_core_round_rate nolock
    [350.913670] WVC:clk;clk_core_round_rate nolock () lockdep_assert_held
    [350.920271] WVC:clk;clk_core_round_rate_nolock () clk_core_init_rate_req
    [350.927061] WVC:clk;clk_core_round_rate _nolock () clk_core_determine round_nolock
    [350.934590] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_round_rate ()比率=98304000,parent_rate = 0
    [350.943395] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_calc_muldiv ()比率=98304000,parent_rate = 0
    [350.952191] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_calc_muldiv() settings->p=1
    [350.995654] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_calc_muldiv ()乘法器=983040000000

    谢谢、

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

    parent_rate 始终为0、这意味着时钟绑定设置存在问题。 我从 Linux 内核中找到了两个文档

    您可以在 Documents\devicetree\bindings\sound 中找到 tlv320aic32x4.txt、它引用了 clock-bindings.txt。

    e2e.ti.com/.../tlv320aic32x4.txt

    您可以在 Documentation\devicetree\bindings\bclock 中找到 clock-bindings.txt

    e2e.ti.com/.../clock_2D00_bindings.txt

    还有一件事、您能否与我共享 wav 文件?

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

    您好!

    是的、我可以提供一个 wav 文件。
    我可以将文件附加到此论坛吗?
    如果不可能、我将通过将其附加到电子邮件进行回复。

    谢谢、

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

    您好!

    可从以下站点下载测试声音源。

    44.1kHz
    www.ne.jp/.../wave.htm
    loop3.wav

    48kHz
    music.yukizakura.net/.../all_bgm.html
    编号 b074
    st005.wav

    谢谢、

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

    您好!

    我检查了文本。
    似乎原因是父节点未设置为 TVL320AIC32x4驱动器内部具有的"PLL"。
    似乎选择了最佳的父时钟、"PLL"似乎仅在 TLV320AIC32x4探针上设置。

    [7.918511] WVC:tlv320aic32x4;aic32x4_probe () start
    [7.92344] WVC:tlv320aic32x4;aic32x4_probe () np --> aic32x4_pars_dt ()
    [7.930337] WVC:tlv320aic32x4;aic32x4_pars_dt ()
    [7.935142] WVC:tlv320aic32x4;aic32x4_pars_dt () ret=0
    [7.940443] WVC:tlv320aic32x4;aic32x4_pars_dt () aic32x4->RSTN_GPIO=-2、aic32x4_setup->GPIO_func=0、0、0、0
    [7.950298] WVC:tlv320aic32x4;aic32x4_prob() aic32x4->MCLK_NAME=audio-controller
    [7.957953] ASOC TLV320AIC32x4时钟:aic32x4_register_clocks () MCLK_NAME=audio-controller

    [ 7.966229] ASOC TLV320AIC32x4时钟:aic32x4_register_clk () devname=0-0018,desc->name=PLL
    [7.975009] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_get_parent() val=11,ret=0
    [ 7.982015] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_recalc_rate ()
    [7.988289] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_get_muldiv ()
    [7.99555] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_calc_rate ()
    [8.000815] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_get_parent() val=11,ret=0

    但是、在此阶段、未设置最佳父级速率、我认为找不到父级时钟。
    当执行 aplay 命令时、设置 BEST _parent_rate。 "PLL"的父级保持为空。
    是否有办法重新设置"PLL"的父时钟?

    播放波'loop3.wav':有符号16位 L

    [208.863971] WVC:su:ASOC_SIMPLE_HW_params ()启动 MCLK_FS=0、DAI_PROps->MCLK_FS=256
    [208.871733] WVC:su:ASOC_SIMPLE_HW_params () MCLK_FS=256
    [208.876906] WVC:su:ASOC_SIMPLE_HW_params () ASOC_SIMPLE_SET_clk_rate (DAI_PROps->CODEC_DAI)
    [208.885145] WVC:su:ASOC_simple_set_clk_rate ()

    [208.889545] WVC:clk;clk_mux_detect_rate_flags()选中 BEST _parent_rate req->rate=11289600
    [208.898227] wvc:clk;clk_mux_determine 比率_FLAGS() parent->name=pll3_q
    [208.904993] WVC:clk;clk_mux_determine 比率_FLAGS () best2=24573875
    [208.911145] WVC:clk;clk_mux_detect_rate_flags() BEST =24573875、req->BEST _parent_rate=24573875、req->rate=24573875

    [208.921191] WVC:su:ASOC_simple_hw_params () ASOC_simple_set_clk_rate (dai props->cpu_dai)
    [208.930045] WVC:su:ASOC_SIMPLE_SET_clk_rate ()
    [208.934408] WVC:su:ASOC_SIMPLE HW_params () snd_soc_da_da_set_SYSCLK (codec_dai、snd_SOC_clock_in)
    [208.943208] WVC:tlv320aic32x4;aic32x4_SET_DAI_SYSCLK () clk_id=0、freq=11289600、dir=0
    [208.951214] WVC:tlv320aic32x4;aic32x4_SET_DAI_SYSCLK () clk_set_rate ret=0
    [208.958152] WVC:su:ASOC_simple_hw_params () snd_soc_da_da_set_SYSCLK (cpu_dai、snd_osc_clock_out)
    [208.966860] WVC:STM32_SAI_SET_SYSCLK () clk_id=0、freq=11289600、dir=1、1.
    [208.973528] WVC:STM32_SAI_SET_SYSCLK ()(dir =snd_SOC_clock_out && SAI->SAI_MCLK)
    [208.981283] WVC:STM32_SAI_SET_SYSCLK () STM32_SAI_SUB_REG_UP
    ・・・μ A
    [209.398444] WVC:clk;clk_core_init_rate_req()选中 BEST _parent_rate core->name=PLL
    [209.406192] WVC:clk;clk_core_init_rate_req () parent=(null)

    [209.411799] WVC:clk;clk_core_round_rate _nolock () clk_core_determine round_nolock
    [209.419486] WVC:clk;clk_core_detect_round_nolock() core->name=pll,req->rate=101606400
    [209.427835] WVC:clk;clk_core_detect_round_nolock() core->protect_count=0
    [209.434999] WVC:clk;clk_core_detect_round_nolock() core->ops->round_rate req->rate=101606400,req->BEST _parent_rate = 0
    [209.446058] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_round_rate ()比率=101606400,parent_rate = 0
    [209.454803] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_calc_muldiv ()比率=101606400,parent_rate = 0
    [209.463639] ASOC TLV320AIC32x4时钟:clk_aic32x4_pll_calc_muldiv() settings->p=1
    [209.471260] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_calc_muldiv ()乘法器=1016064000000

    谢谢、

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

    你(们)好

    很抱歉,我不知道这个。 请咨询平台供应商的 PLL 设置。

    谢谢。

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

    您好!

    TVL320AIC32x4驱动程序是否设置了以下内容?

    PLL
    CODE_CLKIN
    ndac
    MDAC
    纳德
    m 可调
    b 单位

    谢谢、

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

    是的。

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

    您好!

    我想请您向我提供建议
    我在设置"PLL"的父时钟时遇到问题。

    TLV320AIC32x4驱动程序会在探测请求中注册以下时钟。
    "pll"、"codec_clkIN"、"ndac"、"MDAC"、"bdiv"
    它位于 tlv320aic32x4-clk.c 文件(静态结构 aic32x4_clkdesc aic32x4_clkdesc_array[])中。

    TLV320AIC32x4驱动程序的操作步骤;
    1.从设备节点读取父时钟名称。 在我的系统上读出"aic32x4->MCLK_name=audio-controller"。
      RET = of _property_match_string (np、"时钟名称"、"MCLK");
     aic32x4->MCLK_name = of _clk_get_parent_name (np、ret);

    2.每个时钟都由"aic32x4_register_clocks (dev、aic32x4->MCLK_name)"函数进行注册。

     aic32x4_clkdesc_array[0].parent_names =(const char*[]){MCLK_name、"BCLK"、"GPIO"、"DIN"};
     aic32x4_clkdesc_array[1].parent_names =(const char *[]){MCLK_name、"BCLK"、"GPIO"、"PLL"};

    注意:在由 aic32x4->MCLK_NAME 更新后、"aic32x4_clkdesc_array[]"的父名称将被注册。
    也就是说、它取代了音频控制器。

    3.现已完成注册。
    我使用"cat /sys/kernel/debug/clk/clk_summary"命令检查时钟状态。

     pll                                  0        0        0           0          0     0  50000
        codec_clkin                       0        0        0           0          0     0  50000
           nadc                           0        0        0           0          0     0  50000
              madc                        0        0        0           0          0     0  50000
           ndac                           0        0        0           0          0     0  50000
              mdac                        0        0        0           0          0     0  50000
                 bdiv                     0        0        0           0          0     0  50000

    我尝试通过多种方式更改设备树、但无法正常工作。
    这是否是 Simple Card 驱动程序的问题? 还是可以通过修改 TLV320AIC32x4驱动程序来避免它?

    谢谢、

    TLV320AIC32x4驱动程序是否需要用于"PLL"父时钟的音频控制器?
    我的系统上没有"音频控制器"。
    我怀疑 Sai1a_MCLK 是一种替代方案、但我无法读取它。

        pll3                              1        1        0   417755859          0     0  50000
           pll3_r                         0        0        0    11290699          0     0  50000
           pll3_q                         0        0        0    24573875          0     0  47058
              adfsdm_k                    0        0        0    24573875          0     0  50000
              sai1_k                      0        0        0    24573875          0     0  50000
                 sai1a_mclk               0        0        0           0          0     0  50000

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

    因为很难在平台上设置 clk 设置。

    您可以设置固定的 MCLK

    使用以下设置。

    静态常量结构 aic32x4_rate_divs aic32x4_divs[]={
    //MCLK 速率 nadc mAdc aosr ndac dosr
    {12288000、48000、1、2、128、 1、2、128}、
    {12288000、24000、1、4、128、 1、2、256}、
    {12288000、12000、1、8、128、 1、2、512}、
    {8192000、32000、1、2、128、 1、2、128}、
    {8192000、16000、1、4、128、 1、2、256}、
    {8192000、8000、1、8、128、 1、2、512}、

    {11289600、44100、1、2、128、 1、2、128}、
    {11289600、22050、1、4、128、 1、2、256}、
    {11289600、11025、1、8、128、 1、2、512}、
    //MCLK 速率0x12 0x13 0x14 0x0B 0x0c 0x0 d-0x0E
    {15360000、48000、1、2、128、 1、2、128}、
    {15360000、24000、1、4、128、 1、2、256}、
    {15360000、12000、1、8、128、 1、2、512}、

    {10240000、32000、1、2、128、 1、2、128}、
    {10240000、16000、1、4、128、 1、2、256}、
    {10240000、8000、1、8、128、 1、2、512}、

    {14112000、44100、1、2、128、 1、2、128}、
    {14112000、22050、1、4、128、 1、2、256}、
    {14112000、11025、1、8、128、 1、2、512}、
    };

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

    您好!

    感谢您的建议。
    如何使用此表(aic32x4_RATE _divs aic32x4_DIVs[])?
    是否要匹配 aic32x4_setup_Clocks()函数中的采样率并使用 clk_set_rate ()进行设置?
    您有示例源代码吗?

    谢谢、

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

    struct aic32x4_rate_divs{
    U32 MCLK;
    u32速率;
    U8 nadc;
    U8 mAdc;
    U8 aosr;
    U8 ndac;
    U8 MDAC;
    U16 dosr;
    };

    示例代码可以引用 tlv320aic31xx.c,它是 Linux 内核代码中的开源代码。 关键字如下所示

    我们的一个客户使用这种方法来重写 clk 设置代码。

    这里是介绍这种方法的链接、但它是中文。

    (93条消息)海思hi3531d音频外接codec (tlv320aic32x4)_赏善罚饿的博客- CSDN博客_ i2s音频

    希望这能为您提供帮助。

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

    请分享 aic3206的 DTS 文件。 我将比较该设置

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

    您好!

    需要所有文件?
    首先、您需要以下开发套件。 您已经下载了吗?

    STM32MP1 OpenSTLinux 开发者套件版本:2.1.0
    En.source-stm32mp1-openstlinux-5-4-dunbel-MP1-20-11-12.tar.xz

    www.st.com/.../stm32mp1dev.html

    谢谢、

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

    您好!

    您是否下载了该文件?
    基本 DTS 文件位于以下路径中:
    stm32mp1-openstlinux-5-4-dunball-mp1-20-11-12/sources/arm-ostl-linux-gnueabi/Linux stm32mp-5.4.56-r0/linux-5.4.56/arch/arm/boot/dts

    我的设备的 DTS 文件是根据这些文件创建的。
    stm32mp157d-dk1.dts

    IoTGateway.dts
    
    /dts-v1/;
    
    #include "stm32mp157.dtsi"
    #include "stm32mp15xd.dtsi"
    #include "IoTGateway-pinctrl.dtsi"
    #include "stm32mp15xxac-pinctrl.dtsi"
    #include "IoTGateway_xxx.dtsi"
    / {
    	model = "IoT Gateway Board : Linux";
    	compatible = "plk,IoTGateway", "st,stm32mp157";
    	aliases {
    		serial0 = &uart4;
    		i2c0 = &i2c4;
    		spi0 = &spi1;
    	};
    	chosen {
    		stdout-path = "serial0:115200n8";
    	};
    	reserved-memory {
    		gpu_reserved: gpu@da000000 {
    			reg = <0xda000000 0x4000000>;
    			no-map;
    		};
    	};
    };
    

    IoTGateway-pinctrl.dtsi
    
    #include <dt-bindings/pinctrl/stm32-pinfunc.h>
    &pinctrl {
    	sai1a_pins_a: sai1a-0 {
    		pins {
    			pinmux = <STM32_PINMUX('G', 13, AF6)>,	/* SAI1_SCK_A */
    					<STM32_PINMUX('E', 6, AF6)>,	/* SAI1_SD_A */
    					<STM32_PINMUX('G', 15, AF6)>,	/* SAI1_FS_A */
    					<STM32_PINMUX('G', 7, AF6)>;	/* SAI1_MCLK_A */
    			slew-rate = <0>;
    			drive-push-pull;
    			bias-disable;
    		};
    	};
    	sai1a_sleep_pins_a: sai1a_sleep-0 {
    		pins {
    			pinmux = <STM32_PINMUX('G', 13, ANALOG)>,	/* SAI1_SCK_A */
    					<STM32_PINMUX('E', 6, ANALOG)>,		/* SAI1_SD_A */
    					<STM32_PINMUX('G', 15, ANALOG)>,	/* SAI1_FS_A */
    					<STM32_PINMUX('G', 7, ANALOG)>;		/* SAI1_MCLK_A */
    		};
    	};
    	・・・
    };
    
    

    IoTGateway_xxx.dtsi
    
    #include <dt-bindings/mfd/st,stpmic1.h>
    
    / {
    	・・・
    	sound: sound {									// top
    		compatible = "simple-audio-card";
    		simple-audio-card,name = "IoTGateway-S";
    		simple-audio-card,format = "i2s";
    		simple-audio-card,mclk-fs = <256>;
    //@ master : Both bitclock-master and frame-master are valid
    //@ slave  : Both bitclock-master and frame-master are comment out
    		simple-audio-card,bitclock-master = <&dailink0_master>;
    		simple-audio-card,frame-master = <&dailink0_master>;
    //@		simple-audio-card,bitclock-inversion;
    		simple-audio-card,widgets =
    			"Headphone", "Headphone";
    /***
    			"Line", "Line In",
    			"Line", "Line Out",
    			"Headphone", "Headphone";
    ***/
    		simple-audio-card,routing =
    			"Headphone", "HPL",
    			"Headphone", "HPR";
    /***
    			"IN1_L", "Line In",
    			"IN1_R", "Line In",
    			"Line Out", "LOL",
    			"Line Out", "LOR",
    			"Headphone", "HPL",
    			"Headphone", "HPR";
    ***/
    		status = "okay";
    
    		simple-audio-card,cpu {						// cpu
    			sound-dai = <&sai1a>;					// Required items
    		};
    
    		dailink0_master: simple-audio-card,codec {	// codec
    			sound-dai = <&tlv3206_codec>;
    //@			clocks = <&rcc SAI1_K>;
    			system-clock-direction-out = "out";		// SND_SOC_CLOCK_OUT
    			dai-tdm-slot-num = <2>;
    			dai-tdm-slot-width = <32>;
    		};
    	};
    }; /*root*/
    
    &i2c4 {
    	pinctrl-names = "default", "sleep";
    	pinctrl-0 = <&i2c4_pins_a>;
    	pinctrl-1 = <&i2c4_pins_sleep_a>;
    	i2c-scl-rising-time-ns = <185>;
    	i2c-scl-falling-time-ns = <20>;
    	clock-frequency = <400000>;
    	status = "okay";
    	/* spare dmas for other usage */
    	/delete-property/dmas;
    	/delete-property/dma-names;
    	・・・
    
    	tlv3206_codec: tlv320aic32x6@18 {
    		compatible = "ti,tlv320aic32x6";
    		#sound-dai-cells = <0>;
    		reg = <0x18>;
    		clocks = <&sai1a>;
    		clock-names = "mclk";
    		iov-supply = <&v3v3>;			// digital IO power supply
    		ldoin-supply = <&v1v8_audio>;	// LDO power supply
    		dv-supply = <&v1v8_audio>;		// Digital core power supply
    		av-supply = <&v1v8_audio>;		// Analog core power supply
    		status = "okay";
    	};
    };
    
    &sai1 {
    	clocks = <&rcc SAI1>, <&rcc PLL3_Q>, <&rcc PLL3_R>;
    	clock-names = "pclk", "x8k", "x11k";
    	pinctrl-names = "default", "sleep";
    	pinctrl-0 = <&sai1a_pins_a>;
    	pinctrl-1 = <&sai1a_sleep_pins_a>;
    	status = "okay";
    
    	sai1a: audio-controller@4400a004 {
    		#clock-cells = <0>;
    		clocks = <&rcc SAI1_K>;
    		clock-names = "sai_ck";
    		dma-names = "tx";
    		status = "okay";
    	};
    };
    

    我已经提取了与声卡相关的部分(i2c4、第1条)。

    谢谢、

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

     简单音频卡 MCLK-FS =<256>是什么意思?

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

    您好!

    -简单音频卡,MCLK-FS :流速与编解码
    					器 MCLK 之间的乘法因子。 定义后
    					、将忽略在 DAI-LINK 子节点中定义的 MCLK-FS 属性。
    
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    通过禁用以下功能、可确认 MCLK、WCLK、BCLK 和 DIN 的波形输出。
    但是、没有音频输出。
    我给它一个固定的时钟、但似乎有问题、因为"PLL"的父时钟设置未解析。

    //@ simple-audio-card,bitclock-master =<&dailink0_master>;
    //@ simple-audio-card,frame-master =<&dailink0_master>;

    您是否知道 TLV320AIC32x4驱动程序在何处为"PLL"设置父时钟?

    [210.757101] WVC:clk;clk_core_init_rate_req ()选中 BEST _parent_rate core->name=PLL
    [210.764758] WVC:clk;clk_core_init_rate_req () parent=(null)
    [210.770521] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_round_rate () rate = 11289600,parent_rate = 0
    [210.779229] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_calc_muldiv ()比率=11289600,parent_rate = 0
    [210.788015] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_calc_muldiv()设置->p=1
    [210.795438] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_calc_muldiv ()乘法器=112896000000
    [210.803952]在内核中除以0。
    [210.807783] CPU:1 PID:7887 Comm:aplay not intas5.4.56 #188
    [210.813652]硬件名称:STM32 (设备树支持)
    [210.818829][ ](展开回扫)从[ ](show_stack+0x10/0x14)
    [210.826563][ ](show_stack)从[ ](dump_stack+b0/0xc4)
    [210.833798][ ](dump_stack)从[ ](Ldiv0_64+0x8/0x18)
    [210.840770][ ](Ldiv0_64)从[ ](__div64_32+0x14/0x20)
    [210.847829][ ](__div64_32)、来自[ ](clk_aic32x4_pll_calc_muldiv+0xc4/0x198)
    [210.856629][ ](clk_aic32x4_pll_calc_muldiv)、从[ ](clk_aic32x4_pll_round_rate + 0x44/0xa0)
    [210.866742][ ](clk_aic32x4_pll_round_rate)、来自[ ](clk_core_determine、round_nolock+0x84/0x1d4)
    [210.877288][ ](clk_core_determine round_nolock)、来自[ ](clk_core_set_rate _nolock+0x50/0x1d4)
    [210.887658][ ](clk_core_set_rate _nolock)、来自[ ](clk_set_rate + 0x30/0x88)
    [210.896286][ ](clk_set_rate)、来自[ ](aic32x4_hw_params+0x26c/0x3c8)

    ・・・μ A
    [211.004784] ASOC TLV320AIC32x4时钟:clk_aic32x4_pll_round_rate () clk_aic32x4_pll_calc_muldiv error=-1

    谢谢、

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

    您好!

    我有一个新问题。

    /1/可下载用于检查 TLV320AIC3206EVM-U 运行情况的 Windows 应用程序、但 Linux PC 上是否可以使用任何软件(Ubuntu 等)?

    /2/ TLV320AIC32x4 i2c 驱动程序是否已被证明可在 Linux 上运行?
    无论是 PC 还是电路板都没关系。
    请告诉我环境。
    内核版本、电路板器件型号、分发等

    谢谢、

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

    Q1:我们只有 Windows 应用程序。 至于 Linux、我们通常使用 alsa 工具或 i2c 工具来调试编解码器。

    Q2:我们在 BBB 上的内核4.4或4.14上开发驱动程序。 据我所知、驱动程序代码已经上行到内核 主分支、您可以从最新的内核下载

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

    您好!

    我了解驱动程序源代码的存在。
    我想知道的是、BSP 和 MCU 板具有运行此驱动程序的可靠记录。

    谢谢、

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

    以下链接是 MCU 应用的示例

    https://www.ti.com/lit/an/slaa605a/slaa605a.pdf?ts=1654510191665&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FTLV320AIC3263

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

    我有一个 MSP430 F5529 LaunchPad。
    我认为 Linux 在这个电路板上不起作用。
    tlv320aic32x4 i2c 驱动程序和 Linux 是否正常工作?

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

    是的、它可以在 Linux 上运行。

    本文档介绍了如何使用工具为 MCU 平台生成寄存器映射、并包含示例代码。

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

    能否在 MSP430 F5529 LaunchPad 上安装 Llinux?
    该 CPU 只有128KB 的闪存和8KB 的 RAM。

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

    请咨询 TI MCU 团队、我不是这方面的专家。 据我所知、它不能、它只有16位 MCU、其 CPU 频率仅为24M、不够强大、无法运行 Linux 系统。

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

    ??
    让我们回到今天的问题。
    / 2 /您知道吗?TLV320AIC32x4 i2c 驱动程序和 Linux 可以在哪个 MPU 板上工作? 例如、i.MX 等

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

    BeagleBone Black MPU 板吗? 我的一些客户在 i.MX 上集成了 AIC32x4。