XPC-3399 LVDS显示,使用GM8775C MIPI DSI 转LVDS发送器实现,该收发器特性如下:
GM8775C介绍
1、产品概述
GM8775C 型 DSI 转双通道 LVDS 发送器产品主要实现将 MIPI DSI 转单/双通道 LVDS功能, MIPI 支持 1/2/3/4 通道可选,最大支持 4Gbps 速率。 LVDS 时钟频率最高 154MHz,最大支持视频格式为 FULL HD(1920 x 1200)。
该芯片主要应用于手持设备、双屏显示,大屏幕显示等应用需求。
2、产品特征
a) I/0 电源电压: 1.8V /3.3V;
b) core 电源电压: 1.8V;
c) 支持 MIPI® D-PHY 1.00.00 和 MIPI® DSI 1.02.00。
d) MIPI 支持 1/2/3/4 通道可选的传输方式, 最高速率 1Gbps/通道。
e) MIPI 接收 18bpp RGB666 、 24bpp RGB888 、 16bpp RGB565 的打包格式。
f) MIPI 支持 LPDT 传输(Low-Power Data Transmission)和反向 LPDT 传输。
g) LVDS 的时钟范围为 25MHz 到 154MHz。
h) LVDS 输出支持单/双通道模式。选择双通道模式时,可配置输出为 18/24bit,JEIDA/VESA 模式;选择单通道时,每通道可同时输出,且可单独配置输出模式(18/24bit, JEIDA/VESA 模式)。
i) LVDS 的输出数据通道可灵活调整顺序以方便 PCB 布线。
j) 可选择采用 MIPI 时钟或外部参考时钟做 LVDS 输出的参考频率,且支持自动校准功能。
k) 支持 MIPI command mode 配置和外部 I2C 配置两种芯片配置方式;
l) GPO 可以输出 PWM 信号,控制屏幕背光。
m) 封装: QFN48-pins with e-pad.
n) 工作温度: -40℃~85℃;
o) ESD 能力:≥2KV。
3、产品功能框图
1、MIPI支持1/2/3/4通道可选,最大支持4Gbps速率;
2、LVDS时钟范围25~154MHz,输出最大分辨可达FULL HD(1920 * 1200);
3、支持单/双通道LVDS:
① 选择双通道时,数据带宽可配输出18/24 bit,JEIDA/VESA模式;
② 选择单通道时,每通道可同时输出,且单独配置输出模式(18/24 bit,JEIDA/VESA 模式)。
2.1 XPC-3399 及LVDS接口实现介绍
XPC-3399 LVDS接口包括LVDS信号接口与背光(PWM亮度调节)接口,此外LCM通过GPIO上电、LCM电源兼容3.3V/5V/12V设计(通过跳线选择),如图2-1、图2-2、图2-3所示:
图2-1:LVDS数据信号接口
图2-2:PWM背光接口(CN16)
图2-3:GPIO4_D6控制LCM上电
图2-4:LCM电源供给
MIPI输入为4 LANE,如图2-5所示:
图2-5: GM8775C 输入LANE
XPC-3399 支持8 bit 单/双通道的LVDS 的LCM,当驱动6bit LCM时,Y3(第三对差分信
号)悬空。
从简介当中得知(或查看GM8775C 手册),GM8775C只支持18或24 bit的JEIDA或VESA模式单或双通道的LCD,且分辨率不能大于 1920 * 1200 像素。
以G156XW01 V0为例,确认前述LVDS数据带宽与标准、LVDS通道,在LCM手册中查看:
1、LVDS数据带宽与标准
找到输入数据格式图,从中确认RGB数量与组成,再行比对附录1 data mapping ,从而确认LVDS标准。
图2-6 :G156XW01 V0输入数据格式
图2-6中,RGB三基色均为8,即:R0~7、G0~7、B0~7。再看组合方式,与中VESA_8BIT排序一致,所以传输模式为VESA标准。
LVDS 信号线线序并没有统一标准,不同厂家的LCM其线序可能不同,因此在选定LCM后需要定制信号线。
XPC-3399支持单/双通道的LVDS显示器,单通道以G156XW01V0为例、双通道以M215HGEL21为例,介绍LCD面板与XPC-3399 LVDS接口(CN15)之间的信号连接。
1、单通道LVDS
单通道8位LVDS连接XPC-3399 的LVDS1_xxx 这一组信号,LVDS2_xxx这一组悬空。LCD面板G156XW01V0与XPC-3999的接线如图2-7所示:
图2-7
2、双通道LVDS
双通道8位LVDS,奇通道连接LVDS1_xxx这一组信号、偶通道连接LVDS2_xxx 这一组信号。LCD面板M215HGEL21与XPC-3999的接线如图2-8所示:
图2-8
XPC-3399 LVDS(Linux) 驱动工作在于适配LCM时序,GM8775C提供了计算时序的工具,填入LCM对应的参数即可生成I2C/MIPI 控制指令,在此采用mipi指令。
以G156XW01 V0,使用“GM8775C_A1.1__IIC20190819”工具计算mipi指令,过程如下:
1、打开GM8775C_A1.1__IIC20190819程序
在Windows 系统中运行GM8775C_A1.1__IIC20190819,其界面如下:
图3-1:GM8775C 工具
2、生成指令
查阅G156XW01 V0数据手册,完成工具的LVDS、MIPI功能区块与测试模式等的有关参数填写/选择,继而生成寄存器操作参数。
LVDS功能区块:
① 视频格式
找到LCM的时序特性表与时序图(非必须,视情况而定),将参数GM8775C工具的“视频格式”区域中。
行有效像素:对应图3-2中的 H-section -- Display Area,取典型值 1366
场有效像素:对应图3-2中的 V-section -- Display Area,取典型值 768
行前肩、行同步、行后肩:对应 DE mode的LCM,三者值之和等于图3-2中的 H-section -- Blanking的值,取典型值 200。对于sync mode的LCM,一般会给出各自的值或根据时序图计算。
场前肩、场同步、场后肩:对应 DE mode的LCM,三者值之和等于图3-2中的 V-section -- Blanking的值,取典型值 38。对于sync mode的LCM,一般会给出各自的值或根据时序图计算。
LVDS时钟(HMz):使用行、场周期与帧率计算,对图3-2中的Th、Tv、F,
clk = Th * Tv * F = 1560 * 806 * 60 = 75441600 Hz
图3-2:G156XW01 V0 时序表
② LVDS输出通道选择
从图2-5 输入数据格式可知只有一个数据通道,因此选择“单通道”。
③ LINK
据GM8775C手册,单通道模式是,每通道可同时输出,且可单独配置输出模式。因此,配置物理连接的通道即可。第二章已经确认G156XW01 V0为VESA、8 bit。
④ LINK0 与LINK1 P/交换
无交换,不需要配置。
⑤ LINK0与LINK1 LINE交换
无交换,不需要配置。
测试模式:
打开测试模式后,可现实ColorBar、White等效果,但不能正常logo、Android界面。我们旨在现实Android,因此关闭测试模式。
MIPI功能区块
① MIPI 配置
LAN数量:选择4
MIPI时钟(MHz):计算公式为:
Mipiclock = [ (width+hsync+hfp+hbp) * (height+vsync+vfp+vbp) ] * (bus_width) * fps/ (lane_num)/2
= Th * Tv * 24 * 60 / 4 / 2
= 1560 * 806 * 24 * 60 / 4 / 2
= 226044000 Hz
② MIPI P/N交换
无交换,不需要配置。
③ 参考时钟选择
选择MIPI时钟
④ 控制方式
选择MIPI命令
填入/配置数据完成后,点击“创建寄存器表”,然后在点击“创建文件”,即可在工具的同一目录生成时序文件,文件名如:GM8775C_RegList20210625_181813.txt ,当中记录了寄存器与写入的值。寄存器表的值如图3-3所示:
图3-3:生成寄存器表
3、写入dts
生成寄存器表适用于I2C操作,最终写入dts是mipi指令,simple display panel 驱动中,初始化LCD的时序写在panel-init-sequence属性中,其分为四个字节:
字节 0: DSC(Display Command Set)数据类型
字节 1:发送DSC指令后延时多少ms
字节 2:命令净荷长度
字节 3:从第三字节开始表示命令的有效payload。
GM8775C MIPI CMD需要使用短指令格式,指令格式为:
DATA ID(0x23)+REG(8bit)+DATA(8bit)
对应panel-init-sequence属性,其格式为:
注:payload的字节数等于命令净荷长度。
panel-init-sequence的数据类型、延时与命令净荷长度不变,将寄存器表中值替换payload两列,共34行。此处为数值为16进制,不需要加前缀0x。此外,还需要配置display-timings等,具体参考rk3399-xpc3399-rev00.dts。
4、烧写调试
重新编译Linux kernel,然后烧写resource.img。若参数配置正常,则能显示Android桌面。