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.

[参考译文] 如何配置 TLV320AIC3106的 PCM 模式?

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1104663/how-do-we-configure-the-pcm-mode-of-the-tlv320aic3106

主题中讨论的其他器件:TLV320AIC3106

您好、TI 专家

我计划使用 TLV320AIC3106 以环回模式测试 SOC 的 I2S 输出/输入和 PCM 输出/输入接口。 测试概念如下。  

现在、我们将重点介绍 PCM 输出/输入接口(I2S 接口被忽略)。 我的问题是、我们可以通过示波器看到 PCM SYNC、PCM CLK 和 PCM DOUT 处的信号波形、但我们看不到 PCM DIN 处的信号波形。 我的初始代码如下。 我认为初始代码应该有一些问题。 我可以发表评论和评论吗? 谢谢!

函数 CODEC ()

如果[! -d /sys/class/gpio/Gpio${codec_rst_pin}];然后
echo ${codec_rst_pin}>/sys/class/gpio/export
FI
回显>/sys/class/gpio/Gpio${codec_rst_pin}/方向
回波1 >/sys/class/gpio/gpio${codec_rst_pin}/值
睡眠1
回波"PCM 测试模式"
i2cset -f -y $codec_i2c_bus $codec_addr 0x01 0x80 b
i2cset -f -y $codec_i2c_bus $codec_addr 0x07 0x8A b
# GPIO1 =音频串行数据总线的字时钟(可编程为输入或输出)
i2cset -f -y $codec_i2c_bus $codec_addr 0x62 0xB0 b
# GPIO2 =音频串行数据总线的位时钟(可编程为输入或输出)
i2cset -f -y $codec_i2c_bus $codec_addr 0x63 0x80 b
# MFP3引脚在音频串行数据输入引脚被启用时的用法(MOSI)
i2cset -f -y $codec_i2c_bus $codec_addr 0x65 0x10 b
i2cset -f -y $codec_i2c_bus $codec_addr 0x08 0xC0 b
i2cset -f -y $codec_i2c_bus $codec_addr 0x29 0x02 b
i2cset -f -y $codec_i2c_bus $codec_addr 0x2B 0x00 b
i2cset -f -y $codec_i2c_bus $codec_addr 0x25 0xD0 b
i2cset -f -y $codec_i2c_bus $codec_addr 0x40 0x80 b
i2cset -f -y $codec_i2c_bus $codec_addr 0x2F 0x80 b
i2cset -f -y $codec_i2c_bus $codec_addr 0x33 0x0D b
i2cset -f -y $codec_i2c_bus $codec_addr 0x41 0x0D b

BR

