关于IMX双通道LVDS 的深入讲解

本文转载自:https://blog.csdn.net/changqing1990/article/details/81128552

给自己存下来,以备不时之需。

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中发送第二个像素数据,依此类推。再来张很重要的图来加以说明。

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

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

 

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

   

这张图是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,详细如下:

timing50: g070vw0yuyu {
    clock-frequency = <144000000>;
    hactive = <1920>;
    vactive = <1080>;
    hback-porch = <120>;
    hfront-porch = <120>;
    vback-porch = <20>;
    vfront-porch = <20>;
    hsync-len = <32>;
    vsync-len = <5>;
}; 
现在可以解释为啥需要split 模式的LVDS 了, 因为它每个通道需要的pixelclock 较低, 合成后可以变成高分辨率的显示屏,一般单通道的很难达到这么高的分辨率。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值