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.

[参考译文] LP5890:STM32上的 CCSI 通信

Guru**** 2551110 points
Other Parts Discussed in Thread: LP5890

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1228380/lp5890-ccsi-communication-on-stm32

器件型号:LP5890

您好、TI 团队、

在对 STM32G071 Nucleo 板进行了大量实验之后、我仍未能实现 LP5890 EVM 板的照明。  我已经浏览了提供的示例代码并将其转换为 STM32 HAL 驱动程序。 我还使用了 LP5890寄存器映射生成工具来确保寄存器设置正确。

我当前以2MHz 波特率运行 SPI。 我已经设置了一个计时器以该相同的频率持续运行。  

下面是我当前看到的内容的屏幕截图:

通道2是设置为时钟的计时器、它连接到 EVM 板上的 SCLK。 通道3是 Nucleo 板上的实际 SPI 时钟。 我将在我将在 MOSI 中输出的 MISO 线路上得到相同的数据(对于 W_CHIP_INDEX 为0xAA10)。 除此之外、我没有看到 SPI 线路上的任何其他运动。

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

    您好、Evan:

    首先、大家已经做得很好、我们可以看到、向 LP5890转换是有效的。 然而、作为0xAA10 (在通道0上)分析的数据使用通道3实际 SPI 时钟作为基准。 对于 LP5890、通道2将是基准电压。 这意味着在通道1上、您有0 (开始位) 0x2A90、然后还有2个零、这与校验位相违背。 因此、需要背靠背 SPI 传输、以避免 LP5890捕获周期中 SPI 不进行传输。 以下是 LP5890 EVM 上的 W_CHIP_INDEX 采集。

    我要强调的另一项是2MHz。 内部 GCLK 应在40MHz 至160MHz 之间的范围内。 最大乘法16意味着最小 SCLK 频率应为2.5MHz。

    此致、

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

    尊敬的 Ben:

    感谢您的反馈和提供的图像。 您的说法是 LP5890使用生成的时钟作为来自微控制器的传入数据的参考、但我不确定您的意思、即采用"背靠背 SPI 传输"。  你说要发送两次相同的东西吗?

    此外、我基于使用以下寄存器映射生成工具配置来使用2MHz:

    根据表中显示的信息、我认为2MHz 应配合我输入的参数有效。

    再次感谢您的帮助。

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

    您好、Evan:

    我说的"背靠背"是指不同字节的传输之间不应有延迟。 我不知道您是否在使用 DMA、但这通常是防止延迟的一个好选项。

    查看您的配置、我应提醒您、内部 GCLK 应至少为40 MHz。 数据表中的第8.3.3节提到了这一点。 此外,1472us 的 Tblank 相当长,可能会有一些视觉闪烁。 可以通过更改刷新率来降低刷新率。 几百微秒通常更好。 如数据表中第9.2.1.5节所述、可以在段和子周期上分配消隐时间。 不过、通常只需要几百微秒的时间。

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

    尊敬的 Ben:

    我确实在 SPI 传输和接收中使用了 DMA。 我不确定我是否获得了正确的数据。 如果逻辑分析仪上的协议看起来错误、那么可能不会。 您是否熟悉 STM32 HAL 驱动程序? 如果我将转换后的代码与您分享、您能帮我吗? 我猜是因为我在代码中犯了一些错误。 我非常接近,并一直在处理这个问题有一段时间,我非常感谢你在这方面的帮助。

    同时、我还简单介绍了如何使用 I2S 协议。 您在 我的其他论坛帖子中建议使用它。 至少在我使用的电路板上、问题在于最大频率为192kHz、远低于我在此所需的时钟频率。 此外、此板仅支持半双工通信、我认为这种通信不能用于 LP5890上的 SIN、SOUT 引脚。 似乎我在尝试使用 SPI 时遇到了困难。

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

    您好、Evan:

    我对 STM32 HAL 驱动程序不太熟悉、但我仍然可以看一下。 我已向您发送朋友请求、希望您能够分享该代码。

    对于 I2S、我认为192kHz 是最大音频频率。 不过、每个音频采样可以是16位。 这意味着串行时钟将在3.072MHz 下运行、即使在6.144MHz 下也会在立体声下运行。

    要启用回读、您实际上必须使用第二个 I2S 模块。 另一个选择是使用仅在您预期接收数据期间启用的 SPI 从机模块。