我们正在尝试在使用 iMX7S5EVM08SC 的定制板上的 u-boot 中使用 MIPI DSI 接口。该界面适用于 Linux,因此我们知道没有硬件问题。在 u-boot 和 Linux 中添加调试以写入 MIPI_DSI 寄存器,所有设置都相同,但在 u-boot 中,我们无法向显示器发送命令。
我尝试执行命令初始化步骤,即表 13-15 中的第 7 步。
第一个问题:当它针对步骤 2 说“SFR_Write(Display Controller_registers, S-i80, IF_888”) 时,它指的是什么寄存器设置?寄存器 MIPI_DSI_CONFIG 具有 888 的设置,但该寄存器在步骤 6 中初始化。MIPI_DSI_RGB_STATUS 具有S-i80 与 RGB 有点不同,但该寄存器是只读的。
我们无法通过第 10 步,因为时钟和数据通道永远不会进入停止状态。无论我们等待多久,寄存器 MIPI_DSI_STATUS 都保持在 0x001002f0。第 10 步的描述表明它在重置或开机后默认强制停止状态,但这并没有发生。
第二个/主要问题:什么可以阻止它进入停止状态?
这让我想知道 MIPI_DSI 或其 DPHY 是否存在时钟问题。但是,设置看起来是正确的,并且与我在 Linux 中看到的一致。
MIPI_DSI_CLK_ROOT = 10000000
MIPI_DPHY_REF_CLK_ROOT = 10000000
所以两个时钟都启用,它们的根是 OSC_24M
CCM_CCGR101 = 3
CCM_CCGR102 = 3
因此始终需要 MIPI_DSI 和 MIPI_PHY 时钟的域时钟。
第三个问题:是否有任何其他时钟可能会阻止 MIPI_DSI 的正常运行?
以下是我编写的寄存器以及我观察到的缺少停止状态的情况:
将 02017700 写入 MIPI_DSI_CONFIG
将 00001000 写入 MIPI_DSI_CLKCTRL
将 050002d0 写入 MIPI_DSI_MDRESOL 将
0d0177f7 写入 MIPI_DSI_CONFIG
将 00806320 写入 MIPI_DSI_PLLCTRL
将 0 写入 MIPI_DSI_ESCMODE
MIPI_DSI001STATUS 卡在 2
状态寄存器没有设置 STOPSTATECLK 或 STOPSTATEDAT 位。在 Linux 中,此寄存器为 0x001001c3,因此这些位已设置。