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.

[参考译文] TLV320ADCX140SW 驱动器:[TLV320ADCX140]如何将16位采样调整为 SoC 的固定32位时隙时钟

Guru**** 2393725 points
Other Parts Discussed in Thread: TLV320ADC3140

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1436575/tlv320adcx140sw-drivers-tlv320adcx140-how-to-adapt-16-bit-sampling-to-soc-s-fixed-32-bit-slot-clock

器件型号:TLV320ADCX140SW 驱动器
主题中讨论的其他器件:TLV320ADC3140

工具与软件:

您好:

当前使用的 I2S IP 需要 TDM 模式、并且 SCLK (时隙时钟)必须为32。 因此、48K/16bit/4通道格式录制所需的最小 SCLK 为3.072M。

I2S 具有相应的寄存器、这些寄存器被配置为在一个时钟周期内对指定的时钟门控有效、例如32位、但实际的输出时钟信号是16位。

我想知道 TLV320adcx140编解码器的调整应该如何配置寄存器来满足此 I2S 要求

如下32位时隙 BCLK: 16位 BCLK + 16位低电平

将 传输16位音频采样

非常感谢

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

    荣晋市

    时隙时钟不是 I2S 标准的一部分。 您能否更详细地介绍一下什么是时钟? 请详细说明您的要求、因为不清楚。

    您在图中显示的时钟是什么?

    谢谢!
    Jeff McPherson

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

    您好、Jeff:

    感谢您的回答。

    1、 如图所示、它是由 SoC 生成的用于捕获16位样本的 TDM BCLK

    2、情况有点像当我们采集24位样本时、我们需要使用32位时钟、但我们屏蔽低8位、而在这里、我们屏蔽低16位。

    3、我的问题是:我可以使用图中所示的屏蔽 BCLK 来 收集  (48K/16bit/4ch) 16位 样本吗? 或者、我是否可以使用3.072M BCLK  (48K/322/4ch)   在 tlv320adcx140上收集(48K/16bit/4ch) 16位样本?  因为 SoC 的 BCLK 也可以配置为连续时钟、而不是保持低16位拉至低电平、如图所示。

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

    您好!

    您应该对器件使用连续 BCLK、 并且可以指定输出数字数据的字长与寄存器0x07的长度。 可以将其设置为16位。 该器件需要无屏蔽的连续 BCLK、如果您能够提供3.072MHz BCLK、则可以通过将器件设置为16位来收集16位样本。 输出数据将与您发送的数据类似、但无需同时屏蔽时钟。

    此致!
    MIR

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

    您好、Jeff:

    抱歉、我 没有正确描述 BCLK 频率。 如果是连续 BCLK、则48K/16位/4通道 BCLK 频率应该是6.144MHz

    问题应该是如何使用6.144MHz BCLK 来收集 ADC 输出48K/16bit/4通道样本

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

    您好!

    6.144MHz BCLK 也应该适用于该器件、但您应该只需要一个3.072MHz BCLK。 使用6.144MHz 时、您的音频数据将是16位、每个样本之间具有16位的填充。 您应该仍然只使用连续 BCLK。 您是否需要有关示例脚本的帮助来将 TLV320ADC3140与6.144MHz BCLK 配合使用?

    此致!
    MIR

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

    Hi μ A、

    如前所述、当 SoC 收集(48K/16bit/4通道)样本时、它只能输出6.144MHz BCLK

    1、如果​​我将 TLV320ADC3140的数据长度配置为16位(ASI_WLEN)、SoC 实际上只能收集前两个通道的数据、最后两个通道的数据全部填充为0

    2、如果数据长度配置为32位(ASI_WLEN)、SoC 可以收集(48K/16bit/4通道) 4通道样本、但我担心16位高位可能会被拦截、因为 TLV320ADC3140的实际输出是32位、而 SoC 在屏蔽后需要16位

    ASI_WLEN -> 16位

    我需要以下方面的帮助:

    实际上、我们希望在6.144MHz BCLK 上将 ASI_WLEN 配置为16位、以便 ADC 可以输出16位有效采样+ 16位(可能为0)、从而 SoC 可以收集完整的16位采样、非常感谢。

    此外、我们在 Linux 上使用 TLV320ADC3140、并移植了以下驱动程序代码:

    https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/sound/soc codecs/tlv320adcx140.c.

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

    您好!

    在 TDM 模式下、以16位收集4个通道不会出现问题、因为 TDM 有8个通道、额外的4个通道将占用不需要的 BCLK 周期的一半。 听起来您的寄存器甚至发送的数据路径都存在问题。 如果您处于 TDM 模式但未接收通道3和4、则3和4可能未路由到输出?

    您的寄存器设置是多少? 您是否能够提供寄存器转储? 您在 Linux 系统中应用哪些设置?

    此致!
    MIR

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

    您好、Jeff:

    我将输出路由为:

    IN0 -> OUTCH0

    IN1 -> OUTCH2

    IN2 -> OUTCH4

    IN3 -> OUTCH6

    读取的数据似乎正确、感谢您的帮助

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

    您好!

    您是否需要更多帮助或问题是否得到解决?

    此致!
    MIR

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

    您好!

    此问题已解决、工作正常。 谢谢