介绍

液晶屏幕的修改主要参考以下文档:

https://elixir.bootlin.com/linux/latest/source/Documentation/devicetree/bindings/display/panel/display-timing.txt

其中这个图很重要

关于LCD的这些参数的意思请阅读下面两篇文章,写的比较好。

LCD RGB 控制技术讲解 — 时钟篇(上)

LCD RGB 控制技术 时钟篇(下)

可以搭配这个图来阅读,理解。

http://www.cs.ucr.edu/~jtarango/cs122a_lab4.html 备份:CS 122a Lab 4.pdf

这里也讲的很好,下面的三个图来自上面这个链接:


那么下面我们以两个常用模式的液晶屏为例子来解释。


SYNC模式的液晶屏

比如7寸的ETM0700G0DH6,在它的说明书(https://www.glynshop.com/erp/owweb/Daten/DSS/EDT/Products/Specifications/Active%20Displays/ETM0700G0DH6.pdf)中

在这个表中可以得到以下信息

设备树项目LCD
clock-frequencyDCLK FREQUENCY33.26M
hactiveHSYNC ACTIVE TIME800
vactiveVSYNC ACTIVE TIME600
hsync-lenHSYNC PULSE WIDTH128
vsync-lenVSYNC PULSE WIDTH2

其他信息需要根据时序图来定义


首先我们看H,可以看出(注意其中如TH是指在时序图和表格的SYMBOL中的符号TH)

TH(1056)=THA(800)+THS(216)+X,那么X就是40。也就是说hfront-porch是40.

THS(216)-TWH(128)=88。那么这个就是hback-porch。

注意此时看display-timing.txt中的那个图是从右到左的,而LCD手册中是从左到右的。

同样的方法

TV(525)=TVA(480)+TVS(35)+X,那么X就是10。也就是说vfront-porch是10.

TVS(35)-TWV(2)=33,那么这个就是vback-porch。

其他的设定都是和信号的极性有关~请按照说明书和硬件接法配置。

            timing2: ETM0700G0DH6 {
                clock-frequency = <33264000>;
                hactive = <800>;
                vactive = <480>;
                hback-porch = <88>;
                hsync-len = <128>;
                hfront-porch = <40>;
                vback-porch = <33>;
                vsync-len = <2>;
                vfront-porch = <10>;
                hsync-active = <0>;
                vsync-active = <0>;
                de-active = <1>;
                pixelclk-active = <0>;
            };


DE模式的显示屏

如 http://www.beyondinfinite.com/lcd/Library/Mitsubishi/AA057VF12.pdf


设备树项目LCD
clock-frequencyDCLK FREQUENCY25M
hactiveHSYNC ACTIVE TIME640
vactiveVSYNC ACTIVE TIME

480


可以看到它并没有sync之类的值,因此sync都设为0。

而很多平台的lcd控制器不允许各个设定值出现0,因此这里推荐设为12。

那么hfront-porch的值就可以通过THB(160)-12来得到,148,同样不能为0,因此设定为140。

而vfront-porch = TVB(45)-12 = 33。

back-porch都设为0。更多de模式的设置方法请参考

 http://arm.mini-box.com/index.php?title=Linux_LCD_timing_handling_and_interfacing


            timing2: AA057VF12 {
                                clock-frequency = <30000000>;
                                hactive = <640>;
                                vactive = <480>;
                                hback-porch = <8>;
                                hfront-porch = <140>;
                                hsync-len = <12>;
                                vback-porch = <0>;
                                vfront-porch = <33>;
                                vsync-len = <12>;
            };

修改了屏幕timing但没有生效

am335x平台的驱动,会检查timing是否可以实现,如实现不了,则会跳过选定的timing,使用下一个,如果只有一个timing,则会直接关掉显示。

因此如果发现修改timing不起作用,可以检查一下设定值。

  • No labels