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.

[参考译文] TLV320DAC3100:在 Linux 下器件没有声音。

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1028584/tlv320dac3100-no-sound-out-of-device-under-linux

器件型号:TLV320DAC3100
主题中讨论的其他器件: TLV320AIC3104

您好-

我正在尝试将 tlv320dac3100器件集成到我们基于站点的设计中。  从器件中取出 Ould 时遇到问题。

我不明白应该如何为 tlv320dac3100配置提供的驱动程序。  似乎要控制此驱动程序,基本驱动程序是 tlv320aic3104.c 驱动程序,而 tlv320dac3100是驱动程序用于查找用于配置设备的正确 i2c 命令集的选项。  我从中的这个枚举中得到了这个概念  

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/sound/soc/codecs/tlv320aic31xx.h

AICaic31xx_type
AIC3100 = 0
AIC3110 = AIC31XX_Stereo 类_D_BIT
AIC3120 = AIC31XX_miniDSP_BIT
AIC3111 = AIC31XX_Stereo 类_D_BIT | AIC31XX_miniDSP_BIT
DAC3100 = DAC31XX_BIT、DAC31XX_BIT
 = DAC31XX_BIT_BIT_BIT
| AIC31XX_CLASS _BIT | DAC3101立体声_BIT_BIT_BIT_BIT | DAC31XX_BIT | 

我在 BeagleBone 构建下使用来自 ti 的内核 xxx

Linux BeagleBone 4.19.94-ti-R42 #1 buster SMP 抢占 Tue Mar 31 19:38:29 UTC 2020 armv7l GNU/Linux

我很感谢您不支持 BeagleBone、但您确实提供了驱动程序、因此我很高兴您能向正确的方向指出我、或者引导我使用 BeagleBone 提供的最佳资源。

我使用的是 Sitara AM335x  

我已粘贴下面的 DTS 文件

结果是正确的串行音频信号从器件发送到主机、但没有声音输出(我正在使用扬声器测试进行测试) 当我在启动时对 i2c 端口发出的内容进行解码时、我会看到数据表显示不写入的寄存器写入、例如在启动时、我会得到如下对寄存器0x12第0页的写入

0x12 0x81

从 数据表的表6-45中可以看出、不需要写入该区域。

我猜、至少有一部分器件被视为 aic3104、而不是根据请求被视为 dac3100。

当我对大多数 i2c 命令进行解码时、它们对于 dac3100看起来是正确的。

是否有文档解释了这一切的工作原理以及如何编辑正确的文件以使其工作?

内核控制器件 i2c 总线、因此我无法使用 i2cget 或 i2cset 来写入或读取寄存器。

Linux 驱动程序的一般问题-

我认为我对 Linux 驱动程序过程的理解中缺少了一个 peice -我不知道谁在启动时调用驱动程序代码中的例程。  内核中的某些程序必须作为 uboot 的一部分运行、也许是为了调用驱动程序例程来设置器件。  您能告诉我这是谁(什么程序)。  如果我可以修改、我可能可以调试这个问题。

此外、是否有办法从该地址的驱动程序中解开 i2c 总线、以便能够独立访问寄存器?

感谢您在这方面的帮助。

DTS 文件

