Configuration DSI到LVDS桥接器的PLL,带有STM32F4和x27;行不通

Configuration DSI到LVDS桥接器的PLL,带有STM32F4和x27;行不通,configuration,display,stm32f4,Configuration,Display,Stm32f4,我正在尝试使用STM32F469微控制器驾驶a。基本上,我的STM32提供DSI数据,SN65DSI84将其转换为LVDS格式 问题 今天,我设法通过I2C与我的SN65DSI84通信以配置其寄存器,但我没有成功地将其PLL锁定。 为了让您理解,SN65DSI84需要一个用于LVDS输出的时钟(LVDS像素时钟)。如您在数据表第14页所读,该时钟可能来自外部源或直接来自DSI通道。我通过设置CSR 0x0A寄存器的位0来使用最后一个选项。问题是,当我通过0x0D寄存器启用PLL时,0x0A寄存器

我正在尝试使用STM32F469微控制器驾驶a。基本上,我的STM32提供DSI数据,SN65DSI84将其转换为LVDS格式

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

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

到目前为止我做了什么 好的,首先我关心的是锁相环的锁定。如果我正确理解了数据表,实现这一点不需要配置网桥的所有寄存器,只需要配置位于地址0x09、0x0A、0x0B和0x0D的寄存器

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

  • 我通过在地址0x0D发送0x00禁用PLL,并等待3ms
  • 我在地址0x0A处发送字节0x01(LVDS像素时钟的时钟源来自MIPI D-PHY通道,LVDS像素时钟在[25 MHz;37.5 MHz]范围内)
  • 我在地址0x0B处发送字节0x08(将DSI时钟除以2)
  • 我通过在地址0x0D处发送0x01来启用PLL
  • 我通过在地址0x09处发送0x01重置了网桥,因为,根据该寄存器的描述(第23页):
  • 该位在设置为“1”时自动清除,读取时返回零。此位必须在CSR更新后设置

  • 我正在等待通过读取并等待位7设置在0x0A地址来启用PLL。但这一点从未确定
  • 我应该等3毫秒
  • 注:在PLL_EN_STAT=1后,等待至少3ms,使PLL锁定

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

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

    由于它似乎不起作用,根据地址0x0D处PLL_EN寄存器的描述(第24页):

    [……]。在启用PLL之前,输入时钟源必须处于激活和稳定状态

    我认为问题可能来自DSI端(STM32F4端),但以下是我在执行上述步骤之前所做的操作

  • I启用DSI主机外围设备(通过STM32CubeMx进行配置)
  • 我启用LTDC外围设备(通过STM32CubeMx进行配置)
  • 我启动DSI模块
  • 我检查了一下,在这些初始化过程中没有发生任何错误,一切似乎都正常。我无法目视检查DSI时钟,因为我无法实际访问DSI时钟引脚si,我无法判断DSI时钟是否确实工作。但是,如果我错了,请告诉我,为了确保它工作正常,我检查了DSI主机PHY控制寄存器(DSI->PCTLR),以确保CKE位处于启用状态(第616页)。的确如此

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

    提前感谢您的帮助

    注意:我还没有提供程序代码,因为有很多东西需要复制,所以我不想让这篇文章太混乱。无论如何,请不要犹豫,问我您想看的部分,我会提供。

    几次之后(以及德州仪器的一点帮助),我部分解决了我的问题。我错误地设置了
    CHA\u DSI\u CLK\u范围
    寄存器(
    0x12
    地址)。我使用DSI主机的“lane_byte_clock”值而不是DSI“DDR clock”值,导致PLL从未锁定(DSI时钟值、LVDS像素时钟值和DSI时钟分频器之间不匹配)

    对于对此感兴趣的人,请参阅ST Application Note 4860关于DSI主机的第75页,我建议尝试驱动此组件的人使用来自德克萨斯州的仪器

    现在我显示了模式图片,但我的屏幕不稳定(闪光,奇怪的伪影…当然是因为时间参数设置不正确,我猜)


    谢谢

    我担心——这是一个如此复杂的硬件,使得远程提供任何解决方案都是不可能的。就个人而言,我会尽量不使用HAL库,因为我不信任它们。我认为,如果没有一个合适的逻辑分析仪或至少是一个示波器,它将很难解决