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.

[参考译文] PCM5252:写入寄存器和应用时钟之间的延迟:BCK、SCK、LRCK

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/922873/pcm5252-the-delay-between-completion-of-writing-to-registers-and-applying-clocks-bck-sck-lrck

器件型号:PCM5252

您好!  

和以前一样、我尝试使用 Spartan-6作为主器件、使用 DAC PCM5252作为主机。 如前所述、我是 SPI 模式对寄存器进行编程、4线 I2S 接口、32位、Flrck = 96kHz、Fbck = 64 * FS、fsck = 128* FS。 我有3个关于寄存器计时和写入的问题、在数据表中找不到答案。  

1)根据我的理解: 在 AVDD、DVDD、CPVDD 上的电压上升至3.3之后的任何时间、可以应用时钟 SCK、BCK、LRCK。 应用时钟后需要4ms (电压上升至标称3.3V 后可随时应用)才能将 PCM5252拉出复位状态。 但是、相对于应用的时钟、何时会发生对寄存器的写入? 何时应在引脚上应用 BCK、SCK 和 LRCK?  是否需要在 SPI 编程寄存器完成后进行(如果是、延迟是多少)? 或者、只要数据被拉至 Z 状态、我就可以随时(在写入寄存器之前、同时甚至在写入完成之后)应用时钟。  

2) 2)只需进行双检查:寄存器地址为8位。 我要写入的2个寄存器是 reg 40和 reg 42。  我们以下面的示例为例:我要写入 reg x40、我的命令是 x03 (32位数据大小)、所以我的写入字是 x4003。 我是否理解正确、我需要将 x40向左移位以为 r/w 腾出空间(因此第七个地址位变为 MSV)? 因此,尽管 r/w=0,x40是否变为 x80,我的写字- x8003?

3) 3)这可能很明显、但我是否需要在每次写入新寄存器时指定 r/w?

谢谢、

罗马

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

    您好、Roman、

    无论 I2S 状态如何、都可以随时对寄存器进行写操作。  我建议您在根据需要配置器件之前将 DIN 保持为低电平。

    在通信方面-您是否使用 SPI 接口? 如果是这样、则数据为0x03的寄存器地址0x40看起来像0x8003。

    如果您正在进行连续写入、则只需使用命令位对第一个寄存器寻址。  如果您发出多个2字节命令、则需要在每个帧上设置 R/W 位。  请参阅图66和68。

    谢谢、

    Paul

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

    尊敬的 Paul:

    1)但如果 DIN 在对寄存器进行编程之前为低电平、这是否意味着在对寄存器进行编程并对器件进行配置后必须应用 BCK、SCK 和 LRCK? 我是说、如果 DIN 在写入完成之前保持低电平、但应用了 BCK、SCK 和 LRCK、则 PCM5252将对这些零进行采样。 或者我是否误解了某些内容?  

    2) 2)是的、我使用 SPI。 好的、我看到了。 谢谢你。

    3) 3)我已经检查了这些数字。 我仍然有点困惑、因为我认为连续写入是任何写入过程、包括写入多个寄存器。 好的、首先、很抱歉我在上一封电子邮件中给出了错误的示例。 我将纠正它。 我使用 SPI 模式对寄存器进行编程、4线 I2S 接口、32位。

     我只需要写入2个寄存器:

    -寄存器40 (十六进制:28)-我需要写入 x03,这意味着 I2S 32位字。

    -寄存器42 (十六进制: 2A)-我需要写入 x01、以便仅使右侧通道静音。

    我是否理解为十六进制:28变为十六进制:50  、十六进制 2A 变为十六进制54?  
    换言之、我的2个命令  是 x5003和5401 (如果每个命令使用 r/w 位)还是  x5003和2A01 (如果 r/w 仅用于第一个寄存器)?

    谢谢、

    罗马

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

    尊敬的 Paul:

    我在上一篇文章中还提出了2个要点。 我删除了该帖子、然后(意外地)再次发布、所以可能由于系统中的干扰、我的回复没有通知您。 请听我说。

    最棒的

    罗马

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

    您好、Roman、

    我的要点是、如果您在配置器件之前开始发送数据、您可能会输出您不打算输出的内容。  通过保持 DIN 处于低电平、您可以确保即使锁存数据、它也只是零、不会影响输出。

    3.当我们说"连续写入"时、意味着主器件在同一帧中发送额外的数据字节。  例如、假设您要写入寄存器4值0xAA 和寄存器5值0x55。  您可以发送两条命令:

    W 0x80 0xAA

    W 0xA0 0x55

    或者、在连续模式下、您可以发送:

    W 0x80 0xAA 0x55

    这是因为寄存器4和5是相邻的寄存器。  PCM 将自动增加每个额外字节的地址。

    如果要写入两个非顺序寄存器、则必须以两个单独的命令发送。   

    谢谢、

    Paul

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

    尊敬的 Paul:

    我明白了。 是的、我将使用2个单独的命令。 然后我有最后一个问题:如果我要编写2个单独的命令、我需要使用主器件选择 MS HIGH 来分离它们、对吧? 如果我不使用自动增量写入、那么在第一个写入命令之后、MS 应该返回高电平并保持该状态、直到我决定写入第二个命令、对吧?

    最棒的

    罗马  

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

    是的、两个单独的命令要求 CS 在它们之间处于高电平。  您的理解是正确的。