当前位置:   article > 正文

关于IMX双通道LVDS 的深入讲解_双路lvds屏与单路lvds屏怎么区分

双路lvds屏与单路lvds屏怎么区分

其实之前写过LCD/LVDS的一些时序的基本概念《与LCD移植相关的概念》。但后来发现还是不够全面。关于双通道LVDS,可能会有很多人有一些陌生,它是什么原理? 有什么作用? 时序如何设定? 接下来, 就让我们带着这些问题去阅读下面的文章吧!

 

1. IMX LDB桥对LVDS 的支持情况:

让我们先看一张imx6 TRM 中的图.

IMX6 LVDS 桥提供两个LVDS通道, 或许下面的图更能说明什么是通道:

什么叫做通道? 上面这张图描述的很清楚,LVDS0_CLK_N, LVDS0_CLK_P, LVDS0_DATA[3:0]_N, LVDS0_DATA[3:0]_P 就构成了一个通道0,剩下的一组构成了通道1。我们可以看到每一组LVDS通道有一组完整LVDS信号,这组信号就可以接一个LVDS panel。

该LVDS 桥支持 单通道,双通道, split 通道 的输出。我们来具体讲讲这三者的区别:

  单通道LVDS : 只通过一个通道接向外面的LVDS panel。

  双通道LVDS: 通过两个通道接向外面的两个LVDS panel, panel 显示相同内容;

  split 通道LVDS: 通过两个通道接向外面的一个LVDS panel.   

单通道很好理解, 它是我们常用的一种LVDS,这里不再描述。为了彻底弄明白 双通道 & split 通道的lvds,我们还得从IPU 说起。

 

2. IPU DI 与LVDS

IMX6 CPU 所有的显示(LCD,HDMI,LVDS),都要经过IPU的处理。IPU 的数据处理流程,让我们用一张图来解释:

IPU 将framebuffer 中的数据读入到IPU,然后根据其分辨率参数,生成带有时序的显示数据, 最终通过DI口送出。

每个DI 口送出的数据,就已经包含了hsync,vsync,pixelclock,及像素数据。 在HDMI, LVDS, LCD 端,都可以控制相关寄存器,让DI 的数据流流向自己,最终经过显示协议的转换输出到显示屏幕上去。 也就是说,HDMI, LVDS , LCD 的显示数据都是从IPU DI 路由给他们的。

从上图可得,每一个IPU都有两个 DI 口,也就是说每个IPU 最多支持两路显示。

了解了这一概念之后,我们再来看 LVDS 双通道 &split 通道:

双通道LVDS:使用相同的IPU DI,且每个通道都路由这个DI 的数据到 自己的通道。由于使用的是相同的DI, 所以两个显示屏幕内容是相同的。 很明显,双通道LVDS 能够实现多屏幕同显。

split通道LVDS:使用相同的IPU DI,但每个通道路由不同的数据,奇数通道路由奇数位像素数据,偶数通道路由偶数位像素数据,依次来构成一个完整的帧。

可能比较抽象,举个栗子。1920x1080的像素数据中每一行有1920 个像素点,分别编号1,2,3, 。。。1920, lvds split mode 就是在通道0 中发送第一个像素数据,通道1中发送第二个像素数据,依此类推。再来张很重要的图来加以说明。

                                                  图 2.2

这张图是自己画的,但很重要的说明了LVDS split 模式下, LVDS 通道中数据构成方式。好了我们后面还要讲这张图片。

从这里可以看出,所谓双通道LVDS,其实也很简单,它的时序参数和单通道lvds 是没有仍何区别的。接下来就是split通道的LVDS了。

 

3. Split 通道的LVDS的timing

相信看了刚才对split mode 的LVDS 的描述,已经大致有了了解。那么当拿到split 模式的LVDS, 如何调节它的时序呢?其实这一切,都源于对图2.2的理解。让我们对这个图重新完善下:  

这张图是pixelclock, IPU DI , LVDS channel0, LVDS channel1 中的数据对照。

举个栗子说明,如果IPU DI 端输出是1920x1080M@60 分辨率的像素数据, lvds channel 0 的时序变成了960x1080M@60 的分辨率,lvds channel 1 的时序也变成了960x1080M@60 的分辨率。pixelclock 就变成了原来的一半。

当我们拿到一个1920x1080 split 模式的lvds 的datasheet,假如它有下面的时序参数:

一看datasheet直接蒙逼,这不是1920x1080 的么?怎么变成960x1080的了。如过看了我们刚才上面的描述,你一定会知道,这个datasheet 描述的时序参数是指 每个LVDS接口 (通道)所需要的输入参数。

我们由刚才分析可得:一个LVDS 信号,经过split 模式后,lvds每个通道信号的pixelclock 变为原来的一半,水平有效长度变为原来的一半。

由此可以反推出 IPU DI 端的时序参数,datasheet 中的pixelclock*2 = DI 端的pixel clock ,h active 长度*2 = Di 端的 hactive 长度.

由此可以获得devicetree 中lvds split 模式下的timing,详细如下:

  1. timing50: g070vw0yuyu {
  2. clock-frequency = <144000000>;
  3. hactive = <1920>;
  4. vactive = <1080>;
  5. hback-porch = <120>;
  6. hfront-porch = <120>;
  7. vback-porch = <20>;
  8. vfront-porch = <20>;
  9. hsync-len = <32>;
  10. vsync-len = <5>;
  11. };

现在可以解释为啥需要split 模式的LVDS 了, 因为它每个通道需要的pixelclock 较低, 合成后可以变成高分辨率的显示屏,一般单通道的很难达到这么高的分辨率。

双通道LVDS的描述就至此了,希望对你有所帮助!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/510413
推荐阅读
相关标签
  

闽ICP备14008679号