首页 > 技术知识 > 正文

4.3 LCD驱动调试

参考文档《Rockchip_Developer_Guide_DRM_Panel_Porting_CN.pdf》

文档路径:rk356x_android_sdk/RKDocs/common/display

4.3.1 重要概念

以下信息,一般屏的规格书都会给出,但需要注意的是,有些规格书是错误的;有一些未给出(需要单独找厂商要);还有一些是给出总的,HFP+HS+HBP, VFP+VS+VBP。

clock-frequency: 提供给lcd的时钟频率,一般屏的规格书都会给出, 也可以通过计算得到。假如刷帧率是60hz,横向分辨率1250,纵向分辨率2000;那么lcd的时钟频率 dclk = 60 1250 2000 = 150MHz。

hactive: 横向分辨率。

vactive:纵向分辨率。

hsync-len 行同步回扫时间。

hback-porn: 行同步后肩时间。

hfront-porn:行同步前肩时间。

vsync-len: 帧同步回扫时间。

vback-porch: 帧同步后肩时间。

vfront-proch: 帧同步前肩时间。

de-active: DE 信号极性。

hysnc-active: 行同步信号极性。

vsync-active: 帧同步信号极性

4.3.2 EDP配置

4.3.2.1 硬件原理分析

查看原理图, 提取需要的配置信息

RK3568 开发板-安卓系统之LCD驱动调试(六)-lcd屏驱动电源可以看出,我们需要在背光配置GPIO使能 backlight { … pwms = <&pwm4 0 25000 PWM_POLARITY_INVERTED>; // 用pwm4作为背光调节 … enable-gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>; // 背光使用引脚 … }; &pwm4 { // 使能PWM4 status = “okay”; };

在panel中配置

panel { enable-gpios = <&gpio4 20 GPIO_ACTIVE_HIGH>; // LCD电源使能 }; 4.3.2.2 datasheet分析

根据屏的datasheet,找到屏的相关参数, 类似下图这样的信息

RK3568 开发板-安卓系统之LCD驱动调试(六)-lcd屏驱动电源1

但上面这张图的信息Frequency是有问题的

正常的应该是1516x831x60=75.6M

THP = HFP + HS + HBP

tVP = VFP + VS + VBP

显示时序配置如下: timing0: timing0 { clock-frequency = <75000000>; hactive = <1280>; vactive = <800>; hback-porch = <100>; // 根据实际情况调整 hfront-porch = <100>; // 根据实际情况调整 hsync-len = <36>; vback-porch = <10>; // 根据实际情况调整 vfront-porch = <10>; // 根据实际情况调整 vsync-len = <11>; … }; 4.3.2.3 完整DTS配置如下:panel: panel { compatible = “simple-panel”; backlight = <&backlight>; pinctrl-names = “default”; pinctrl-0 = <&lcd_en>; enable-gpios = <&gpio4 20 GPIO_ACTIVE_HIGH>; //reset-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>; prepare-delay-ms = <200>; enable-delay-ms = <20>; display-timings { native-mode = <&timing0>; timing0: timing0 { clock-frequency = <75000000>; hactive = <1280>; vactive = <800>; hback-porch = <100>; hsync-len = <36>; hfront-porch = <100>; vback-porch = <10>; vfront-porch = <10>; vsync-len = <11>; hsync-active = <0>; vsync-active = <0>; de-active = <0>; pixelclk-active = <0>; }; }; ports { panel_in: endpoint { remote-endpoint = <&edp_out>; }; }; }; &edp { force-hpd; status = “okay”; ports { port@1 { reg = <1>; edp_out: endpoint { remote-endpoint = <&panel_in>; }; }; }; }; &edp_phy { status = “okay”; }; &edp_in_vp0 { status = “disabled”; }; &edp_in_vp1 { status = “okay”; }; &route_edp { status = “okay”; connect = <&vp1_out_edp>; };
<

猜你喜欢