RK3568开发笔记-EDP显示屏接口调试记录
Posted flypig哗啦啦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RK3568开发笔记-EDP显示屏接口调试记录相关的知识,希望对你有一定的参考价值。
目录
前言
RK3568 CPU提供了丰富的外设接口,本文主要介绍通过edp显示接口驱动edp接口显示屏的具体操作方法以及调试记录。
一、edp显示接口介绍
随着显示分辨率的越来越高,传统的VGA、DVI等接口逐渐不能满足人们的视觉需求。随后就产生了以HDMI、DisplayPort为代表的新型数字接口,外部接口方面HDMI占据了较大市场优势,但是DisplayPort凭借自身优势调整结构,使之差距正在减少。内部接口方面传统用LVDS,LVDS面对高分辨率的显示越来越吃力,DisplayPort内部接口eDP由此诞生,会在将来逐步取代LVDS,本文主要介绍在RK3568平台上使用edp接口显示屏的具体使用方法。
RK3568 CPU目前支持edp 1.3接口,4对数据线最大支持2.7Gbps/Lane,最大分辨率支持2560x1600(切记详细看屏幕参数,如果屏幕分辨率大于该参数,RK3568将驱动不了该显示屏)
二、edp接口部分原理图
RK3568部分原理图如下图所示。edp接口才用4对数据线和显示屏相连接,没有单独的时钟线,目前最新的edp接口速率可达8.1Gbps/Lane。
三、edp接口显示屏参数介绍
调试才用京东方NE173QHM edp接口显示屏,支持4对数据连接,分辨率为2560x1440,屏幕简要描述如下图所示,。
Signal Timing Specification:该表格中典型时钟频率为667.887Mhz,经过计算得知该时钟为最大刷新率为160hz计算出来的时钟,本文才用60h、75hz刷新率分别验证。
edid table参数:edid中主时钟为161Mhz,该时钟为40hz刷新率始终参数。
四、RK3568设备树参数配置
本小节主要根据edp接口显示屏的参数来配置设备树文件,来实现对edp接口显示屏的时序调试。
a、背光使能:背光使能脚为gpio2 RK_PD6管教,该管脚来实现对pwm背光的使能控制脚。
edp-panel
status = "okay";
compatible = "simple-panel";
power-supply = <&vcc3v3_lcd0_n>;
enable-gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_HIGH>;
prepare-delay-ms = <200>;
enable-delay-ms = <200>;
unprepare-delay-ms = <200>;
disable-delay-ms = <200>;
bus-format = <MEDIA_BUS_FMT_RGB888_1X7X4_SPWG>;
bpc = <8>;
backlight = <&backlight>;
......
b、EDP_HPD 使能:配置该管脚为gpio2 RK_PD0来对edp显示屏信号检测。
&edp
status = "okay";
//hpd-gpios = <&gpio4 RK_PC4 GPIO_ACTIVE_HIGH>;
hpd-gpios = <&gpio2 RK_PD0 GPIO_ACTIVE_HIGH>;
force-hpd;
ports
edp_out:port@1
reg = <1>;
edp_out_panel: endpoint
//reg = <0>;
remote-endpoint = <&panel_in_edp>;
;
;
;
;
c、显示时序配置:根据屏幕参数章节可知参数,具体配置如下图所示:(不同刷新率的时钟频率计算如下所示)
display-timings
native-mode = <&edp_timing>;
edp_timing: edp_timing
//clock-frequency = <161912000>; //40Hz
//clock-frequency = <242868000>; //60Hz
clock-frequency = <303585000>; //75Hz
hactive = <2560>;
vactive = <1440>;
hfront-porch = <48>;
hsync-len = <32>;
hback-porch = <80>;
vfront-porch = <2>;
vsync-len = <4>;
vback-porch = <34>;
hsync-active = <0>;
vsync-active = <0>;
de-active = <0>;
pixelclk-active = <0>;
;
;
各项参数含义
clock-frequency: 提供给lcd的时钟频率,一般屏的规格书都会给出, 也可以通过计算得到。假如刷帧率是40hz,横向分辨率2560,纵向分辨率1440;那么lcd的时钟频率 dclk = 2560x1440x40 = 161.912MHz。
hactive: 横向分辨率2560。
vactive:纵向分辨率2440。
hsync-len 行同步回扫时间。
hback-porn: 行同步后肩时间。
hfront-porn:行同步前肩时间。
vsync-len: 帧同步回扫时间。
vback-porch: 帧同步后肩时间。
vfront-proch: 帧同步前肩时间。
de-active: DE 信号极性。
hysnc-active: 行同步信号极性。
vsync-active: 帧同步信号极性
根据edid参数表可知hback-porch + hfront-porch + hsync-len = 160,vback-porch + vfront-porch + vsync-len = 40(其中三个参数配置等于总值即可,具体可以细微调整)。
五、完整DTS edp参数
edp-panel
status = "okay";
compatible = "simple-panel";
power-supply = <&vcc3v3_lcd0_n>;
enable-gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_HIGH>;
prepare-delay-ms = <200>;
enable-delay-ms = <200>;
unprepare-delay-ms = <200>;
disable-delay-ms = <200>;
bus-format = <MEDIA_BUS_FMT_RGB888_1X7X4_SPWG>;
bpc = <8>;
backlight = <&backlight>;
display-timings
native-mode = <&edp_timing>;
edp_timing: edp_timing
//clock-frequency = <161912000>; //40
//clock-frequency = <242868000>; //60
clock-frequency = <303585000>; //75
hactive = <2560>;
vactive = <1440>;
hfront-porch = <48>;
hsync-len = <32>;
hback-porch = <80>;
vfront-porch = <2>;
vsync-len = <4>;
vback-porch = <34>;
hsync-active = <0>;
vsync-active = <0>;
de-active = <0>;
pixelclk-active = <0>;
;
;
ports
panel_in_edp: endpoint
remote-endpoint = <&edp_out_panel>;
;
;
;
&edp
status = "okay";
//hpd-gpios = <&gpio4 RK_PC4 GPIO_ACTIVE_HIGH>;
hpd-gpios = <&gpio2 RK_PD0 GPIO_ACTIVE_HIGH>;
force-hpd;
ports
edp_out:port@1
reg = <1>;
edp_out_panel: endpoint
//reg = <0>;
remote-endpoint = <&panel_in_edp>;
;
;
;
;
&edp_phy
status = "okay";
;
&edp_in_vp0
status = "okay";
;
&edp_in_vp1
status = "disabled";
;
&route_edp
status = "okay";
logo,uboot = "logo.bmp";
logo,kernel = "logo.bmp";
logo,mode = "center";
charge_logo,mode = "center";
connect = <&vp0_out_edp>;
;
六、RK3568多屏显示vop选择
在RK3568如需多屏幕同显,必须为不同的显示接口屏幕配置好vop通道,其中vop0可以用做hdmi、mipi、edp等显示接口使用,vop1可以用作hdmi、mipi、edp、lvds等显示接口使用,vop2可以用作lvds、rgb等显示接口使用。
同时开启三个vop接口配置如下:
&vop
status = "okay";
assigned-clocks = <&cru DCLK_VOP0>,<&cru DCLK_VOP1>,<&cru DCLK_VOP2>;
assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>;
;
如果edp接口屏幕显示分辨率较大,可以配置vop0显示通道。
七、调试遇到的问题
a、屏幕闪屏
可以加大显示屏时钟频率。
2、多屏显示异常
- 调整vop显示通道
总结
上述为本人在RK3568平台调试edp接口显示屏的开发记录,希望提供一定的的参考。
RK3566 Android11 VGA 调试
上一篇:(四)RK3566 Android11 SPDIF调试
文章目录
一、显示屏驱动调试参考文档
RKDocs\\common\\display\\Rockchip_Developer_Guide_DRM_Panel_Porting_CN.pdf
RK3566显示框架为DRM显示框架,RK平台 LCD controllers称为VOP(video
output processor),3566 有两个 VOP,本次配置为 EDP 单显,所以只使用其中一
个 VOP,相关驱动程序如下;
只需把驱动程序纳入编译链,编译进内核,再调用即可,纳入编译链与编译进内核RK都帮我们做好了,在提供的SDK里,打开内核菜单,make menuconfig在相应的路径下可查看。所以只要配置好设备树,驱动能正常调用,即可点亮EDP接口屏幕。需要修改的dts文件在android11/kernel/arch/arm64/boot/dts/rockchip目录下;如下图所示;
首先要确定现在使用的是那个dts,dts文件都会被编译为dtb文件,所以找到dtb文件即可。所以需要修改rk3566-evb2-lp4x-v10-edp.dts这个文件,用以驱动EDP屏幕;如下图所以;
二、关闭vp0打开vp1接口
rk3566-evb2-lp4x-v10-edp.dts文件里面,关闭vp0接口,打开vp1接口;
三、打开phy
rk3566-evb2-lp4x-v10-edp.dts文件里面,打开phy接口;
四、开启edp接口
rk3566-evb2-lp4x-v10-edp.dts文件里面,打开edp接口;
现在edp接口已经开启,接下来就是配置其时序,需要有正确的时序edp屏幕才能正常工作。
五、添加时序
1080P的时序如下;
引脚配置(根据datasheet调整)lcd 使能
引脚使能rk3566-evb2-lp4x-v10.dtsi设备树配置如下;
至此VGA的调试工作已完成。
以上是关于RK3568开发笔记-EDP显示屏接口调试记录的主要内容,如果未能解决你的问题,请参考以下文章
RK3568开发笔记:RK3568虚拟机基础环境搭建之更新源安装网络工具串口调试网络连接文件传输安装vscode和samba共享服务
RK3568开发笔记:RK3568虚拟机基础环境搭建之更新源安装网络工具串口调试网络连接文件传输安装vscode和samba共享服务