/*
*版权所有(C) 2012德州仪器(TI)公司- http://www.ti.com/
*
*此程序是免费软件;您可以重新分发和/或修改
*根据 GNU 通用公共许可证第2版的条款,如所示
*由免费软件基金会发布。
*

/DTS-v1/;
/插件/;

#include
#include

/{
/*
* Helper,在/proc/device-tree/chosen/overlays 下显示已加载的覆盖图
*
片段@0{
target-path="/";
_overlay__{

选择{
覆层{
BB-Bone-Audi-02-00A0 =__TIMESTAMP__;
};
};
};
};

/*
*从引脚多路复用器帮助器中释放 Cape 使用的引脚。
*
碎片@1{
Target =<&OCP>;
_overlay__{
P9_25_pinmux{status ="disabled";};// McASP0_ahclkx *
P9_28_pinmux{status ="disabled";};// McASP0_axr2 *
P9_29_pinmux{status ="disabled";};// McASP0_FSX *
P9_30_pinmux{status ="disabled";};// McASP0_axr0 *
P9_31_pinmux{status ="disabled";};// McASP0_aclkx *
};
};

碎片@2{
目标=<&am33xx_pinmux>;
_overlay__{
bon_audio_cape_audio_pins:pinmux_bon_audio_cape_audio_pins{
pinctrl-single、pins =<

//将音频引脚配置更新为 aclkx (V16)输入 FSX (U16)输入和 AXR1输出(V17)

AM33XX_IOPAD (0x860、PIN_INPUT 下拉| MUX_MODE6)/* McASP0_aclkx.McASP0_aclkx *
AM33XX_IOPAD (0x864、PIN_INPUT 下拉| MUX_MODE6)/* McASP0_FSX.McASP0_FSX、输入*/
AM33XX_IOPAD (0x86c、PIN_OUTPUT 下拉| MUX_MODE6)/* McASP0_axr0.McASP0_axr1 *

>;
};
};
};

碎片@3{
target-path="/";
_overlay__{
CLK_McASP0_FIXED:CLK_McASP0_FIXED{
#clock-cells =<0>;
兼容="固定时钟";
时钟频率=<12000000>;
};

CLK_McASP0:CLK_McASP0{
#clock-cells =<0>;
兼容="GPIO-GATE -时钟";
时钟=<&clk_McASP0_FIXED>;
ENABLE-GPIO =<&GPIO1 27 0>;//在 GPIO1_27上启用 BeagleBone Black Clk *
};

听起来{
兼容="简单音频卡";
simple-audio-card、name ="Audoccape Rev B";
simple-audio-card、小工具=
"扬声器"、"外部扬声器";
//"耳机"、"耳机插孔"、
//"线路"、"线路输入";
简单音频卡,路由=
"扬声器"、"SPK";
//"耳机插孔"、"HPLOUT"、
//"耳机插孔"、"HPROUT"、
//"LINE1L"、"线路输入"、
//"LINE1R"、"线路输入";
simple-audio-card、format ="DSP_b";
simple-audio-card、bitclock-master =<&sound_master>;
simple-audio-card、frame-master =<&sound_master>;
简单音频卡、位时钟反转;

简单音频卡、CPU{
Sound-Dai =<&McASP0>;
};

sound_master:simple-audio-card、codec{
#sound-di-cells =<0>;
sound-dai =<&tlv320dac3100>;
时钟=<&clk_McASP0>;
时钟名称="MCLK";
};
};};
};

碎片@4{
目标=<&i2c2>;
_overlay__{
#address-cells =<1>;
#size-cells =<0>;
时钟频率=<100000 >;
状态="正常";

tlv320dac3100:tlv320dac3100@18{
#sound-di-cells =<0>;
兼容="ti、tlv320dac3100";
reg =<0x18>;
};
};
};

碎片@5{
目标=<&McASP0>;
_overlay__{
#sound-di-cells =<0>;
pinctrl-names ="default";
pinctrl-0 =<&bon_audio_cape_audio_pines>;
状态="正常";
OP-MODE =<0>;/* MCASP_IIS_MODE */
TDM-SLOTS =<2>;
num-serializer =<16>;
serial-dir =</* 0:非活动、1:TX、2:Rx *
//将 AXR1设置为 TX 数据输出禁用所有其他功能
0 1 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
>;
tx-num-evt =<1>;
Rx-num-evt =<1>;
};
};
};

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

    Mark、

    我 将 与 可能有解决方案的一位同事进行联系。  因此、如果我可以收集任何信息或建议、我将为 您发布。

    此致、

    Arash

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

    您好、Aresh -

    感谢您的快速响应。  我很奇怪、我没有收到关于您的回复的电子邮件通知。、

    我发现了一个问题。 我没有启用 spkrVDD 电源、这就是没有声音发出的原因。  抱歉,刚刚找到。  从而解析该部分。

    现在、我看到的是、当我发送扬声器测试 时、播放速度大约为1/3 (我使用语音文件进行了测试)

    我将根据 我在器件树中设置的值、使用一个12.0 MHz MCLK 来馈送系统。

    我只是在深入研究和检测我的系统、以便更好地了解我是否可以获得更好的图片。

    我也可以通过从第二个 i2c 主器件(Beagle Bone 板)连接到总线来查询 i2c 总线并发送命令、以便查看寄存器状态。

    新问题

    我还有一个与硬件相关的问题、涉及电源定序。

    在下面的图片中、我将以蓝色显示数据表中建议的每个电源引脚的顺序、以红色显示我的电源序列。  您能告诉我这是否是一个问题吗?  我知道这是一个模糊的问题、但我有点卡滞、因为设计在这一点上相当固定、更改将是一个大问题。

    如果您需要我将其发布在单独的主题中、只需说...

    谢谢

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

    您好!

    无音频输出和回放问题已解决。  事实上、我使用的扬声器测试配置不正确。我没有启用单个扬声器测试、因此即使编解码器处于单声道模式、流在左右两侧分开也不输出。

    感谢您在这里的帮助。

    有关电源排序的问题仍在处理中...

    谢谢

    标记

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

    Mark、

    如 您所述, 数据表中的特定序列是建议的加电序列,用于正确操作。 我已经看到   IC 在未遵循建议的定序时发生了损坏、尽管在不同 IC 上很少有次我无意中未遵循该定序、但它仍然存在;  不过、我强烈建议坚持数据表中提到的电源定序。

    此致、

    Arash

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

    您好 Arash

    感谢您的回答-  

    我知道这种风险。  如上所述、更改顺序是非常重要的(如果可能的话)。  这就是为什么要询问所示顺序的影响。  有没有人可以回答这个问题?  我知道这是一个棘手的问题,如果我对定序有任何控制,我会尝试纠正它,我对它是怎样的有点不满意。。

    另一个可能相关的问题...

    我看到  扬声器输出上的直流电压(使用直流上的真有效值表测得的电压约为3.2v。)  该波形具有差分示波器探针  

    我应该看到什么? 扬声器变得越来越热、而且其性能也很差、并且需要考虑净直流电压。

    扬声器是否需要交流耦合?  编解码器是否有问题?

    请提供建议

    谢谢

    标记

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

    Mark、让我与一位更有资格回答您有关 此 部件和编解码器的起飞表格建议的电源序列的问题的同事确认一下。

    此致、

    Arash

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

    您好!

    我想知道对这个问题是否有任何答复。  我认为该器件可能会损坏(可能是由于电源序列)、这就是直流电从扬声器端子流出的原因

    您能否确认扬声器不需要交流耦合...

    谢谢 Mark

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

    您好!

    我已经决定在我们下次旋转电路板时、通过对其进行返工来使该电路板上的定序正确无误。  不要浪费太多的时间、否则请您的同事参与。  我也不认为使用错误 的序列是一个好主意...

    谢谢

    标记

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

    您好、Mark。 这是 D 类驱动器的 BTL 连接、无需交流耦合。 感谢您让我知道您的上电序列决策。  

    我要关闭这个。

    祝你好运。

    Arash