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.

[参考译文] PCM5122:SPI 配置

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/947857/pcm5122-spi-configuration

器件型号:PCM5122

 

您好!

我正在 我的项目之一中使用上述 DAC (PCM5122)。

我 无法使用 SPI 配置模式从 DAC 执行读/写操作。

我想知道 、访问这些寄存器和页面选择需要遵循任何特定的序列。  

请帮助我为主模式配置哪些寄存器。   

谢谢、此致

Sathish

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

    你好,Sathish,

    您能否共享您的电路原理图和 SPI 帧的示波器截图?

    此致、

    AK

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

    您好、AK、

    请查看以下附件。

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

    您好!

    您共享的附件在帖子中缺失。

    请在编辑模式下使用 e2e 工具栏中的附加按钮进行附加。

    请勿复制和粘贴。

    此致、

    AK

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

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

    您好、AK、

    请 浏览附件、

    黄色表示 500kHz 的时钟 MC、

    绿色表示片选 MS、

    蓝色表示数据(MOSI)-7F00 (读取寄存器63/PAGE 0)

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

    您好、AK、

    请 浏览附件、

    黄色表示 500kHz 的时钟 MC、

    绿色表示片选 MS、

    蓝色表示数据(MOSI)-7F00 (读取寄存器63/PAGE 0)

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

    您好!

    您的框架对我来说看起来很好。 请确保您正在 PCM 侧探测这些问题。

    您能向我展示一下您在 SDO 上得到了什么吗? 它是否仍然为三态? 如果是、请先尝试读取状态寄存器、让我知道它是什么。

    此外,在原理图中,我可以看到两个单独的接地连接,它们都在板上的某处短路? 如果不是、请执行相同的操作。

    此致、

    AK

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

    您好、AK、

    是的、我们在 PCM 侧也会得到相同的帧。

    蓝色表示 SDO (MISO)->目前在电路板上、我使它以4.7K 的电压上拉。 SDO 引脚上的数据会持续切换、而不管我们尝试读取的寄存器如何。 我 正在尝试读取 page0 /寄存器63、该寄存 器的默认值为0x2020。

    是的、两个接地短路。

    此致

    Sathish

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

    您好、AK、

    如果器件处于断电状态、我们可以执行 SPI 操作吗?

    并帮助我们在器件处于断电模式时如何使其进入正常模式?

    我们不会在 VNEG 引脚上获得任何电压,它是否会导致任何问题?

    此致

    Sathish

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

    你好,Sathish,

    除非接收到有效的 I2S 数据、否则器件不会在电荷泵输出时提供任何值。 您是否在上电后向 DAC 提供 I2S 信号?

    当检测到时钟错误(SCK、BCK 和 LRCK)或时钟停止时、PCM512x 器件会自动进入待机模式。 DAC 和线路驱动器也会断电。当 BCK 和 LRCK 保持低电平超过1秒时、PCM512x 器件会自动进入断电模式。 除在待机模式下禁用的电荷泵和偏置/基准电路外、断电模式还会禁用负电荷泵和偏置/基准电路。

    当预期的音频时钟(SCK、BCK、LRCK)被施加到 PCM512x 器件时、 或者、如果 BCK 和 LRCK 正确启动、而 SCK 保持接地电平持续16个连续 LRCK 周期、器件将自动启动加电序列。因此、请确保在器件加电后应用这些信号、并确保电荷泵输出-3.3V。

    然后、您启动 SPI 事务。  这是我对该器件的理解。 应用工程师在度假时支持此设备、因此请等待响应延迟。 但请尝试我提到的建议。

    此致、

    AK

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

    您好、AK、

    感谢您的回答。

    我们将持续为器件提供 SCK 时钟。

    我们希望它在主模式下运行,因此除非器件提供 LRCK 和 BCK 时钟,否则我们无法 将 I2S 数据提供给器件。

    负电荷泵是否会导致 SPI 读取/写入操作中出现问题? 我想不是。?

    我们仍然无法执行读/写操作。 请尽快帮助我们解决这个问题。

    如果可能、请提供应用工程师联系详细信息。

    此致、

    Sathish  

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

    您好!

    该器件的应用工程师正在休假。

    您能告诉我您为器件提供的 SCK 频率是多少? 这是12MHz 等非音频速率主时钟吗?

    如果是、您需要根据数据表第51页进行一些更改。 否则、请遵循数据表第50页中给出的指南

    此外、您还可以浏览以下 e2e 线程、用户在该线程中提出了相同的问题、解决方案和编程示例。

    https://e2e.ti.com/support/audio/f/6/t/267830?tisearch=e2e-sitesearch&keymatch=pcm5122%20master#pi320995=2

    此致、

    AK

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

    您好、AK、

    现在、我为器件提供了12.288MHz 时钟、作为从 FPGA 中的 PLL 生成的 SCK。

    该 SCK 时钟是否会影响 SPI 读取/写入操作?  

    为了使时钟结构仍然如图65所示、我需要通过 SPI 接口配置这些寄存器、而我现在无法这样做。

    谢谢、此致、

    Sathish

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

    你好,Sathish,

    我担心由于某些数字串扰、命令数据/时钟被错误锁存。  我注意到、在您的屏幕截图中、SDO 线在15个时钟周期而不是16个时钟周期后似乎变为高阻态。  作为快速测试、您能否显著降低 SPI CLK 频率? 像10kHz 这样的频率就足够了。  

    另一个很好的测试是写入寄存器并尝试读回它。  此外、不应提供 SCK、我相信您现在正在这样做。

    谢谢、

    Paul

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

    尊敬的 Paul:

    SDO 信号在每15个时钟周期后不会变为高电平、它持续变化。

    我已经尝试对 该寄存器进行寄存器写回读、但仍然没有得到。

    我为 SCK 提供12.288MHz 时钟、它 可能具有容差、可以吗? 或者我是否需要提供其他频率?

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

    I2S 信号的 SCK 应该可以、我更关心 SPI 时钟信号。  您能否降低 SPI 信号的通信速度以查看这是否有所改进?  谢谢、

    Paul

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

    尊敬的 Paul:

    我们已经给出了25KHz 的 SPI 时钟、但我们仍然没有在 SDO 引脚上得到任何东西、我们正在尝试读取寄存器3F (63)。

    我要在下面附上示波器照片、请仔细阅读。

    谢谢、此致

    Sathish

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

    尊敬的 Paul:

    我们提供了12.5KHz 的 SPI 时钟。

    我们可以看到、无论我们尝试读取的寄存器是什么、在 SPI 时钟的第16个上升沿、SDO 都会变为高电平、下面连接了示波器短路。

     

    谢谢、此致

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

    尊敬的 Vinay:

    这是一种非常有趣的行为。  您的 CS 线路是否一致? 它是否会间歇性地拉高?  许多 MCU 要求您在允许 CS 变为高电平之前监控 SPI TX 缓冲器、否则在模块发送整个命令之前可能会将其置为高电平。  同时监控所有三个信号将会很有用。  例如、在上一个帖子中的第一个图像中、CS 似乎在两个16位命令之间保持低电平(因为 MISO 不会进入高阻态)。   

    您能否确认:

    是否提供 SCK?

    VNEG 为~-3V?

    LDOO 为~1.8V

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

    尊敬的 Paul:

    给定的 SCK 为12.288MHz。

    VNEG 大约为500mV。

    LDO 为1.8V。

    我们正在尝试写入 寄存器12并从同一寄存器读取

     蓝色表示 MOSI、数据为0x1803 (写入12个寄存器)和0X1900 (从12个寄存器读取)

     绿色表示第二幅图像中的 MISO。


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

    尊敬的 Paul:

    您能否通过共享配置 DAC 输出所需的寄存器详细信息来帮助我们?

    我们在主模式下工作、SCK12.288MHz

     

    谢谢、此致

    Sathish

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

    你好,Sathish,

    您需要执行以下步骤:

    #### CLK 分频器设置##########
    ####在 VREF 模式下使用 VREF PLL 设置查找采样率、而 SCK ####
    在此示例中、查找48kHz 速率、 具有12.288MHz SCK ####
    
    禁用自动时钟配置
    (带25 72
    # PLL P 分频器)至3
    (带14 03
    # PLL J 分频器)至12.D1D2
    (带15 0C
    # PLL D1分频器)至 J.00
    (带16 00
    ) PLL D2分频器至 J.00
    (带17 00
    # PLL) R divider to 1
    w 18 00
    # miniDSP CLK divider (NMAC) to 2
    w 1B 01
    # DAC CLK divider to 16
    w 1C 0F
    # NCP CLK divider to 4
    w 1D 03
    # OSC CLK divider 设置为1 (因为它基于 DAC CLK 的输出、它已经是 PLL/16)
    w 1E 00
    # fs 设置应该被设定为单速率速度(48kHz)。
    W 22 00
    # IDAC1设置每个时钟的 miniDSP 指令数。 (设置为1024)
    w 23 04
    # IDAC2
    w 24 00
    ####################################################
    
    ####主模式设置##################
    # bck、LRCK 输出
    w 09 11
    #主模式 bck 分频器设置(生成64fs)
    w 20 03
    #主模式 LRCK 分频器设置(再将 bck 除以64以生成1fs)
    w 21 3F
    #主模式 bck、LRCK 分频器复位释放
    w 0C 7F
    ######################################################
    
    ####待机请求和发布######
    #待机请求
    w 02 10
    #待机释放
    w 02 00
    ################################################################ 

    您是否能够解决通信问题?

    谢谢、
    Paul

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

    尊敬的 Paul:

    感谢您的回答。

    现在、我们能够以25kHz 的 SPI 时钟频率在 SPI 接口上执行读取和写入操作。

    在上述寄存器中、我们将写入与主模式设置相关的寄存器以及待机请求和释放。

    根据硬件、器件处于 VCOM 模式、我们是否需要 写入 PLL 配置寄存器?

    此外、我们还可以在 VNEG 引脚、LRCK 和 BCK 时钟信号处看到-3.3V 电压。

    我们尝试通过写入与 LRCK 和 BCK 相关的16位数据来执行 I2S 接口。

    无论数据如何、OUTL 和 OUTR 的状态都将以低电平重命名。

    如果我们缺少任何寄存器、请帮助我们。

    谢谢、此致

    Sathish

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

    您应该根据您使用的 FMT 配置(即 I2S 标准、RJ、LJ)验证 I2S 数据是否正确格式化。  您还应确认位长度与您配置的 PCM 使用的位长度相匹配。

    否则、您应该读取各种状态寄存器以查看器件是否存在任何故障条件、PLL 锁定问题或"零数据检测"条件。

    谢谢、

    Paul

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

    尊敬的 Paul:

    感谢您的回答。

    我将检查重新接收的寄存器。

    我选择了具有16位数据长度的 I2S 接口。

    请在下面澄清

    我们是否需要为这个 VCOM 运行模式启用 PLL。

     如果不启用 PLL、我们就无法获得输出。

    此致

    Sathish

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

    尊敬的 Paul:

     我已经检查了状态寄存器、

    我已禁用 PLL 并观察到相同情况。

    我已禁用自动静音通道寄存器(第0页/寄存器65 (0x41))和禁用模拟静音寄存器(第1页/寄存器6)。 但模拟静音通道 寄存器(Page0/register 108)显示通道已静音。

    OUTR 和 OUTL 仍保持 低电平。

    谢谢、此致

    Sathish

     

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

    尊敬的 Vinay:

    同时、请读取状态寄存器中的值并将其发布到:

    PLL 可能未锁定、这将强制器件静音。

    此外、您的操作需要 PLL。

    谢谢、

    Paul

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

    尊敬的 Paul:

    我们尚未启用 PLL。 我们从外部提供 SCK、如何使用 PLL、请澄清一下?

    我们已经检查了上述指定的寄存器、

    在采样率状态寄存器中、我们会得到 SCK 比率误差! 和静音控制寄存器状态按预期显示。

    请阐明原因可能是什么、以及我们需要为 DAC 提供的每个采样和每个通道的时钟数量?

    详细信息:对于16位数据、我们需要为每个样本向 LRCK 提供 wrt 的 BCK 时钟数量。  

    此致

    Sathish

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

    尊敬的 Paul:

    我们已读取上述所有状态寄存器、我们将按预期正确获取所有寄存器的状态。

    我们将 I2S 输入作为 从0x0000到0xFFFF 的16位数据提供、我们尝试了该范围内的多种组合。 输出仍然 处于低电平。

    我们怎么知道 I2S 数据锁存到 DAC、是否有寄存器会提供该 I2S 数据状态?

    此致

    Sathish

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

    你好,Sathish,

    由于器件需要许多内部时钟信号、例如电荷泵和 DSP 处理器、因此需要 PLL。  在配置中禁用 PLL 时、此器件将不起作用。

    我提供的命令将配置 PLL 以提供所有内部时钟、因此执行这些命令非常重要。

    BCK 应提供64×FS 或32×FS 时钟、以便 I2S 数据从 MCU 发送到 PCM。  您应捕获 LRCK、BCK 和数据的示波器快照、并验证格式是否正确。   

    谢谢、

    Paul