Kevin

 

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

    尊敬的 Kevin:

    您似乎正在将0x10写入寄存器101 (0x65)、这使得 MFP3引脚充当 SPI MOSI 函数、而不是 SDIN 函数。 尝试0x00。


    此致、

    Jeff

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

    尊敬的 Jeff:

    感谢您的回答。 尝试0x00后、结果与之前相同。 我在 DOUT 引脚(DOUT -> PCM DIN)处看不到波形。 I2S 函数是否仍然可以工作、因为我没有对其进行配置(I2S 的所有设置在编解码器中都是默认设置)。

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

    尊敬的 Kevin:

    再次回顾您的代码、您将 BCLK 和 WCLK 设置为输出/主模式、这与您的图相矛盾。 我假设您的意思是让 SOC 成为主设备? 您能否共享时钟的示波器捕获以及测量时钟的位置?

    谢谢、

    Jeff

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

    尊敬的 Jeff:

    谢谢! 我将提供示波器捕获。 在此之前、请允许我详细介绍方框图。 我们需要使用编解码器验证 I2S 输入和输出接口以及 SOC 的 PCM 输入和输出。 我们使用 aplay 命令在 I2S 输出时播放1KHz 音的 WAV、并使用 arecord 命令在接口的 I2S 处录制 WAV。 实际上、我们不将 I2S 输出配置为主模式、将 I2S 输入配置为从模式。 我们将重点介绍 PCM 功能。 因此、我们可以忽略图中的 I2S 器件。 我将提供 PCM 的示波器捕获。 谢谢!

    BR

    Kevin

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

    您好、Jeff

    我应该配置寄存器9吗? 如果是、我看不到适用于 PCM 模式的项目。

    BR

    Kevin

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

    您好、Jeff

    你那有好消息吗?  

    BR

    Kevin

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

    您好、Jeff

    你那有好消息吗?  

    BR

    Kevin

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

    尊敬的 Kevin:

    Jeff 在过去的一周内已不在办公室。 很抱歉耽误你的时间。 他明天会回来,届时 可以作出回应。

    Brian

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

    是的、没问题。  

    我在"GPIO2"引脚上测量了时钟、在"MFP3"引脚上测量了数据。

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

    大家好、Kevin、感谢您的耐心、

    是的、需要配置寄存器9。 尽管 I2S 和 PCM 数据总线有不同的引脚、但它们会多路复用到相同的音频接口中、因此需要完成配置。

    感谢您分享该图。 时钟中有一些可能影响性能的奇数失真。 您可以看到高电平和低电平正在变化、并且边沿上有一些尖峰持续了一段时间。 我会尝试清除该信号。

    但是、我仍然想澄清一下软件。 我要问的主从模式是在寄存器8中。 它指的是 WCLK/GPIO1和 BLCK/GPIO2、基于拟使用的总线。 配置由两条总线共享、需要正确。 如果您打算让 AIC3106成为可以正常工作的主器件、只要为其设置了 SOC。 我想澄清一点、因为根据图、您似乎希望 AIC3106成为从器件。

    此致、

    Jeff

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

    您好、Jeff

    欢迎回来!  

    关于主/从模式设置、我假设 CPU 是主器件。 如果我的假设对编解码器有影响、我们可以将编解码器配置为主模式。  我们希望基于此模式更改进行完整的寄存器设置。 由于我对日程安排的担心、请获得您对此问题的全力支持。 谢谢!

    BR

    Kevin

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

    您好、Jeff

    我的模式设置是编解码器是主模式。 我将尝试从模式。 我假设从器件和主器件之间的不同模式是由谁生成 BCLK 和 WCLK。 如果我错了、请告诉我。 谢谢!

    BR

    Kevin

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

    您好、Jeff

    我通过修改寄存器8 (其值为0x00)将编解码器配置为从模式、但示波器不会在 DOUT 引脚上检测信号。 你有什么想法吗? 谢谢!

    BR

    Kevin

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

    尊敬的 Kevin:

    正确的是、主从器件的区别在于谁生成时钟。 如果编解码器以外的内容生成时钟、则需要处于从模式。

    时钟失真仍然令我担忧。 我知道我们现在正在忽略 I2S 端口、但它是否适用于此设置? 这将有助于隔离硬件或软件问题。

    此致、

    Jeff

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

    您好、Jeff

    编解码器如何确定或识别来自 I2S 或 PCM 的音频信号? 以下是我将 PCM 和 I2S 组合在一起的设置序列、并将 HP (ROUT、LOUT)连接到 Line1 (RP、LP)以执行外部环回。 请帮您了解一下。 谢谢!

    i2cset -f -y $codec_i2c_bus $codec_addr 0x09 0x30 b

    i2cset -f -y $codec_i2c_bus $codec_addr 0x0A 0x00 b

    i2cset -f -y $codec_i2c_bus $codec_addr 0x07 0x8A b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x62 0xB0 b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x63 0x80 b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x65 0x00 b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x29 0x02 b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x2B 0x00 b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x0E 0xC0 b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x25 0xE0 b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x26 0x10 b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x2F 0x80 b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x40 0x80 b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x41 0x0D b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x33 0x0D b
    #线路输入设置
    i2cset -f -y $codec_i2c_bus $codec_addr 0x1F 0xf8 b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x15 0xf8 b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x16 0x84 b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x13 0x84 b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x0F 0x00 b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x10 0x00 b

    i2cset -f -y $codec_i2c_bus $codec_addr 0x66 0xA0 b

    BR

    Kevin

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

    更新了方框图。

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

    BTW、是否可以将 SOC 的 PCM 连接到编解码器的 I2S?

    BR

    Kevin  

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

    尊敬的 Kevin:

    您应该能够将 SOC 的 PCM 连接到 I2S。 编解码器通过寄存器98、99和101 (GPIOX 和 MFP3控制)决定要监听哪个(PCM 或 I2S 端口)。 寄存器8和9控制音频接口、该接口的输入在 PCM 和 I2S 之间进行多路复用。

    此致、

    Jeff

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

    请回答另一个问题。

    1) 1)编解码器如何处理来自 I2S 或 PCM 的分辨率? 在我的系统中、I2S 的分辨率为32位、PCM 的分辨率为16位。

    2) 2) 5)对于我在6月9日发布的完整寄存器设置、我有您的意见。

    谢谢!

    Kevin

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

    尊敬的 Kevin:

    我没有看到任何代码问题。

    分辨率更改通过配置音频接口来完成。 请记住、编解码器不会同时处理两条总线。 它根据寄存器设置执行一个操作。 此切换操作应伴随音频接口重新配置以匹配。

    我们的编解码器专家应该周一回来、他可能会看到我不知道的情况。

    此致、

    Jeff

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

    您好、Jeff

    我已将 PCM_CLK 引脚连接到 BCLK 引脚、将 PCM_SYNC 引脚连接到 WCLK 引脚、并将 PCM_DOUT 连接到 DIN 引脚。 示波器结果是我在 BCLK、WCLK 和 DIN 引脚上测量的、但我没有检测 DOUT 引脚上的波形。 WAV 源文件为16K,采用 PCM-16位格式。  

    根据使用16K WAV 文件代替44.1K WAV 文件、我还修改了编解码器初始代码、如下所示、请发表评论。 谢谢!

    i2cset -f -y $codec_i2c_bus $codec_addr 0x08 0x00 b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x09 0x00 b

    i2cset -f -y $codec_i2c_bus $codec_addr 0x0A 0x00 b

    i2cset -f -y $codec_i2c_bus $codec_addr 0x07 0x8A b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x29 0x02 b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x2B 0x00 b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x0E 0xC0 b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x25 0xE0 b
    2cset -f -y $codec_i2c_bus $codec_addr 0x26 0x10 b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x2F 0x80 b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x40 0x80 b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x41 0x0D b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x33 0x0D b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x1F 0xf8 b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x15 0xf8 b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x16 0x84 b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x13 0x84 b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x0F 0x00 b
    i2cset -f -y $codec_i2c_bus $codec_addr 0x10 0x00 b

    i2cset -f -y $codec_i2c_bus $codec_addr 0x66 0xA0 b

    BR

    Kevin

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

    尊敬的 Kevin:

    那么、您要尝试做的是将信号从 I2S 发送到 HP、然后将其路由回 Line1并使用 PCM 进行捕获、作为测试用例之一-正确吗?

    为了清晰起见、我们将其分解出来、您可以在验证后进行合并。

    1) 1) I2S 从 SoC 输出到具有 HP 交流耦合输出设置的编解码器:

    W 30 07 8A (FS = 44.1kHz)
    W 30 08 00 (编解码器处于从模式)
    W 30 09 00 (I2S 模式、16个数据长度)
    W 30 29 02 (L1和 R1 DAC 路径)
    W 30 2B 00 (0dB LDAC)
    W 30 2C 00 (0dB RDAC)
    W 30 0E C0 (交流耦合驱动器和差分)
    W 30 25 E0 (为 LDAC/RDAC 和 HPCOM 加电作为独立输出)
    W 30 26 10 (HPRCOM 作为独立输出)
    W 30 2F 80 (DAC L1至 HPLOUT、0dB)
    W 30 40 80 (DAC R1至 HPROUT、0dB)
    W 30 41 0D (HPROUT 加电0dB)
    W 30 33 0D (HPLOUT 加电0dB)

    请根据上述设置验证您的 SoC WCLK 和 BCLK、并检查 HP 输出。

    2) 2)线路1输入至 PCM 接口输出设置:

    W 30 08 00 (编解码器处于从模式)
    W 30 09 40 (具有16个数据长度的 DSP 模式)
    W 30 62 B0 (GPIO1作为 PCM WCLK)
    W 30 63 80 (GPIO2作为 PCM BCLK)
    W 30 65 21 (MFP3启用为音频输入)
    W 30 15 F8 (设置 LINE1R 差分)
    W 30 16 84 (设置 LINE1R 0dB 并为右侧 ADC 加电)
    W 30 13 84 (为左侧 ADC 加电并将 LINE1L 差分设置为左侧 ADC 0dB)
    W 30 0F 00 (左侧 ADC 0dB)
    W 30 10 00 (右侧 ADC 0dB)

    请根据上述设置验证您的 SoC PCMCLK 和 PCMSYNC。

    此致。

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

    大家好、Pdjuandi、

    我已经使用您的命令测试了回送功能。 测试结果非常完美。 音频编解码器可以将 PCM 输出转换为 PCM 输入。 非常感谢!!

    BR

    Kevin

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

    不用客气。

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

    不用客气。