• GM8775C MIPI转LVDS调试资料分享


    背景
    在开发项目中,笔者需要用一个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液晶屏的需求。

    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、产品功能框图


    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配置寄存器,并可以通过usb转IIC接口配置测试GM8775C功能。

    2、使用外部26Mhz晶振,IIC命令进行BIST TEST
    一开始笔者为了排除其他因素的干扰就先使用外部的26Mhz晶振作为GM8775C的时钟源,用usb转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线序有问题。

    4、使用MIPI时钟信号,MIPI命令进行BIST TEST
    测试没有问题后,可以使用MIPI来给GM8775C提供时钟源,这样既可以省去一个26Mhz晶振,同时可以测试MIPI在高速情况下工作是否正常。如果不能正常显示的话,则需要检查下mipi的布线是否符合规范。

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

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

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

    注意事项
    1、调整LVDS link奇偶场
    GM8775C驱动显示屏发现整体图片显示是OK的,但在边缘发现一些奇怪锯齿化像素点,这个是因为GM8775C LVDS LINK0 / LINK1的EVEN / ODD配置错了,只要重新配置好LINK EVEN / ODD后重新拷贝生成应用程序,编译运行就OK了。


    2、MIPI布线
    MIPI是高速差分信号接口,对布线要求比较严格,为了保证信号的同步和一致性,必须保证MIPI 同组信号P/N线等长。在LCD MIPI的信号线,组与组之间长度相差不超过200mil,每组的P/N信号线相差不超过60mil。长度尽量越短越好。
    同时还要尽可能少的打孔换层、尽量远离干扰、走线时应保证连续的参考层,且最好时地层,差分阻抗要求在100ohm。其他更多的要求可以参考网络上其他文章。
    一开始,笔者为了MPU能兼顾驱动LVDS和TTL RGB屏,同时保留了MIPI转LVDS功能和TTL RGB接口,导致走线不是很好走,MIPI布得不是很好,后面一直驱动不了液晶屏,所以在布MIPI信号线时尽量精简,满足以上以上布线要求,减少不必要的麻烦。

    3、GM8775C焊接
    在焊接过程中一定要焊好GM8775C和MPU,特别时MIPI引脚位置,测试应用程序驱动屏时需要MIPI信号都全部正常传输到GM8775C上才能看到正常的图像。笔者在GM8775C上位机单独测试后端LVDS信号时都测试好好的,但是用MIPI转接过来的信号驱动就是不行,看布线也布的很好。后面用手按压GM8775C居然点亮了,这就是明显的焊接接触不良,之前让笔者一度以为是软件设计有问题或者MIPI布线不行呢!真的是搞死了!如需详细资料或购买可联系占生
    ​原装正品 。现货优势
    4、win10系统使用usb转i2c不能下载偶数行配置
    在用上位机生成寄存器配置后,笔者在win10系统上使用usb转i2c工具下载配置发现写入再读出偶数行的配置跟写入的不一样,用逻辑分析仪抓i2c数据发现并没有写入偶数行的寄存器配置项,两台win10系统都是如此,但是在win7系统上却是正常的,这个不知道是usb驱动问题还是上位机问题。

  • 相关阅读:
    酷壳网文章清单汇总
    MySQL的事务和存储引擎
    自己实现str
    Apache简介与安装
    JavaScript系列之switch语句
    算法 反转自符串-(双指针)
    docker常用中间件安装
    做短视频必须掌握学会三个点,想做短视频不能太随意,要掌握方法
    【技术积累】Python中的NumPy库【一】
    Flink多流转换 完整使用 (第八章)
  • 原文地址:https://blog.csdn.net/TEL17727481301/article/details/126222676