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.

[参考译文] PCM1792A:无法通过 SPI 总线读取寄存器

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1524850/pcm1792a-not-able-to-read-registers-over-spi-bus

器件型号:PCM1792A

工具/软件:

我有一个应用、用于通过 ESP32 控制 PCM1792A。  此时我只是尝试通过 SPI 总线读取寄存器。  ESP32 配置为模式 0、时钟速度设置为 500kHz。  逻辑分析仪数据对我来说看起来是正确的、但在发送设置了 MSB 读取字节的寄存器地址后的第 2 个字节传输期间、PCM 芯片不会以任何数据进行响应。

当前我的启动过程是:

1、为 ESP32 和 PCM1792A 上电

2.开始 I2S 数据传输(左对齐并移位 1 位、24 位样本、SYSCLK 36MHz、BCLK<xmt-block1> 5MHz</xmt-block>)。 5MHz。

3.将 PCM1792A 复位引脚置于低电平达 100mS、然后置于高电平、然后等待 2000ms

4.通过 SPI 将 0x9000 发送到 PCM1792A

我预计会收到 0x00FF、根据 数据表、寄存器 16 的默认值为 0xFF、但我总是收到 0x0000。

周围的混乱我发现、如果我发送 0x90A5A5A5、我会收到返回 0x000010A5。  所以,我知道芯片是活的,但没有表现出预期。 字节 0xA5 只是任意的、无论我替换为 A5 的任何值都将由 PCM 芯片在第 4 个字节上回显。

对于我的行为有什么明显的突出之处吗?

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

    您好、Jimmy、  

    SPI 通信协议不支持确认位、并且 SPI 不验证 是否正确接收到数据。 因此它不像 I2C 检查。

    从您的描述来看、这不是 DAC 本身的问题。 我建议  先使用 I2C 对寄存器 进行编程、一旦 您可以成功读回寄存器并且 输出符合预期、那么 您可以 再次将 MSEL 切换回低电平 、以 将模式切换回 SPI 并使用 SPI 进行尝试。  (可从 TI.com 下载 PPC3 并使用其 I2C 主器件对寄存器进行编程)

     使用以下公式确保您的 CLKS 有效。 (您的帖子中未提供采样率,并且您的 CLKS 全部进行了四舍五入)

    BCLK =通道数 x 通道 深度 x  FS

    根据、SCK 必须有效 表 1. 系统时钟速率 了解常见的音频采样频率。  

    最后、根据检查格式 第 18 页 正常运行。 我们有 L/R 对齐或 I2S 接地。 当您提到左对齐移位 1 位时、您可能是指 I2S。 在任何速率下、请检查相对于 BCK 和 LRCLK 的边沿和移位。

    此致、

    Arash

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

    I2S 时钟频率是否会导致 SPI 总线无法读取寄存器的问题?  我将查看是否可以将 MCU 上的引脚从 SPI 重新分配给 I2C、并尝试通过这种方式控制(我想我可以)。

    我还将使用该公式来检查频率。  是的、在第 18 页、我遵循 I2S 格式、96k 采样率 24 位。

    我本来希望 SPI 总线像数据表的第 21 页一样进行回复、但在尝试读取寄存器时、MDO 引脚上的第 2 个字节始终为 0。

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

    我怀疑它能减轻问题。

    校正时钟并 首先使用 I2C 运行。

    Arash