LVDS 接口屏
背光亮但显示黑屏
可能原因:
- 板卡 LVDS 走线未严格遵循等长原则
- LVDS pinmux 引脚未配置
- LVDS link 配置错误(如使用 link0 但配置为 link1)
- LVDS link 内差分通道顺序或极性与原理图不匹配
排查方向:
-
核对板卡 LVDS 走线是否严格遵循等长原则
-
确认工程的 pinmux 文件已配置 LVDS 引脚
- LVDS 引脚功能为 func 3
-
确认 LVDS link 通道,通过 link mode 指定输出通道:
Board options ---> [*] Using Display Engine (DE) Display Parameter ---> select Display interface (Display LVDS interface) ---> lvds link mode (single link 1) ---> -
核对原理图 link 内接线,确认时钟通道和数据通道的接线及极性
- 通过 disp_conf.h 修改通道顺序和极性:
#define AIC_LVDS_LINK0_LANES LVDS_LANES(LVDS_D3, LVDS_CK, LVDS_D2, LVDS_D1, LVDS_D0) #define AIC_LVDS_LINK1_LANES LVDS_LANES(LVDS_D3, LVDS_CK, LVDS_D2, LVDS_D1, LVDS_D0) #define AIC_LVDS_LINK0_POL 0b00000 #define AIC_LVDS_LINK1_POL 0b00000
-
根据屏幕规格书调整时序参数,通过 Custom Display Timing 重新配置时序
Display Panels ---> ArtInChip Panel Drivers (ArtInChip simple panel) ---> [*] Custom Display Timing display timing of simple panel ---> (10) pixelclock in MHZ (480) hactive (272) vactive (43) hback-porch (8) hfront-porch (1) hsync-len (12) vback-porch (4) vfront-porch (10) vsync-len
启动时闪一下然后黑屏
可能原因:
- LVDS link 内差分通道顺序或极性配置与原理图不匹配
解决方法:
修改 disp_conf.h
文件的宏定义来调整通道顺序和极性:
#define AIC_LVDS_LINK0_LANES LVDS_LANES(LVDS_D3, LVDS_CK, LVDS_D2, LVDS_D1, LVDS_D0) #define AIC_LVDS_LINK1_LANES LVDS_LANES(LVDS_D3, LVDS_CK, LVDS_D2, LVDS_D1, LVDS_D0) #define AIC_LVDS_LINK0_POL 0b00000 #define AIC_LVDS_LINK1_POL 0b00000
Dual Link 屏幕图像显示模糊
可能原因:
- LVDS link0 和 link1 输出顺序对调,导致屏幕奇偶行像素对调
解决方法:
- 对于 simple panel,通过 disp_conf.h 配置对调 link0 和 link1
输出:
/* lvds link swap enable, swap lvds link0 and link1 */ #define AIC_LVDS_LINK_SWAP_EN 0
- 对于新建
panel,在驱动源文件中设置:
static struct panel_lvds lvds = { ... .link_swap = 1, };
Single Link 屏幕图像花屏
可能原因:
- LVDS 屏使用的协议与接口设置不匹配
- LVDS 有 vesa-24 / jeida-24 / jeida-18 三种协议,由屏幕规格书指定
解决方法:
通过 menuconfig 修改 lvds mode
配置:
Board options --->
[*] Using Display Engine (DE)
Display Parameter --->
select Display interface (Display LVDS interface) --->
lvds mode (vesa-24) --->Single Link 屏幕部分颜色显示不对
可能原因:
- LVDS link 部分差分信号极性反接
解决方法:
- 核对原理图和板卡 LVDS link 差分信号接线极性,通过 disp_conf.h 配置 LVDS link
差分信号极性:
#define AIC_LVDS_LINK0_POL 0b00000 #define AIC_LVDS_LINK1_POL 0b00000
