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
信号的一侧。
![](https://gitee.com/zyly2033/blog-pic/raw/master/202402262125407.png)
以上是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
接口,如下图所示:
![](https://gitee.com/zyly2033/blog-pic/raw/master/202402271920151.png)
以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
侧
![](https://gitee.com/zyly2033/blog-pic/raw/master/202402271920346.png)
1.4.2 eDP
接口侧
![](https://gitee.com/zyly2033/blog-pic/raw/master/202402271924408.png)
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
,这个应该是处理器睡眠引脚,处理器工作时电源有效)引脚控制的;
![](https://gitee.com/zyly2033/blog-pic/raw/master/202402262350979.png)
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] 输入子系统–电容触摸驱动实验