MIPI DSI 接口屏
图像显示错位或颜色异常
可能原因:
- Timing 时序参数或 video mode 需要调整
- LCD reset 引脚或 IOVCC 未达到有效电平下限
排查方向:
-
遍历所有 video mode,找到最佳显示效果:
- video pulse / video event / video burst
- 推荐 burst mode,驱动支持更完善
-
调整 Timing 参数:
- 重点调整 hbp/hfp 等消隐区参数,增大消隐区让显示接口有更多反应时间
- 提高 pixelclock 频率,确保有足够的刷新帧率
-
确认 LCD reset 引脚和 IOVCC 有效电平是 3.3V 还是 1.8V
背光亮但屏幕无显示
可能原因:
- 板卡存在物料虚焊
- LCD reset 引脚未上拉或电平不对(3.3V 只有 1.8V)
- LCD IOVCC 电压或上电时序未达到屏幕要求
- 初始化命令错误,资料与屏幕不匹配
- 初始化命令适配错误
- DSI 通道配置有误导致初始化失败
- 屏幕对 video mode 信号有特定要求,比如:时钟非连续,禁用 EOTP,不同的 DPHY 配置
排查方向:
-
检查板卡物料焊接情况,必要时加焊物料
-
万用表测量 reset 引脚电平,确认电平达到屏幕要求:
- 检查工程 pinmux 文件已配置 reset 引脚,并在屏幕驱动中控制
- 与屏厂确认 reset 的有效电平
-
通过屏幕规格书确定 IOVCC 电压标准和上电时序要求。
检查 panel 初始化过程和板卡 LCD 相关电源是否达到要求
-
核对原理图和板卡走线,确认 Data0 通道的顺序和极性:
- 通过 disp_conf.h 配置 Data0
通道的顺序和极性:
#define LANE_ASSIGNMENTS 0x3210 #define LANE_POLARITIES 0b0000
- 通过 disp_conf.h 配置 Data0
通道的顺序和极性:
-
与屏厂确认资料是否匹配当前模组,可读取屏幕 ID 进行甄别(按 4.6 现象六 进行调试)
-
检查 panel 初始化命令转换是否正确:
- 屏厂提供的初始化数组一般由三部分构成:command, count of data, data。只需提取 command 和 data
- 默认使用 DCS 发送命令,除非资料出现明确的 GEN
标识
panel_dsi_dcs_send_seq() panel_dsi_generic_send_seq()
-
使用自测指令测试屏幕 Data0 通道(按 4.3 现象三 和 4.4 现象四 进行调试)
-
无自测指令时读取屏幕 ID 测试 Data0 通道(按 4.6 现象六 进行调试)
-
在 panel 驱动中使能时钟非连续模式测试:
struct panel_dsi dsi = { .mode = DSI_MOD_VID_BURST | DSI_CLOCK_NON_CONTINUOUS, ... }; -
在 panel 驱动中禁用 EOTP 测试:
struct panel_dsi dsi = { .mode = DSI_MOD_VID_BURST | DSI_MOD_NO_EOT_PACKET, ... }; -
时钟非连续模式和禁用 EOTP 可同时使能:
struct panel_dsi dsi = { .mode = DSI_MOD_VID_BURST | DSI_CLOCK_NON_CONTINUOUS | DSI_MOD_NO_EOT_PACKET, ... }; -
更换 MIPI-DPHY 配置,使用旧版参数,部分大分辨率 mipi 屏幕对旧版参数更兼容
Board options ---> [*] Using Display Engine (DE) Display Parameter ---> select Display interface (Display MIPI-DSI interface) ---> [*] enable MIPI-DSI legacy packet config
屏幕自测模式无响应
可能原因:
- 板卡存在物料虚焊
- LCD reset 引脚未上拉或电平不对(3.3V 只有 1.8V)
- LCD IOVCC 电压或上电时序未达到屏幕要求
- LP Data0 通道接线或极性不对
- LCD 屏幕对 EOTP 包有要求
排查方向:
-
检查板卡物料焊接情况,必要时加焊物料
-
万用表测量 reset 引脚电平,确认电平达到屏幕要求:
- 检查工程 pinmux 文件已配置 reset 引脚,并在屏幕驱动中控制
- 与屏厂确认 reset 的有效电平
-
核对原理图和板卡走线,确认 Data0 通道的顺序和极性:
- 通过 disp_conf.h 配置 Data0
通道的顺序和极性:
#define LANE_ASSIGNMENTS 0x3210 #define LANE_POLARITIES 0b0000
- 通过 disp_conf.h 配置 Data0
通道的顺序和极性:
-
Luban-Lite V1.2.1 之前的旧版本未支持 EOTP,更新 SDK 版本解决
屏幕自测模式正常但无法显示图像
可能原因:
- 屏幕需要时钟非连续模式
- 板卡差分信号走线未严格等长
- 通道 lane num 配置有误
排查方向:
-
在屏幕驱动中启用时钟非连续模式:
struct panel_dsi dsi = { .mode = DSI_MOD_VID_BURST | DSI_CLOCK_NON_CONTINUOUS, ... }; -
检查板卡走线是否严格等长(不仅差分组内要等长,差分组间也需要等长)
-
确认 LCD 屏幕的 lane 数量,在驱动中配置 lane_num(lane_num 出错会导致时钟倍频不对):
struct panel_dsi dsi = { .lane_num = 4, ... };
读屏幕 ID 无应答
可能原因:
- LP Data0 通道接线或极性不对
- 板卡存在物料虚焊
- LCD 屏幕 reset 引脚未上拉
- LCD 相关电源或上电时序未符合屏幕要求
- D21x 平台 LP 速度需要大于屏幕应答速度
- LCD 屏幕 0x4 寄存器默认值为 0,或者不存在 0x4 寄存器
排查方向:
-
核对原理图和板卡走线,确认 Data0 通道的顺序和极性:
- 通过 disp_conf.h 配置 Data0
通道的顺序和极性:
#define LANE_ASSIGNMENTS 0x3210 #define LANE_POLARITIES 0b0000
- 通过 disp_conf.h 配置 Data0
通道的顺序和极性:
-
检查板卡物料焊接情况,必要时加焊物料
-
万用表测量 reset 引脚电平,确认电平达到屏幕要求:
- 检查工程 pinmux 文件已配置 reset 引脚,并在屏幕驱动中控制
- 与屏厂确认 reset 的有效电平
-
通过屏幕规格书确认控制引脚是否正常:
- 确认 reset 和 IOVCC 等引脚电平要求(3.3V 还是 1.8V)
- 确认驱动的上电时序是否符合屏幕要求
-
D21x 平台在读操作中需要更高的 LP 速率(其他芯片平台无此要求):
- 通过 disp_conf.h 配置 LP 速率
- D21x 读操作情况下推荐设置为
18M
#define MIPI_DSI_LP_RATE (18 * 1000 * 1000)
-
读 ID 操作默认读取 0x4 寄存器,通过屏驱动 IC 规格书确认 0x4 寄存器是否存在,默认值是多少
读屏幕寄存器未返回全部 byte
可能原因:
- 屏幕默认应答的 byte 数有限。例如:一个寄存器最多能返回 3 个 byte,但未全部发出
解决方法:
使用 data type 0x37 (MIPI_DSI_SET_MAXIMUM_RETURN_PACKET_SIZE) 设置返回包的大小:
panel_dsi_set_maximum_return_packet_size(struct aic_panel *panel, u16 value)
启动时屏幕概率性不亮
可能原因:
- LCD reset 引脚未控制或拉低时间不足
- 上电时序未严格满足 LCD 屏幕要求
- LCD 屏幕需要时钟非连续模式
- Timing 参数需要调整
排查方向:
-
通过屏幕规格书确认 reset 控制引脚和上电时序要求
-
在 panel 驱动中使能时钟非连续模式:
struct panel_dsi dsi = { .mode = DSI_MOD_VID_BURST | DSI_CLOCK_NON_CONTINUOUS, ... }; -
调整 Timing 参数查看是否会影响不亮的概率:
- 若影响概率,则与 Timing 相关
- 需要调整到一套稳定能亮的 Timing
升级 V1.2.1 以后版本 MIPI 屏幕显示模糊
可能原因:
DPHY 配置和 EOTP 影响
Luban-Lite SDK V1.2.1 优化了 MIPI-DPHY 和 CMU 的分频配置,新配置会改善消隐区参数与屏厂差别较大的问题。Bringup 新 MIPI-DSI 屏幕不再需要花费大量精力调整消隐区参数。但部分已调试好的旧 MIPI-DSI 屏幕可能会受新配置影响。
Luban-Lite SDK 预留了兼容开关,允许 MIPI-DSI 屏幕使用旧的 MIPI 接口配置。
解决方法:
使用 SDK 预留开关恢复旧版本 SDK MIPI-DSI 接口 PHY 配置:
-
通过 menuconfig 使能旧的 MIPI 接口配置:
Board options ---> Display Parameter ---> [*] enable MIPI-DSI legacy packet config -
在 panel 驱动文件中使用宏定义 DSI_MOD_NO_EOT_PACKET 禁用 EOTP:
struct panel_dsi dsi = { .mode = DSI_MOD_VID_BURST | DSI_MOD_NO_EOT_PACKET, .format = DSI_FMT_RGB888, .lane_num = 4, };
建议:
-
新 MIPI-DSI 屏幕推荐使用 Luban-Lite V1.2.1 及以后版本调试,提高效率,无需再花费大量精力调整消隐区参数
-
已调试好的 MIPI-DSI 屏幕通过兼容开关可以继续使用
