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.
您好!
我正在尝试确定是否可以将 AM3358上的 TDM 连接到语音芯片上的 PCM 接口。 PCM 接口具有 PCLK、FSYNC、DTX 和 DRX、信号与此类似。
在 AM3358上、我有 CLK、FS 和 AXR[n]。
在语音芯片上、它可配置为支持每125us 帧8-128 (8位)个时隙、PCLK 范围为256KHz - 8.192MHz。 我是否能够使其与此语音芯片配合使用?
谢谢你
您好!
有关 AM335x McASP 接口的详细说明、请参阅:
AM335x 数据表修订版 K 的第7.11节
AM335x 技术参考手册第22节修订版 P.
您好、Biser、
我已阅读数据表和 TRM。 我很难理解解释 TDM 的22.3.3.1部分。 我能否使用 AXR[0]连接到 TX、使用 AXR[1]连接到语音芯片上的 RX? 如果是、是否有任何示例说明如何在 DTS 中进行设置?
谢谢你
您好、Biser、
我正在尝试为语音芯片编写驱动程序。 是否有人可以用以下代码解释串行目录:
&McASP0{
pinctrl-names ="default";
pinctrl-0 =<&McASP0_PINs>;
状态="正常";
OP-MODE =<0>;/* MCASP_IIS_MODE */
TDM-SLOTS =<2>;
/* 16串行器*/
serial-dir =</* 0:非活动、1:TX、2:Rx *
1 0 0 0 0
>;
tx-num-evt =<32>;
Rx-num-evt =<32>;
};
谢谢你
Samer、
[引用 user="Samer Abbas "]我是否可以使用 AXR[0]连接到 TX 和 AXR[1]连接到语音芯片上的 RX?
是的。
[引用 user="Samer Abbas "]如果是,是否有任何示例说明如何在 DTS 中设置它?
您可以查看 AM335x TI PSDK Linux DTS 文件:
{PSDK}/board-support/linux-4.19.38/arch/arm/boot/dts/am335x-evm.dts
McASP1{
#sound-di-cells =<0>;
pinctrl-names ="default"、"sleep";
pinctrl-0 =<&McASP1_PINs>;
pinctrl-1 =<&McASP1_PINS_SLEEP>;
状态="正常";
OP-MODE =<0>; /* MCASP_IIS_MODE */
TDM-SLOTS =<2>;
/* 4个串行器*/
serial-dir =< /* 0:非活动、1:TX、2:Rx *
0 0 1 2
>;
tx-num-evt =<32>;
Rx-num-evt =<32>;
};
在此 DTS 文件中、AXR[2]配置为 TX、AXR[3]配置为 RX
您还可以检查 am57xx-beagle-x15-common.dtsi 文件、其中 AXR[0]配置为 TX、AXR[1]配置为 RX
/* 4个串行器*/
serial-dir =< /* 0:非活动、1:TX、2:Rx *
1 2 0 0
此致、
帕维尔
[引用 user="Samer Abbas ]'我正在尝试为语音芯片编写驱动程序。 是否有人可以在以下代码中解释串行目录:
在此代码中、您将为 TX (发送)配置 McASP0 AXR[0]引脚、而 McASP0 AXR[n]的其余引脚处于非活动状态。
另请参见以下文件:
Linux-4.19.38/sound/soc/co/ti/Davinci-McAP.c
Linux-4.19.38/bindings/sound/davinci-mcasp-audio.txt
此致、
帕维尔
您好、Pavel、
感谢您的回答。
我的电路板设计基于 BeagleBone、因此由于 RGMII1连接到 LAN8710、McASP1引脚不可用。 在 McASP0上、我连接了 TLV320AIC3104。
是否仍然可以将语音芯片连接到 McASP0或 McASP1?
语音芯片需要 SPI 和 TDM/PCM。 我有可用于 SPI 的引脚、但我不确定 MCASP。
谢谢、
Samer
Samer、
是的、您可以将 AIC3x 编解码器连接到定制板上的 McASP0。 在 BeagleBone Black 板中、默认情况下、我们将 TDA19988 HDMI 发送器连接到 McASP0模块、您可以将此 McASP0节点从 TDA19988更新到 TLV320AIC3104:
Linux-4.19.38/arch/arm/boot/dts/AM335x-bonebblack-common.dtsi
您可以参阅以下 DTS 文件以了解 McASP0到 tlv320aic3007编解码器连接的示例:
Linux-4.19.38/arch/arm/boot/dts/AM335x-wega.dtsi
您可以参阅以下 DTS 文件以了解 McASP3到 tlv320aic3104编解码器连接的示例:
Linux-4.19.38/arch/arm/boot/dts/am57xx-beagle-x15-common.dtsi
此致、
帕维尔
Pavel、
似乎存在沟通错误。 让我来解释一下我的应用。 在我的定制板上、我已经将 AIC3x 编解码器连接到 McASP0、并且由于这些引脚使用 RGMII、McASP1引脚不可用。
我想将电话的另一个音频接口(FXO/FXS)连接到我的定制板、它需要 TDM 引脚。 如何将这款新的电话芯片连接到 AM335x、同时仍保持 McASP0上的 AIC3x?
谢谢、
Samer
[引用用户="Pavel Bodev"]
5.1数字音频接口链接- McASP6连接了3个编解码器
[/报价]
Pavel、
在哪里可以获得有关一个 MCASP 连接到多个编解码器的这种情况的更多详细信息?
对于我的应用、在一种情况下、我将 AIC3x 用作音频输出设备、在一种情况下、我将具有用于音频输入和输出的电话芯片、两者都将连接到 McASP0。
谢谢、
Samer
Pavel、
[引用用户="Pavel Bodev"]
[/报价]
在此线程中、您建议只修改 DTS、以便在一个 MCASP 上添加多个编解码器支持。 没有这方面的例子。 您能否解释一下我需要在以下 DTS 中更改什么才能为 McASP1上的另一个编解码器添加支持。
Sound{ compatible ="简单音频卡"; 简单音频卡、name ="AM335x-evm"; 简单音频卡、widget = "耳机"、"耳机插孔"、 "线路"、 "线路输入"; 简单音频卡、路由= "耳机插孔"、"HPLOUT"、 "耳机插孔"、"HPROUT"、 "LINE1L"、"线路输入"、 "LINE1R"、"线路输入"; 简单音频卡、格式="DSP_b"; 简单音频卡、位时钟主器件=<&sound_master>; simple-audio-card、frame-master =<&sound_master>; simple-audio-card、bitclock-倒 转; simple-audio-card、CPU{ sound-dai =<&McASP1>; }; sound_master:simple-audio-card、codec{ sound-dai =<&incaic3106>; system-clock-frequency =<&McAtrl =<&ptrl 1 ;}sepningse-pins =<&pins =<&pningsref;<&ptrl =<&pintrl =<&pintrl 1;<pningsepse-pins =<&ningse-pins;}<& 状态="正常"; 运算模式=<0>; /* mcsp_iis_mode */ tdm-slots =<2>; /* 4个串行器*/ serial-dir =</* 0:非活动、1:TX、2:Rx */ 0 1 2 >; TX-Rx-evt =<32>;num-num-evt =<32>; };
谢谢、
Samer
Samer、
您可以参阅 EVMK2G DTS 文件和用户指南:
Linux-4.19.38/arch/arm/boot/dts/keystone-k2g-evm.dts
我们将 McASP2连接到了两个编解码器:TLV320AIC3106和 Sii9022 HDMI 发送器
有关一般 DTS 指南、请参阅以下 txt 文件:
Linux-4.19.38/Documentation/devicetree/bindings/sound/simple-card.txt
以下 e2e 线程也可能会有所帮助:
此致、
帕维尔
[引用用户="Pavel Bodev"]
您可以参阅 EVMK2G DTS 文件和用户指南:
Linux-4.19.38/arch/arm/boot/dts/keystone-k2g-evm.dts
[/报价]
Pavel、
感谢您提供信息。 我将尝试 EVMK2G DTS 文件中使用的方法。
此外、在 EVMK2G 中、两个编解码器都通过 I2S 进行连接、但在我的配置中、一个将通过"DSP_b"进行连接、另一个将通过"TDM"进行连接。 这是否会导致任何问题?
谢谢、
Samer
[引用 user="Samer Abbas ]*还有一件事、在 EVMK2G 中、两个编解码器都通过 I2S 进行连接、但在我的配置中、一个将通过"DSP_B"进行连接、另一个将通过"TDM"进行连接。 这是否会导致任何问题?
以下文件列出了可用的格式选项:
linux-kernel/sound/soc/co-core.c - I2S、right_j、left_j、dsp_a、dsp_b、 AC97、PDM、MSB、lsb
您可以将 DSP_b 用于编解码器1,而将另一个选项用于编解码器2。 下面的 DTS 文件中显示了这种情况:
Linux-4.19.38/arch/arm/boot/dts/stihxxx-b2120.dtsi
simple-audio-card、di-link0{
/* HDMI */
格式="I2S";
简单音频卡、DAI-link1{
/* DAC */
格式="I2S";
simple-audio-card、di-Link2{
/* SPDIF */
格式="left_j";
另请参阅下面的 TXT 文件:
Linux-4.19.38/Documentation/devicetree/bindings/sound/st、sti-asoc-card.txt
从 AM335x McASP 侧来看、这些格式会影响达芬奇_MCBSP_TXFMCTL_REG 和达芬奇_MCBSP_RXFMCTL_REG 寄存器。 确保每个编解码器都有正确的 McASP FMCTL 设置。
Linux-4.19.38/sound/soc/co/ti/Davinci-McAP.c -> Davinci_McASP_Set_Dai_fmt ()
此致、
帕维尔
Pavel、
现在、对于我的第一个编解码器 TLV320AIC3104、我使用 DSP_b、并且为此使用了以下引脚:McASP0_ACLKx、McASP0_FSX、McASP0_AXR0、McASP0_AXR2。 对于仅使用 PCM 的第二个编解码器 Si3217x、我将使用 I2C 在 McASP0_ACLKx、McASP0_FSX、McASP0_AXR0、McASP0_AXR2等引脚上接收 TDM。 这应该是好的吗? 或者我的方法是错误的吗?
阅读完您建议的所有文章和设备树后、我现在有了一个设备树。 请查看下面我的部分 DTS 并告诉我这是否起作用:
Sound0:声音@0{ 兼容="简单音频卡"; 简单音频卡、名称="AM335x-EVM"; 简单音频卡、小工具= "耳机"、"耳机插孔"、 "线路"、 "线路输出"、 "线路"、"线路输入"; 简单音频卡、路由= "耳机插孔"、"HPLOUT"、 "耳机插孔"、"HPROUT"、 "LINE1L"、"线路输入"、 "LINE1R"、"线路输入" 、"线路输出"、 "LLOUT"、 "线路输出"、 "RLOUT"; 简单音频卡、DAI-LINK@0{ 格式="dsp_b"; 位时钟主控=<&sound0_0_master>; 帧主控=<&sound0_master>; McA0_0_master>:CPU{ sound-dai =<&sp0>; } ;CODEC{ sound =<&sound-clocks =<&clocks&clockse-nation> };McAclocks =<&clicks&clocks&clicks&clocks&clocks&clocks&clocks&clock simple-audio-card、di-link@1{ format ="I2S"; bitclock-master =<&sound0_1_master>; frame-master =<&sound0_1_master>; sound0_1_master: CPU{ sound-dai =<&McASP0>; } ;CODEC{ sound-dai =<&s3217x>; }clk_clocks = <&clk>;"clk_clks" }; &McASP0{ #sound-di-cells =<0>; pinctrl-names ="default"; pinctrl-0 =<&McASP0_PINs>; 状态="确定"; 运算模式=<0>;/* mcasp_iis_mode */ tdm-slots =<2>; num-serializer =<16>; serial-dir =</* 0:非活动、1:TX、2:Rx */ 2 0 1 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"、"rx-num-evt"和"tdm-slots"。 能否使用 I2S 接收 PCM 数据? 设备树是否正常? 还是需要进行更改?
谢谢、
Samer
[引用 USER="Samer Abbas ]]现在、对于我的第一个编解码器 TLV320AIC3104、我使用 DSP_b、并且我使用以下引脚来实现它:McASP0_ACLKx、McASP0_FSX、McASP0_AXR0、McASP0_AXR2。 对于仅使用 PCM 的第二个编解码器 Si3217x、我将使用 I2C 在 McASP0_ACLKx、McASP0_FSX、McASP0_AXR0、McASP0_AXR2等引脚上接收 TDM。 这应该是好的吗? 或者我的方法是否错误?
当您在两个不同的编解码器之间共享相同的 McASP0引脚时、您将需要多路复用器/缓冲器在这些编解码器之间进行切换。 例如、您可以参阅 EVMK2G 用户指南、第3.28节 McASP 配置和3.18音频编解码器
您的器件树看起来正确、但我无法在我的一侧对其进行测试、因为我没有具有您特定配置的电路板。 因此、您需要在定制板上测试此 DTS、就像查看它一样、我们无法确定它是否正常工作。
有关"tx-num-evt"、"rx-num-evt"和"tdm-slots"的更多信息、 您可以参阅以下 TXT 文件、并检查 MCAASP 驱动程序如何处理这些文件:
Linux-4.19.38/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt
Linux-4.19.38/sound/soc/co/ti/Davinci-McAP.c
此致、
帕维尔