This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DS90ub947 ==> DS90ub948 LVDS透传的时候, LCD概率性花屏



Dear TI,

  我们目前有个项目,ub947==>LCD模组上的ub948==>LCD,分辨率是1920x720@ 60,目前ub947在主板上跟主芯片的双路LVDS接口进行链接,UB948在LCD模组上,主板和模组之间通过电缆的双绞线进行链接。其它部分主要是I2C、GPIO以及中断部分的透传。

目前的情况是:UB947和ub948的寄存器配置部分,我们只配置了I2C透传、中断透传以及ub948的DGPIO控制模式三个部分,其它没有配置,对LVDS通道部分默认上电就已经透传过去了,调试时是OK的。单上电概率性出现花屏的问题。

附件是我们系统针对ub947和ub948透传的系统设计方案,以及ub947和ub948的原理图。

目前我们这边想问的是,按照我们系统设计的原理图的设计方式来实现,LVDS通路是否需要针对性的寄存器配置。

ub947&ub948分离屏.zip

  • 您好,以前也有客户问过LCD花屏的问题,那需要检查是主芯片的视频data是否有问题,还是948接收端的data有问题,排查948造成的问题的话可以看下948的lock引脚是否能正常锁存,或者cable连接,检查状态寄存器是否有bit error发生?
    其次可能就是layout,或者Connector之间需要排查的问题。
  • dear Kailyn Chen,

      目前我们查到的问题出现在ub947上,我们发现在出现问题的时候,让ub947单独下电在上电,其它模块不动,就恢复正常了。

      而驱动在异常的时候查询状态寄存器0x0A=0x07, 0x0B=0x00, 0x0C=0x07,而在正常显示的时候,0x0A=0x02, 0x0B=0x00, 0x0C=0x07。

      而我们的硬件针对MODE_SEL[1:0]的硬件配置如下图:

      

    驱动在初始化的时候并没有对lvds独立进行设置,只设置了中断和I2C的透传,如下:

    ret=disp947_reg_write(pdata->disp947_client,R_CONFIGURATION,0xDA);//duge add
    ret=disp947_reg_write(pdata->disp947_client,R_I2C_CONTROL2,0xDE);//duge change
    ret=disp947_reg_write(pdata->disp947_client,R_GPIO3_CONFIG,0x03);//设置947 GPIO3 为input
    ret=disp947_reg_write(pdata->disp947_client,0xc6,0x21);

    其它寄存器都没初始化,使用默认。(GPIO的控制在ub948中使用DGPIO模式来实现的)

    针对以上情况,ub947的硬件上我们应该从哪方面入手去分析。软件驱动中寄存器还需要哪些配置。

    谢谢!

  • 驱动在初始化的时候并没有对lvds独立进行设置,只设置了中断和I2C的透传,如下:
    ret=disp947_reg_write(pdata->disp947_client,0x03,0xDA);//duge add
    ret=disp947_reg_write(pdata->disp947_client,0x17);//duge change
    ret=disp947_reg_write(pdata->disp947_client,0x0F,0x03);//设置947 GPIO3 为input
    ret=disp947_reg_write(pdata->disp947_client,0xc6,0x21);
  • 您好, 这里的图片未显示, 我看了下附件的电路图, MODE_SEL0 和MODE_SEL1的上下拉阻值不是参考datasheet Table7和Table8的阻值?
    比如OLDI_DUAL=0, repeater=0的话,电路中上拉电阻R498可以是open,下拉电阻R537阻值小于100ohm, 您使用了R537是105kohm.
    对应OLDI_DUAL=0, 意思是使用Single-pixel OpenLDI interface. repeater=0代表disable repeater.
    也就是说, MODE_SEL0 和MODE_SEL1阻值的选取参考Table7&8, 对应的 MODE_SEL[1:0]配置信息参考Table6.
  • dear Kailyn Chen,
    因为图片上传不上去,我试了几次都不行,我目前查看的结果,0x4F=0xC0时显示正常,而0x4F=0x40是花屏,其它MODE_SEL的其它寄存器的位是正常的。在驱动的初始化中加入
    ret=disp947_reg_write(pdata->disp947_client,0x03,0xDA);//duge add
    ret=disp947_reg_write(pdata->disp947_client,0x17,0xDE);//duge change
    ret=disp947_reg_write(pdata->disp947_client,0x4F,0xC0); //MODE_SEL
    ret=disp947_reg_write(pdata->disp947_client,0x0F,0x03);//设置947 GPIO3 为input
    ret=disp947_reg_write(pdata->disp947_client,0xc6,0x21);
    之后,我们发现调整稳压电源的电压,快速调整就很容易出现。
    这个时候去读取状态寄存器:
    0x0A=0x08 ====>这里刚好出现超过7次通道CRC数据异常
    0x0B=0x00
    0x0c=0x07
    MODE_SEL寄存器读取:
    0x4F=0xC0
    0xC2=0x80
    0x5B=0x20
    发现模式设置是正常的,就是0x0a=0x08,通道数据CRC异常。
    我读0x04是0x80,写入0x90,清除crc通道错误,发现恢复不了,我们硬件需要查找哪些方面的原因。
    针对这种情况,ub947的寄存器方面还需要写哪些寄存器。

    谢谢!
  • 您好,0x4F=0xC0时显示正常,而0x4F=0x40是花屏, 也即是说0X4F的bit7 不同导致花屏, oLDI 和 SPWG的data mapping, 这两个data mappling的区别在于MSB还是LSB在D3上, 您可以直接使用MAPSEL引脚来配置是oLDI data mapping还是SPWG data mapping.
    MAPSEL您配置的是高电平还是低电平?
  • 另外,947的datasheet 0X4F的bit7 和MAPSEL的配置正好相反, 0X4F的bit 7写反了, 应该和MAPSEL一致,也就是说应该是
    1: SPWG mapping.
    0: OpenLDI mapping
    所以您先确认下视频源的格式是oLDI还是SPWG,然后再配置947, 格式要一致才行.
  • 我们基本已经找到原因了,是ub947的上下电不对导致的,因为我们的硬件设计ub947+imx6的电源控制是分开的,并且由MCU控制,而MCU那边在电源高低电压调节的时候对imx6和ub947是分开控制的,原则讲ub947是挂在imx6上,ub947的电源应该由imx6的外挂pimc来控制ub947的上下电。

    所以从目前我们的测试看MCU控制imx6+ub947的电源时,单作一个整体来控制基本就不会在电源调节高低电压的时候出现花屏问题了。

    谢谢支持,您那边给我们提供了一个很好的思路。

  • Dear Kailyn Chen,
    同时您说的模式配置这里我们硬件已经修改过了的。从imx6那边输出的数据格式来看是对的。
  • 很高兴您的问题得以解决,也感谢您的反馈信息。