Rockchip RK3399 - DRM eDP介绍
在《Rockchip RK3399 - DRM驱动程序》》我们已经介绍过了,RK3399有两个VOP,均可以支持HDMI、eDP、DP、MIPI DSI0、MIPI DSI1显示接口,由于此时我手里正好有一块友善7寸高清电容触摸显示屏(型号为HD702E,eDP接口),因此本节我们选择eDP作为分析的对象。
一、eDP介绍
1.1 概述
eDP全称(Embedded DisplayPort))嵌入式显示接口,它是一种基于DisplayPort架构和协议的一种内部数字接口。可以用较简单的连接器以及较少的引脚来传递高分辨率信号,且能够实现多数据同时传输。
eDP协议是针对DP(Display Port)应用在嵌入式方向架构和协议的拓展,所以eDP协议完全兼容DP协议。
相对于DVI/HDMI来说,eDP具有高带宽、整合性好、相关产品设计简单,该接口已广泛应用于笔记本电脑、平板电脑、手机等其它集成显示面板和图像处理器的领域。
eDP接口降低设备复杂性,支持关键跨行业应用程序的必要功能,并提供性能可伸缩性,以支持具有更高颜色深度、刷新率和显示分辨率的下一代显示器。
eDP是被设计来取代比较旧的数字视频传送接口,如LVDS,尤其在全高清PHD(1920x1080或1920x1200)或超过FHD解析度的面板上。
1.1.1 版本变更
| 年份 | 版本 | 介绍 |
|---|---|---|
| 2011.08 | eDP1.3 | 支持RBR(Reduced Bit Rate)1.62Gbps/lane 支持HBR(High Bit Rate)2.7Gbps/lane 可选HBR2 5.4Gbps/lane |
| 2014.03 | eDP1.4 | 支持RBR(Reduced Bit Rate)1.62Gbps/lane 支持HBR(High Bit Rate)2.7Gbps/lane 支持HBR2 5.4Gbps/lane |
| 2015.01 | eDP1.4a | 支持RBR(Reduced Bit Rate)1.62Gbps/lane 支持HBR(High Bit Rate)2.7Gbps/lane 支持HBR2 5.4Gbps/lane 支持HBR3 8.1Gbps/lane 支持YCbCr4:2:0 and RAW |
| 2015.10 | eDP1.4b | 支持RBR(Reduced Bit Rate)1.62Gbps/lane 支持HBR(High Bit Rate)2.7Gbps/lane 支持HBR2 5.4Gbps/lane 支持HBR3 8.1Gbps/lane 支持YCbCr4:2:0 and RAW |
1.1.2 术语
在介绍eDP时,我们会提到大量的专业术语:
HDCP:High-bandwidth Digital Content Protection版权保护相关的,通过IIC获取;EDID:Extended Display Identification Data扩展显示标识数据,包含有关显示器及其性能的参数,包括供应商信息、最大图像大小、颜色设置、厂商预设置、频率范围的限制以及显示器名和序列号的字符串等;HDP:Hot Plug Detect热插拔检测;Source:A device with an eDPoutput;Sink:A device with an eDPinput;
1.2 eDP框图
eDP系统架构由source端和sink端组成:source是指发送eDP信号的一侧,sink是指接收eDP信号的一侧。
以上是eDP的结构图,从中我们大致可以看出eDP信号的组成部分:
- 主要通道(
Main Link):用来传输各种类型的视频数据和音频数据;- 由
1-4对lanes组成,每条lane都是一对差分线;这些数据线是单向的,从source指向sink; - 每对差分线采用交流耦合技术,发送端与接收端可以具有不同的共模电压,因此可以把接口做的更小;
- 数据采用
ANXI 8B/10B编码方式,eDP1.4中每条lane的速率最大为5.4Gbps,最小为1.62Gbps; - 每条数据都是数据线,没有时钟线,减小了
EMI;
- 由
- 辅助通道(
AUX);- 用于传输小带宽需求的数据,链路管理和设备控制;
- 采用交流耦合差分传输方式,是一条双向半双工传输通道 ;
- 采用
ManchesterII编码 ; - 提供
1Mbps的传输速率和15m的传输距离 ; - 低延时,每个传输任务都有时间要求小于
500us; - 该通道提供
Link Services和Device Services;具体来说它与EDID及DPCD存储器相连,并通过总线方式读写。EDID为显示标识数据,用于存储显示器的相关参数;DPCD为eDP接口配置数据,与链路管理层相连,用于链路层面的配置;
- 热插拔(
HPD):该项功能在eDP中是可选的。与DP一样,eDP支持与此信号相关的所有功能,包括中断以及链路故障通知。如果不使用HPD功能,source端可以通过轮询的sink方式来检查链路的完整性,但是这种方式会增加source的功耗,所以还是推荐使用HPD的方式。
此外,对于1.2及以上版本、Backlight control背光控制是可选的,
1.2.1 eDP接口
eDP接口通常使用FPC接口,如下图所示:
以NanoPC-T4开发板为例,连接器型号: I-PEX-20455-030E,30PIN。
1.2.2 引脚分布
eDP连接器主要是20PIN、30PIN和40PIN。
1.3 性能计算方法
1.3.1 Lane与rate的需求计算
以标准时序1920x1080@60Hz为例;
{ DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2008,
2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }
其中:
htotal:2200;vtotal:1125;filed rate:60Hz;
那么像素时钟频率:$$PCLK=2200*1125*60=148.5MHz$$
如果传输像素单元为24bpp,则其传输带宽为:$$148.5MHz*24bpp=3.564Gbps$$
eDP 1.4支持最大单lane 5.4Gbps,其传输有效数据带宽为:$$5.4Gbps*0.8(8/10B的编码)=4.32Gbps$$
结论:单lane 5.4Gbps即可满足传输需求。
1.3.2 基本传输单元(TU)插入空闲字符数
为了避免link带宽过载,数据的打包速率只能等于或者小于link symbol的速率,如果是小于的情况,则需要传输空闲字符,空闲字符放在FS与FE之间。
一个基本传输单元具有32~64个link symbol,而且在传输过程中不能改变。
假如显示规格为1920x1080@ 60Hz,24bpp,strm_clk=148.5MHz,采用2.7Gbps,4lane传输,TU的大小固定为64。
所以单lane中TU的大小为64,active symbol为27个。
1.4 电路原理图
接下来我们看一下我们使用的NanoPC-T4开发板eDP接线原理图。
1.4.1 RK3399侧
1.4.2 eDP接口侧
eDP 30PIN接口引脚定义以及与RK3399连接信息如下:
| Pin# | Assignment | Description | RK3399 |
|---|---|---|---|
| 1 | GND | Signal ground | |
| 2 | EDP_TX3N | eDP data lane 3 negative output | EDP_TX3N |
| 3 | EDP_TX3P | eDP data lane 3 positive output | EDP_TX3P |
| 4 | GND | Signal ground | |
| 5 | EDP_TX2N | eDP data lane 2 negative output | EDP_TX2N |
| 6 | EDP_TX2P | eDP data lane 2 positive output | EDP_TX2P |
| 7 | GND | Signal ground | |
| 8 | EDP_TX1N | eDP data lane 1 negative output | EDP_TX1N |
| 9 | EDP_TX1P | eDP data lane 1 positive output | EDP_TX1P |
| 10 | GND | Signal ground | |
| 11 | EDP_TX0N | eDP data lane 0 negative output | EDP_TX0N |
| 12 | EDP_TX0P | eDP data lane 0 positive output | EDP_TX0P |
| 13 | GND | Signal ground | |
| 14 | EDPAUXP | eDP CH-AUX positive differential output | EDPAUXP |
| 15 | EDPAUXN | eDP CH-AUX negative differential output | EDPAUXN |
| 16 | GND | Signal ground | |
| 17 | VCC3V3_SYS | 3.3V Power output for logic | |
| 18 | VCC3V3_SYS | 3.3V Power output for logic | |
| 19 | I2C4_SDA | 3V I2C data signal, Connect to touch panel | GPIO1_B3/I2C4_SDA |
| 20 | I2C4_SCL | 3V I2C clock signal, Connect to touch panel | GPIO1_B4/I2C4_SCL |
| 21 | GPIO1_C4_TP_INT | 3V interrupt input, Connect to the interrupt output of touch panel | GPIO1_C4/I2C8_SDA |
| 22 | GPIO1_B5_TP_RST | 3V output for reseting touch panel, Connect to the reset input of touch panel | GPIO1_B5 |
| 23 | PWM0_BL | 3V PWM output, for LCD backlight dimming. pulled up to VCC3V3_SYS on LCD side. | GPIO4_C2/PWM0/VOP0_PWM/VOP1_PWM |
| 24 | GPIO4_D5_LCD_BL_EN | 3V output for turning on/off the LCD backlight | GPIO4_D5 |
| 25 | GND | Backlight ground | |
| 26 | GND | Backlight ground | |
| 27 | GND | Backlight ground | |
| 28 | VCC12V0_SYS | 12V Power output for Backlight Power | |
| 29 | VCC12V0_SYS | 12V Power output for Backlight Power | |
| 30 | VCC12V0_SYS | 12V Power output for Backlight Power |
除了之前我们介绍的lanes、AUX引脚外,这里还多出了如下引脚:
-
I2C4_SDA、I2C4_SCL:我所使用是友善7寸高清电容触摸屏,在此处触摸数据使用的I2C进行通信(通常触摸屏数据采用的是I2C/AUX两种选项); -
GPIO1_C4_TP_INT:触摸面板中断引脚,默认高电平,发生触摸后该引脚会发送一个低电平的脉冲信号; -
GPIO1_B5_TP_RST:触摸面板的复位引脚,配置触摸芯片时会用到; -
PWM0_BL:PWM输出,用于控制LCD背光的亮度; -
GPIO4_D5_LCD_BL_EN:LCD背光使能; -
17和18引脚的VCC3V3_SYS:3.3V Power output for logic,LCD逻辑电路供电; -
28、29、30引脚得VCC12V0_SYS:12V Power output for Backlight Power,为LCD背光电源;
1.4.3 电源信号
(1) VCC12V0_SYS:系统电源,开发板输入电源;
(2) VCC3V3_SYS:由VCC12V0_SYS经过NB680GD降压开关模块转换器输出得到固定3.3V电压;
(3) VCC0V9_S3:由PMIC_SLEEP_H(连接RK3399的GPIO1_A5/AP_PWROFF,这个应该是处理器睡眠引脚,处理器工作时电源有效)引脚控制的;
PMIC_SLEEP_H为低电平,Q16 N MOS管导通、VCC0V9_S3输出为0.9V;PMIC_SLEEP_H为高电平,Q16 MOS管截止、VCC0V9_S3输出为0V;
二、eDP进阶
2.1 eDP触摸功能
当前市面上使用的触摸屏一般都使用了I2C接口,当然也有SPI、USB等接口。同时支持多点触摸,那什么是多点触摸呢?顾名思义,多点触摸技术指的是允许用户同时通过多个手指来控制图形界面的一种技术,与多点触摸技术相对应的当然就是单点触摸。具体可以参看我们之前介绍的《Rockchip RK3399 - USB触摸屏接口驱动》。
2.1.1 HD702介绍
HD702是友善之臂设计开发并生产的一款7寸高清电容触摸显示模块,分辨率为1280 x 800,支持触摸,背光可调(通过一线通讯),其接口适用于友善之臂出品的4412/4418/6818等系列ARM主控板,可支持Linux, Android等嵌入式系统,并且驱动开源。
而我们使用的是带有eDP接口的HD702,因此其型号被定义为HD702E,其采用I2C接口进行触摸数据传输。
2.1.2 I2C触摸原理
首先,需要了解I2C触摸屏的工作原理。I2C触摸屏是一种通过I2C接口连接到SoC的输入设备,它的工作原理类似于普通的触摸屏。一般来言,I2C触摸屏内部驱动板都会有一个触摸IC,比如FT5426;
- 此芯片一端连接触摸屏的模拟信号,对触摸动作采样然后
AD转换; - 另一端通过
I2C连接SoC,即将AD转换后的数据通过I2C接口发给SoC;
对于I2C接口触摸屏来说:
- 所谓的触摸驱动本质上就是
I2C设备驱动; - 触摸
IC提供了中断信号引脚,当检测到触摸信息后就会触发中断,那么就要在中断处理程序里来读取触摸信息;得到的是触摸位置绝对信息以及触摸屏是否有按下;
2.1.3 数据格式
鼠标、键盘、触摸屏均数据HID(Human Interface Devices)设备,所以触摸屏连接的源端设备的系统软件和固件必须支持HID规范。
触摸屏采集的数据必须以HID格式上报,由HID报告描述符定义。
触摸屏source端设备必须具备的条件:
- 可以接收到触摸的标准数据;
- 可以解析触摸数据;
IRQ_HPD中断进程在一个成比例的速率下与他的触摸设备相同;
触摸屏sink端:
- 有传感器可以产生原始的触摸数据;
- 有一个格式化器,可以将原始数据转换成标准的协议形式数据;
- 可以将每个原始数据转换成标准数据之后传输到
source端;
这里说的标准数据,指的就是符合HID描述符描述的数据格式,具体可以参考我之前介绍的《HID报告描述符》。
2.1.4 数据通信
当选择触摸屏幕时,触摸屏source端可以发起Output和Feature Reports, 触摸屏sink端可以发起Input和Feature Reports。
触摸屏sink端可以通过AUX_CH传输触摸数据也可以通过I2C进行数据传输。需要保证触摸屏传输的数据支持HID协议规范。
下图是触摸屏source端和sink端的通信;

2.2 eDP屏幕接通数据流
上电之后,eDP source端和sink端数据流如下:
sink端通过HPD向source端发射一个脉冲信号,告诉source端有设备接入;source端通过AUX通道读取sink端的DPCD接收能力字段;sink端使用DPCD接收能力字段进行应答;source端通过AUX通道读取sink端得EDID;EDID用来表示sink能够显示的画面的能力、参数等等,具体可以参考:《EDID》;sink端通过AUX应答EDID;- 写入
DPCD链路配置路段; source端设备启动Link Training,sink端可进行时钟恢复和均衡化;source端读取DPCD链路和sink端的状态;sink端回应DPCD链路和sInk端的状态,如果Main-link不稳定,返回步骤7;source端发送MSA(主流属性)数据;source端发送视频数据;
具体流程如下图所示:

具体时序如下图所示:

参考文章
[1] DP/eDP协议学习--协议简介
[2] eDP接口的LCD屏简述
[3] 输入子系统–电容触摸驱动实验

浙公网安备 33010602011771号