带有 STM32F4 的 DSI 到 LVDS 桥的 PLL 不工作

PLL of DSI-to-LVDS Bridge with a STM32F4 doesn't work

我正在尝试用 STM32F469 微控制器驱动 SN65DSI84 Bridge MIPI-to-LVDS。基本上,我的STM32提供DSI数据,SN65DSI84将其转换成LVDS格式。

问题

今天,我设法通过 I2C 与我的 SN65DSI84 通信以配置其寄存器,但我没有成功使其 PLL 锁定。

只是为了让你明白,SN65DSI84需要一个时钟用于LVDS输出(LVDS像素时钟)。正如您在数据表第 14 页所读到的,该时钟可能来自外部源或直接来自 DSI 通道。我通过设置 CSR 0x0A 寄存器的位 0 使用最后一个选项。问题是,当我通过 0x0D 寄存器启用 PLL 时,0x0A 寄存器中应该告诉我 PLL 确实已启用的位没有设置。

到目前为止我做了什么

好的,首先我最关心的是锁定 PLL。如果我对数据表的理解正确,实现这一点不需要配置桥的所有寄存器,而只需要配置位于地址 0x09、0x0A、0x0B 和 0x0D 的寄存器。

在我的程序中,我创建了一个函数,允许我配置位于地址 0x0A、0x0B 和 0x0D 的寄存器。简而言之,这是算法:

  1. 我通过在地址 0x0D 发送 0x00 来禁用 PLL 并等待 3ms;
  2. 我在地址 0x0A 发送字节 0x01(LVDS 像素时钟的时钟源来自 MIPI D-PHY 通道,LVDS 像素时钟在 [25 MHz ; 37.5 MHz] 范围内);
  3. 我在地址 0x0B 发送字节 0x08(将 DSI 时钟除以 2);
  4. 我通过在地址 0x0D 发送 0x01 来启用 PLL;
  5. 我通过在地址 0x09 发送 0x01 来重置桥,因为根据该寄存器的描述(第 23 页):

This bit automatically clears when set to '1' and returns zeros when read. This bit must be set after the CSR's are updated...

  1. 我正在等待通过读取并等待位 7 设置为 0x0A 地址来启用 PLL。但是这个位从未设置。
  2. 我应该等待 3 毫秒

Note : After PLL_EN_STAT = 1, wait at least 3ms for PLL to lock.

但我从未达到这一点,因为我在之前的第 6 点处处于循环中。如果我不检查 0x0A 地址处的第 7 位并绕过第 6 点,它似乎不起作用,因为我没有通过 LVDS 连接器看到 LVDS 时钟上的时钟。

我检查了我的寄存器的值(通过读取它们)并且它们的值是正确的。

因为它似乎没有工作,并且根据位于地址 0x0D(第 24 页)的 PLL_EN 寄存器的描述:

[...]. The input clock source must be active and stable before the PLL is enable

我认为问题可能来自 DSI 端(STM32F4 端),但这是我在 上述步骤之前所做的。

  1. 我启用 DSI 主机外设(通过 STM32CubeMx 进行配置);
  2. 我启用了 LTDC 外设(通过 STM32CubeMx 进行的配置);
  3. 我启动 DSI 模块。

我检查过在这些初始化过程中没有发生错误,一切似乎都正常。我无法目视检查 DSI 时钟,因为我无法物理访问 DSI 时钟 PIN,我无法判断 DSI 时钟是否确实在工作。但是,如果我错了请告诉我,为了确保它正常工作,我检查了 DSI 主机 PHY 控制寄存器 (DSI->PCTLR) 以确保 CKE 位已启用([=14= 第 616 页) ]).确实如此。

反正我真的不知道我现在还能做些什么。 SN65DSI84 似乎没有启用(或锁定),我不知道为什么。对我来说,问题可能来自各方面: - 错误的 DSI 初始化(stm32 端); - 桥配置错误(sn65dsi84 端); - 其他 ?

在此先感谢您的帮助!

注意:我还没有提供程序代码,以免让这个 post 太混乱,因为有很多要复制。不管怎样,有什么想看的部分尽管问我,我都会提供。

经过一段时间(以及 Texas Instrument 的一些帮助),我部分解决了我的问题。我错误地设置了 CHA_DSI_CLK_RANGE 寄存器(0x12 地址)。我使用 DSI 主机的“lane_byte_clock”值而不是 DSI“DDR 时钟”值,导致 PLL 从未锁定(DSI 时钟值、LVDS 像素时钟值和 DSI 时钟分频器之间不匹配)。

对于对此感兴趣的人,请参阅 ST 应用说明 4860 第 75 页中有关 DSI 主机的内容,我建议那些尝试驱动此组件的人使用 Texas Instrument 的 DSI Tuner tool

现在我显示了图案图片,但我的屏幕不稳定(闪烁,奇怪的伪影......我猜肯定是因为时序参数设置不正确)。

谢谢!