Phytec中国的wiki
support@phytec.cn
热线:0755-61802110-803
介绍
液晶屏幕的修改主要参考以下文档:
其中这个图很重要
关于LCD的这些参数的意思请阅读下面两篇文章,写的比较好。
可以搭配这个图来阅读,理解。
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-frequency | DCLK FREQUENCY | 33.26M |
hactive | HSYNC ACTIVE TIME | 800 |
vactive | VSYNC ACTIVE TIME | 600 |
hsync-len | HSYNC PULSE WIDTH | 128 |
vsync-len | VSYNC PULSE WIDTH | 2 |
其他信息需要根据时序图来定义
首先我们看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-frequency | DCLK FREQUENCY | 25M |
hactive | HSYNC ACTIVE TIME | 640 |
vactive | VSYNC 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不起作用,可以检查一下设定值。