背景
在开发项目中,笔者需要用一个MPU驱动一个1280x1024的双路LVDS液晶屏,不巧的是这颗MPU硬件上仅支持TTL RGB接口和MIPI接口,没有现成的LVDS接口。一开始是尝试使用THC63LVD827将TTL RGB转成双路LVDS驱动液晶屏,但是发现该MPU的TTL RGB接口最高只能驱动1280x768 60fps显示。无奈只能从MIPI转LVDS入手,该MPU的MIPI接口最高能支持4lane 1.5Gbps MIPI信号发送,最高可驱动1920x1080 60fps显示。然后查找资料发现GM8775C是可以满足笔者将MIPI转成双路LVDS驱动1280x1024液晶屏的需求。
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpbnlpeWFuZzg0NzU=,size_16,color_FFFFFF,t_70.jpg
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、产品功能框图

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpbnlpeWFuZzg0NzU=,size_16,color_FFFFFF,t_70.jpg
GM8775C调试
1、调换LVDS lane、P/N
GM8775C芯片支持LVDS lane交换,以及同一组lane内的P/N交换,方便PCB走线。下图是GM8775C提供的参考PCB,可以看到LVDS输出端是不需要打过孔或者多绕线的,还是很方便的。
如果有调整lane或者P/N,到后面使用上位机产生配置寄存器时需要需改对应的选项。笔者自己的板子只交换了LVDS的lane,没有交换P/N,所以到后面用上位机测试GM8775后端驱动LVDS液晶屏时需要调整如下

该上位机是用于产生GM8775C配置寄存器,并可以通过u***转IIC接口配置测试GM8775C功能。 watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpbnlpeWFuZzg0NzU=,size_16,color_FFFFFF,t_70.jpg

2、使用外部26Mhz晶振,IIC命令进行BIST TEST
一开始笔者为了排除其他因素的干扰就先使用外部的26Mhz晶振作为GM8775C的时钟源,用u***转iic工具对其进行BIST TEST。GM8775C的I2C_TYPE引脚需拉低作为Slave,I2C_ADDR选择高拉,器件地址为0x5A;选择拉低,器件地址为0x58。
配置好对应的参数后,点击产生寄存器参数,选择对应的器件地址写入数据。测试后若无问题,则屏幕可以被正常点亮显示。如果点不亮,则读回数据进行比较看数据是否被正确写入。如果读写数据一致,则检查配置是否正确、晶振是否起振、芯片是否焊接好等问题。

3、使用外部26Mhz晶振,MIPI命令进行BIST TEST
以上测试没有问题后,已经可以证实后端输出lvds信号正确,后端电路没有问题了。接着复位GM8775C,将生成的寄存器组数据拷贝到mpu上,让mpu产生MIPI信号,将配置寄存器数据通过MIPI从lane0发送到GM8775C,看是否能正常被电亮。如果能点亮,证明mipi信号的clock,lane0线序没有问题,在低速下通讯是正常的;若不能点亮,则查找焊接或者MIPI线序有问题。
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpbnlpeWFuZzg0NzU=,size_16,color_FFFFFF,t_70.jpg
4、使用MIPI时钟信号,MIPI命令进行BIST TEST
测试没有问题后,可以使用MIPI来给GM8775C提供时钟源,这样既可以省去一个26Mhz晶振,同时可以测试MIPI在高速情况下工作是否正常。如果不能正常显示的话,则需要检查下mipi的布线是否符合规范。

5、使用MIPI时钟信号,MIPI命令进行应用测试
如果都没问题后,则可以测试所有的MIPI线的信号了,配置好MIPI Clock频率,选择MIPI Clock作为时钟源,MIPI 命令作为配制命令,关闭BIST TEST,生成寄存器配置数据,写入到MPU,开启应用测试。

如果没有问题则液晶屏将显示应用程序的内容;如果显示异常,则有可能MIPI布线有问题或者焊接接触不良。

总结
虽然一系列测试过程看着有些繁琐,但是有助于我们减少干扰因素,出站问题的话,可以快速定位原因,解决问题,达到我们想要的结果。