我们公司的屏幕是分为两部分
1.lvds负责屏幕亮起,显示UI
2.gt9触摸屏负责触摸点击反馈操作
现在先说lvds如何配置
RK的LVDS屏调试,主要是配置正确LVDS的dts,配置正确基本都是可以点亮的
1 首先拿到LVDS屏厂商给的屏规格书,规格书有用的信息就是时序参数
1.1下面就是我拿到规格书的时序参数表
**从这个时序表中,我们可以得知
时钟dclk 频率: clock-frequency =65MHZ
水平有效像素:Hactive=1024
垂直有效像素:Vactive=768
水平总周期 =1344
hback-porch/hfront-porch/hsync-len:水平同步信号
vback-porch/vfront-porch/vsync-len:垂直同步信号
根据公式水平总周期 = hback-porch + hfront-porch + hsync-len+Hactive
知道hback-porch + hfront-porch + hsync-len=水平总周期-Hactive=320
垂直总周期=806
**
根据公式垂直总周期 = vback-porch + vfront-porch + vsync-len+Vactive
知道vback-porch + vfront-porch + vsync-len=垂直总周期 - Vactive=38
1.2屏幕参数的dts
屏参包括屏的格式、dclk、时序等。
display-timings {
native-mode = <&lvds_panel_name>;
lvds_panel_name: timing0 {
creen-type = <SCREEN_LVDS>;
//creen-type = <SCREEN_DUAL_LVDS>;
lvds-format = <LVDS_8BIT_1>;
// lvds-format = <LVDS_8BIT_2>;
out-face = <OUT_P888>;
clock-frequency = <65000000>;
hactive = <1024>;
vactive = <768>;
hback-porch = <120>; //只需保证hback-porch + hfront-porch + hsync-len=320
hfront-porch = <160>;
hsync-len = <40>;
hsync-active = <0>;
vback-porch = <11>; //只需保证vback-porch + vfront-porch + vsync-len=38
vfront-porch = <25>;
vsync-len = <2>;
vsync-active = <0>;
de-active = <0>;
pixelclk-active = <0>;
screen-type:屏幕类型,mipi 屏有两种:单 mipi(SCREEN_MIPI)、双 mipi(SCREEN_DUAL_MIPI)。
lvds-format:lvds 数据格式。jeida —-> LVDS_8BIT_2 vesa---->LVDS_8BIT_2
out-face:屏幕接线格式。
clock-frequency:dclk 频率,单位为 Hz,一般屏的规格书中有,也可以通过公式计算:H*V(包括同步信号)*fps
Hactive:水平有效像素
Vactive:垂直有效像素
hback-porch/hfront-porch/hsync-len:水平同步信号
vback-porch/vfront-porch/vsync-len:水平同步信号
hsync-active、vsync-active、de-active、pixelclk-active:分别为 hync、vsync、DEN、dclk 的极性控制。置 1 将对极性进行翻转。
swap-rb、swap-rg、swap-gb:置 1 将对对应的颜色进行翻转。
2 配置使能引脚
2.1 查看原理图知道使能引脚使用的是 GPIO7_A3 (gpio7 3)
3 所配置的lvds dts如下:
路径为\kernel\arch\arm\boot\dts\rk3288-*.dts增加如下LVDSdts配置
// added by elink_dsy for lvds start <<<
&route_lvds {
status = "okay";
};
&lvds {
status = "okay";
};
// kernel 指定 DSI 对应 VOP lvds 连接 VOPL
&lvds_in_vopl {
status = "okay";
};
&lvds_in_vopb {
status = "disabled";
};
&lvds_panel {
status = "okay";
compatible ="simple-panel";
backlight = <&backlight>;
enable-gpios = <&gpio7 3 GPIO_ACTIVE_HIGH>;
enable-delay-ms = <10>;
rockchip,data-mapping = "vesa";
// rockchip,data-mapping = "jeida";
rockchip,data-width = <24>;
// rockchip,output = "duallvds";
rockchip,output = "lvds";
display-timings {
native-mode = <&lvds_panel_name>;
lvds_panel_name: timing0 {
creen-type = <SCREEN_LVDS>;
//creen-type = <SCREEN_DUAL_LVDS>;
lvds-format = <LVDS_8BIT_1>;
// lvds-format = <LVDS_8BIT_2>;
out-face = <OUT_P888>;
clock-frequency = <65000000>;
hactive = <1024>;
vactive = <768>;
hback-porch = <120>;
hfront-porch = <160>;
hsync-len = <40>;
hsync-active = <0>;
vback-porch = <11>;
vfront-porch = <25>;
vsync-len = <2>;
vsync-active = <0>;
de-active = <0>;
pixelclk-active = <0>;
};
};
};
// added lvds end <<<
status:okay 状态
compatible:simple-panel 与 lvds panel 驱动进行匹配
backlight: &backlight 引用背光节点, panel 驱动会解析并对背光进行控制
enable-gpios: &gpio7 3 GPIO_ACTIVE_HIGH 屏的 enable 脚的 gpio 配置,参考原理图。
enable-delay-ms: 10 开启背光之前的延时,参考屏规格书
rockchip,data-mapping: vesa or jeida LVDS 信号的两种编码方式 ,具体对应关
系参考 data mapping 说明;
rockchip,data-width:18 or 24 or 30 LVDS 的数据位, RGB 三个分量都是 6bit
的填 18,RGB 三个分量都是 8bit 的填 24,
RGB 三个分量都是 10bit 的填 30。
rockchip,output: lvds or duallvds 双通道 LVDS, 目前只有 rk3288 支持。
screen-type:屏幕类型,mipi 屏有两种:单 mipi(SCREEN_MIPI)、双 mipi(SCREEN_DUAL_MIPI)。
lvds-format:lvds 数据格式。jeida —-> LVDS_8BIT_2 vesa---->LVDS_8BIT_2
out-face:屏幕接线格式。
clock-frequency:dclk 频率,单位为 Hz,一般屏的规格书中有,也可以通过公式计算:H*V(包括同步信号)*fps
Hactive:水平有效像素
Vactive:垂直有效像素
hback-porch/hfront-porch/hsync-len:水平同步信号
vback-porch/vfront-porch/vsync-len:水平同步信号
hsync-active、vsync-active、de-active、pixelclk-active:分别为 hync、vsync、DEN、dclk 的极性控制。置 1 将对极性进行翻转。
swap-rb、swap-rg、swap-gb:置 1 将对对应的颜色进行翻转。