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.
工具与软件:
大家好!
我将在我们的项目中使用"TLV320AIC3100"。 我将"IMX8MM"与 Linux 内核5.4.70配合使用。 我能够探测编解码器驱动程序。 下面是我的 dmesg 日志。
[ 4.267295] asoc-simple-card sound-tlv320aic: tlv320aic31xx-hifi <-> 30030000.sai mapping ok [ 4.275771] asoc-simple-card sound-tlv320aic: ASoC: no DMI vendor name! [ 4.286372] tlv320aic31xx-codec 1-0018: Could not reset device: -6
我的 dts 文件如下所示。
sound-tlv320aic { compatible = "simple-audio-card"; simple-audio-card,name = "tlv320aic-audio"; simple-audio-card,format = "i2s"; simple-audio-card,frame-master = <&cpudaitlv>; simple-audio-card,bitclock-master = <&cpudaitlv>; simple-audio-card,widgets = "Microphone", "Microphone Jack", "Line", "Line In Jack", "Line", "Line Out Jack", "Headphone", "Headphone Jack", "Speaker", "Speaker Jack"; simple-audio-card,routing = "Headphone Jack", "HPL", "Headphone Jack", "HPR", "MIC1LM","Microphone Jack", "MIC1RP","Microphone Jack", "MIC1LP","Microphone Jack", "Speaker Jack", "SPK"; cpudaitlv: simple-audio-card,cpu { sound-dai = <&sai3>; clocks = <&clk IMX8MM_CLK_SAI3_ROOT>; dai-tdm-slot-num = <2>; dai-tdm-slot-width = <32>; }; simple-audio-card,codec { sound-dai = <&tlv320aic>; clocks = <&clk IMX8MM_CLK_SAI3_ROOT>; }; }; &i2c2 { clock-frequency = <400000>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c2>; status = "okay"; tlv320aic: tlv320aic@18 { #sound-dai-cells = <0>; compatible = "ti,tlv320aic3100"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_gpio_wlf>; ti,reset-gpio = <&gpio3 0 GPIO_ACTIVE_LOW>; reg=<0x18>; ai31xx-micbias-vg = <MICBIAS_2_0V>; status = "okay"; }; }; &sai3 { #sound-dai-cells = <0>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_sai3>; assigned-clocks = <&clk IMX8MM_CLK_SAI3>; assigned-clock-parents = <&clk IMX8MM_AUDIO_PLL2_OUT>; assigned-clock-rates = <11289600>; status = "okay"; }; pinctrl_gpio_wlf: gpiowlfgrp { fsl,pins = < MX8MM_IOMUXC_NAND_ALE_GPIO3_IO0 0xd6 >; };
我将 PLL2用于频率为"11289600"的 SAI3根时钟。 我还在"tlv320aic31xx.c"中添加了电流频率的 PLL 参数 、如下所示:
{11289600, 44100, 8, 0, 128, 8, 2, 128, 8, 2},
您能帮助我解决重置错误吗?
您好!
如果使用您的 PLL 时钟输入频率、您应该不需要此器件的 PLL。 通过为 TLV320AIC3100使用 CodecControl 软件、看起来您可以关闭 PLL 并使用 NADC=1、mAdc=2、AOSR=128、NDAC=1、MDAC=2、 DOSR= 128和 fsDAC=44100 (正如您已指定的)。 哪个函数获取您写出的 PLL 参数? 由于存在时钟错误、器件很可能无法启动。
请告诉我您是否能够更改设置以关闭 PLL 并设置这些设置、或者您是否需要更多帮助。
此致!
MIR
MI MIR、
Linux PLL 无法设置为44100、因为它的频率非常低。 因此、我需要使用片上 PLL 本身。 您能否验证我的片上 PLL 参数、{11289,600,441 00 、8、0、 128、 8、 2128 、8、 2}? 11289600是主机 PLL 频率。
谢谢!
Ajita
Ajita、您好!
此列表对应哪些 PLL 参数? 我要寻找 P、R、J、D、K、 或时钟分频器输入时钟。 如果 P=2、R=8、J=8且 D=0、这应该能满足 FS = 44.1kHz 的要求。 要计算 PLL 是否有效、您可以使用此处提供的 PLL 计算器工具: https://e2e.ti.com/support/audio-group/audio/f/audio-forum/946529/faq-i-need-help-configuring-the-pll-on-my-audio-codec-adc-is-there-an-easy-way-to-do-so
抱歉、我不知道您的 PLL 参数数组的来源。 您能否提供更多有关它的背景信息、例如您调用它的位置?
此致!
MIR
嗨、Mir、
感谢您指出 PLL 计算器工具。 使用工具后我的参数:
PLL_CLKIN 11.289600 MHz、P=1、R=1、J=8、D=0、 NADC= 2、mAdc=8、AOSR=128、NDAC=2、MDAC=8、 DOSR= 128
该设置满足所有 PLL 条件、以达到 DAC_FS 并将 ADC_FS 设置为"44100"Hz"。 但仍然出现复位问题。
谢谢!
Ajita
好的、感谢您向我展示这部分代码、抱歉我以前没看到过。 看起来器件需要列表中的这些阵列之一。 因此、您可以在此部分中选择其中一行:
好的、您的错误可能不是由 时钟 问题引起的。 您是否有更详细的错误日志? 如果代码的哪个部分正在运行、但显示无法重置器件、有什么想法吗? 您要执行哪些步骤来连接设备、或许我可以尝试重新创建它们?
很抱歉、我不是 Linux 专家。 我们的团队很快会有一位 Linux 音频驱动程序专家、如果我无法解决您的问题、他们会提供帮助。
此致!
MIR
嗨、Mir、
我当时正在经历 tlv320dac3100 。 它具有写入的初始化序列、通过该序列可以使用 I2C 命令配置 DAC。 我可以使用它在 TLV320AIC3100上播放音频。 它确认 IC 处于工作状态、需要在使用前进行配置。 您能为 ADC 提供类似的初始化序列吗? 我想启用麦克风功能。
谢谢!
Ajita
您好!
您可以下载"SLAC366a" CodecControl 软件以初始化器件并将初始化序列记录为 I2C 命令。 以下是一些用于初始化器件的 DAC 和 ADC 路径的示例代码、摘自以下 E2E 文章:
#------------------ 选择第0页
W 30 00 00 00
# s/w reset
W 30 01 01 01
# PLL_CLKIN = BCLK、CODEC_CLKIN = PLL_CLK
W 30 04 07
W 30 05 91
W 30 06 20.
W 30 07 00
W 30 08 00
#模式为 I2S、字长为16
W 30 1b 00
# NDAC 已上电并设置为4
第84章我是谁
# MDAC 已通电并设置为4
第84章我是谁
第84章我是谁
第84章我是谁
# DOSR = 128、DOSR (9:8)= 0
W 30 14 00
# DOSR (7:0)= 128
W 30 15 80
#计时结束于此处
#
# DAC =>通过引脚禁用音量控制
W 30 74 00
# DAC => DRC disable、th 和 hy
W 30 44 00
# DAC => 0 db gain left
W 30 41 00
# DAC => 0 db gain right
W 30 42 00
#------------------ 选择第1页
W 30 00 01
#去 POP 音、上电= 800ms、步进时间= 4ms
W 30 21 4e.
# HPL 和 HPR 已上电
W 30 1f c2.
# LDAC 路由到 HPL、RDAC 路由到 HPR
西30 23 44.
# HPL 取消静音并增益1dB
W 30 28 0e.
# HPR 取消静音并增益1dB
> 0e
# HP 上没有衰减
W 30 24 00
W 30 25 00
# MIC BIAS = AVDD
宽30 2e 0b
# MICPGA P = MIC 10k
W 30 30 40
# MICPGA M - CM 10k
> 40.
#------------------ 选择第0页
W 30 00 00 00
#选择 DAC DSP 模式11并启用自适应滤波器
宽30 3c 0b
W 30 00 08
W 30 01 04
W 30 00 00 00
# powerup DAC 左右声道(软步进禁用)
宽30 3f d6
#取消 DAC 左右通道的静音
W 30 40 00
#为 ADC channel 加电
W 30 51 80
#撤消 ADC 通道的静音
W 30 52 00
#------------------ 选择第1页
W 30 00 01
#取消 D 类左侧静音
宽302a 1c
#取消 D 类右静音
宽30 2b 1c
#启动 D 类驱动程序
W 30 20 C6
#将 MIC1LP 和 MIC1RP 连接到扬声器输出
西30 23 54
第74章我是谁
#将模拟衰减器设置为 D 类输出0dB
# GUI 记录了两次相同的写入
#可能在 GUI 中有一个错误,但我留下它是必要的
W 30 26 00
W 30 26 00