RT595 之 MIPI DSI 点屏流程

前面的博文 《RT595 之 MIPI DSI 时钟配置》 只简单介绍了 MIPI DSI 和其中的 Clock 配置,对初次使用 MIPI 屏的朋友来说,可能还不太清楚整个点屏流程,这篇博文就作为补充,继续以 RT500 EVK 为例介绍一下 MCU 点亮一个 MIPI 屏大致流程,以及一些需要注意的问题。


一、MIPI 的 D-PHY、DSI

MIPI D-PHY 支持两种传输模式:

  • High-Speed 模式(简称 HS 模式):用于高速同步数据传输。
  • Low-Power 模式(简称 LP 模式):主要用于控制命令传输,该模式也可用于低速异步数据传输。

例如 Video 模式下的数据传输就是使用 HS 模式。

MIPI DSI 支持两种操作模式:

  • Video 模式:主控制器到 LCD 间的数据传输是以实时像素流的方式进行的,且该像素流只能以 High-Speed 模式进行传输。
  • Command 模式:主控制器和 LCD 交换数据主要是通过发送命令和数据到 LCD 模块,该模块包含一个显示控制器,显示控制器包含本地寄存器和帧缓冲区。

注意,这里的 Video Mode & Command Mode 指的是 MIPI DSI 的操作模式,而不是屏本身的类型,对于屏的描述在下一章节。


二、MIPI 屏

兼容 MIPI DSI 接口的 LCD 至少支持 Command 模式 和 Video 模式两种操作模式中的一种。至于实际使用哪种模式是根据具体 LCD 的结构和性能来决定的。我们后面举例所使用的就是 Video 模式的屏。

  • Video 模式的屏:大多使用 Command 模式 (Low-Power) 传输 Driver IC 的配置来进行初始化,配置完成后切换为 Video 模式 (High-Speed) 传输像素流数据。
  • Command 模式的屏:一般屏内部含有 RAM Buffer,大多使用 Command 模式传输 Driver IC 的配置和像素流数据,全程未使用到 Video 模式。

下图是两种屏的简单示例图,可以看到 Command 模式的屏内部自带了一个 RAM Buffer 存放像素数据,Video 模式的屏是实时接收实时显示。



图 1. Video Mode & Command Mode 的屏
(图片来自 AN12940.pdf)


三、MIPI DSI & LCD 相关配置

下面的描述均以 RT500 EVK 的 SDK 例程 lcdif_rgb565为例。


3.1
同步时序、分辨率 等屏相关的设置

同步时序主要是 HSW (Horizontal Sync Width)、HFP (Horizontal Front Porch)、HBP (Horizontal Back Porch)、VSW (VSYNC Pulse Width)、VFP (Vertical Front Porch)、VBP (Vertical Back Porch) 这些,一般在屏的手册上都能找到。

同时别忘了分辨率 HEIGHTWIDTH 的设置。

还有一个就是 MIPI 的数据线组数的设置,比如屏的数据线有 D0P、D0N 就是 1 组,如果数据线是 D0P、D0N、D1P、D1N 就是 2 组。例程默认是使用的 2 组,RT500 EVK 这边最大支持 2 组数据线。

另外,例程默认是将 LCD Buffer 放到外部 pSRAM 的,地址通过宏 DEMO_FB0_ADDRDEMO_FB1_ADDR 来定义的,如果需要修改可自行修改,注意有的会要求 Buffer 的首地址要多少字节对齐,一般大小够用时可以不用修改。

回到 RT500 EVK,这些设置一般在文件 lcdif_support.h 中,如下图。



图 2. 屏相关设置


3.2
屏的 Driver IC 初始化

这个就取决于屏的驱动芯片型号了,一般类似于 sensor 的配置,通过 MIPI 的 Command 模式写 Driver IC 的寄存器来进行配置。

稍微需要注意一点的是,是否满足了屏的上电时序,比如在初始化之前会先 复位 Driver IC,复位时间以及后续延时等。另外一般设置快结束时,会有 Sleep Out (很多 Driver IC 是 0x11)、Display On (很多是 0x29) 的命令,这些命令发送后一般需要一定时间的延时,具体延时时间可参考屏的手册或咨询屏厂。

回到 RT500 EVK,这些设置一般在文件夹“ 工程 / video / ”的驱动文件中,如 fsl_rm68200.c 等,如下图。





图 3. Driver IC Init


3.3 MIPI
相关的配置

MIPI config 一般可以直接用默认的,也有少数屏是需要修改个别地方的,大多都是 video mode、dsi config 等。

回到 RT500 EVK,这些设置一般在 lcdif_support.c 中,如下图。



图 4. MIPI 相关配置


3.4
各种 clock 配置

这里主要是 pixel clocktx_esc clockrx_esc clockmipi_bit clock 这几个时钟,具体可以看前面的博文《RT595 之 MIPI DSI 时钟配置》,链接: https://www.wpgdadatong.com/blog/detail/70087


四、一些点屏问题的排查方向

4.1 供电电流

某 OLED 的 MIPI 屏,Driver IC 一初始化到发送 Display On 命令 (0x29),MCU 就大概率复位重启,屏不亮或闪一下就灭,最后排查发现是供电不足,每次执行 Display On 时,MCU 无法提供亮屏所需要消耗的电流,最后单独电源供电后正常。


4.2 Driver IC
特殊命令的延时

由于 Driver IC 自身的复位、出睡眠、点亮显示 等操作需要一定的时间,如果发送这类命令后,没有留给驱动芯片足够的时间完成操作,会导致驱动芯片无法正常工作,出现屏不亮的现象。


4.3 pixel_clk
和 mipi_bit_clk 时钟配置

时钟有具体的计算标准,与 帧率、时序参数、分辨率 等相关,可参考之前的时钟配置的博文。当实际配置的时钟与理论计算差异过大会时,会导致屏直接不亮,有差异但未相差过大则会导致画面闪烁,这里可以多用几个理论附近值的时钟测试一下,有时候理论计算出来的值并不是实测效果更好的,但一般效果较好的都在其理论值附近。


4.4 Clock lane
的 Continuous & NonContinuous

某 Video 模式的 MIPI 屏,在 Command 自测模式下(不使用 MIPI Data lane 传输像素数据)可以正常显示自测画面,但切换到 Video 模式后一直黑屏,无法显示,最后发现问题是 dsi_config 配置中时钟是否连续的问题,一般都是使用默认的连续时钟,但该屏需要使用非连续的时钟才能正常通信,该配置就是图 4 中的 dsiConfig.enableNonContinuousHsClk 设置。


4.5 Vsync
、Hsync、Data 等信号的极性

有时这些信号极性配置不对时,会使画面不能正常显示、严重的会直接黑屏,如果显示有问题也可以检查一下相关极性的配置,这个配置在 LCD 和 MIPI 中都有,无法确定时可以多试几次。

 

五、参考资料

(1)IMXRT500RM.pdf,可在 NXP 官网下载:

https://www.nxp.com/webapp/sps/download/preDownload.jsp?render=true

(2)AN12302 - i.MX RT eLCDIF RGB Mode Use Case.pdf,可在 NXP 官网下载:

https://www.nxp.com.cn/docs/en/application-note/AN12302.pdf

(3)AN12940 - Use Case of RT1170 LCD Display System based on MIPI DSI.pdf,可在 NXP 官网下载:

https://www.nxp.com.cn/docs/en/application-note/AN12940.pdf

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论