在ARM板卡上使用某个型号的LCD,往往要修改LCD驱动程序或者设备树,很不方便。
在ARM40-A5中,我们把常用的LCD型号的配置指令存放在 /etc/init.d/S01user1lcd 文件中,通过修改该文件,即可非常方便的适配不同的LCD。
对于 /etc/init.d/S01user1lcd 文件中未包含的LCD型号,也可通过本文介绍的方法,方便的自行在该文件中添加新的LCD型号。
一、Linux fbset 指令介绍
fbset指令可用于设置framebuffer缓冲区的大小,还能调整画面分辨率,位置,高低宽窄,色彩深度,并可决定是否启动显卡之各项硬件特性。
语法
fbset [-ahinsvVx][-db <信息文件>][-fb <外围设备代号>][--test][显示模式]
参数:

二、fbset 指令在ARM40-A5上的应用
在 /etc/init.d/S01user1lcd 文件中,有如下的内容:
#for TM028HDHG59
#fbset -fb /dev/vfb -g 240 320 240 320 24 -t 142857 38 10 8 4 10 4
#for TM035kdh03,vrefresh=36
#fbset -fb /dev/vfb -g 320 240 320 240 24 -t 254320 19 50 10 13 20 1
#for at043tn24 and G043FW01
#fbset -fb /dev/vfb -g 480 272 480 272 24 -t 180000 2 41 2 11 2 2
#for AT070TN92
#fbset -fb /dev/vfb -g 800 480 800 480 24 -t 30030 210 41 22 21 5 2
#for NL084SV01L
#fbset -fb /dev/vfb -g 800 600 800 600 24 -t 26040 200 12 5 15 12 5
#for A104SN03
#fbset -fb /dev/vfb -g 800 600 800 600 24 -t 25000 40 88 1 24 128 3
例如我们现在要使用 NL084SV01L 这一款LCD,则取消LCD配置指令前面的注释,改为:
fbset -fb /dev/vfb -g 800 600 800 600 24 -t 26040 200 12 5 15 12 5
保存后,reboot 重启 ARM40-A5,即已适配 NL084SV01L,然后可用《ARM40-A5应用程序——液晶屏触摸屏测试程序》介绍的方法,对LCD做简单的测试,观察适配是否完美。
LCD的接线情况,需参阅ARM40-A5的硬件文档、TCON板文档、以及LCD本身的数据手册。
三、fbset 指令参数详解
仍以 NL084SV01L 液晶屏为例,根据该LCD的数据手册,可知其部分参数:

图1
我们参照图1的 Timing characteristics 表格对 fbset -fb /dev/vfb -g 800 600 800 600 24 -t 26040 200 12 5 15 12 5 中的参数进行解析。
(1)fbset 指令中 -g 800 600 800 600 24 的前两个参数为XRES和YRES,是液晶屏的分辨率,对应于图1中的 thd 和 tvd 。第5个参数24为色彩深度,对于ARM40-A5,若硬件接线为888,则色彩深度为24;若硬件接线为666,则色彩深度为18.
(2)fbset 指令中 -t 26040 200 12 5 15 12 5 的参数,名称依次为 PIXCLOCK、LEFT、RIGHT、UPPER、LOWER、HSLEN、VSLEN,其中:(实际数值与LCD数据手册中的可能稍有差异,需根据调试的情况决定实际数值)
LEFT值200为HBP,“HS Back Porch”;
RIGHT值12为HFP,“HS Front Porch”;
HSLEN值12为HPW或HWH,“HS pluse width”;
XRES+LEFT+RIGHT+HSLEN 应等于 th 的值 1024(CLK),有的LCD给出的 th 值是一个范围,则 XRES+LEFT+RIGHT+HSLEN 的值应在 th 的范围内。
由于 NL084SV01L 未给出LEFT、RIGHT、HSLEN三者的值,本文中三者的值由实际调试得来,其意义在第四节讲解。
UPPER值5为VBP,“VS Back Proch”;
LOWER值15为VFP,“VS Front Porch”;
VSLEN值5为VPW或VWH,“VS pulse width”;
YRES+UPPER+LOWER+VSLEN 应等于 tv 的值 625(H),有的LCD给出的 tv 值是一个范围,则 YRES+UPPER+LOWER+VSLEN 的值应在 tv 的范围内。
由于 NL084SV01L 未给出UPPER、LOWER、VSLEN三者的值,本文中三者的值由实际调试得来,其意义在第四节讲解。
注意:
不同的型号的LCD和CPU/GPU,“VS pulse width”、“VS Front Porch”等术语和缩写会有差异,请注意理解其实质,避免因为术语和缩写的不同产生误解。本文亦未严格统一术语和缩写。
PIXCLOCK的计算公式:
① 假定LCD的刷新率为60Hz,则
(XRES+LEFT+RIGHT+HSLEN) * (YRES+UPPER+LOWER+VSLEN) * 60
= 1024 * 625 * 60 = 38400000
② PIXCLOCK = 10^12/38400000 = 26040
③ 上述计算方式可以这样理解:
th * tv * 刷新率 = fclk // fclk = 1/tc
按实际取的值,计算fclk为:
fclk = 1024 * 625 * 60 = 38.4 MHz // 与数据手册中的的典型值 1/tc = 38.362MHz 极为接近
PIXCLOCK = tc = 1 / fclk = 26042 (ps) // 实际取值26040,与数据手册中的典型值26067很接近
上述计算,可参照 AT070TN92、A104SN03等其它液晶屏进一步理解。
液晶屏 fbset 参数的调试,应以其数据手册为基本依据,根据测试时图像的显示情况,反复多次调整,方能得到理想的参数。
四、LCD参数的时序解析
4.1、VSLEN与HSLEN
仍以 NL084SV01L 液晶屏为例,其分辨率为800 * 600,若刷新率为60时,每秒LCD刷 800 * 600 * 60 个像素。 而CPU/GPU 不可能恰好给出 800 * 600 * 60 个像素的信号,这样LCD会无法确知信号的起始和结束,因此需要给信号添加一些标识,方便识别。这一帧信号与下一帧信号之间需要增加一个标识,宽度为VSLEN,为方便行文,以VSLEN指代这个标识。一行信号与下一行信号之间,也需要增加一个标识,宽度为HSLEN,即以HSLEN指代这个标识。
在其它资料中,我们也可以看到类似场同步和行同步的描述:LCD的垂直同步(Vertical Sync),用来表示一帧(Frame)图像的起始的,有的时候也会被称为场同步(即VSLEN);而水平同步(Horizontal Sync),则是用来表示一行像素点(即一帧图像中的一行)的起始的,有的时候也会被称为行同步(即HSLEN)。
4.2、LEFT、RIGHT、UPPER、LOWER
但是,除了给信号添加标识以外,剩余的信号,仍难以恰好是 800 * 600 * 60 个像素,因为这样就要求CPU/GPU与LCD的时序严格同步,实际上有困难。因此,除了VSLEN和HSLEN标识以外,VSLEN和HSLEN的前后,都需要一段时间的空白。VSLEN前的空白为LOWER,其后的空白为UPPER。HSLEN前的空白为RIGHT,其后的空白为LEFT。
我们结合图2、图3做进一步的讲解,在很多LCD数据手册中,都能看到图2、图3,或类似的时序图。

图2
对 fbset -fb /dev/vfb -g 800 600 800 600 24 -t 26040 200 12 5 15 12 5 来说:
VSLEN值5为“VS pulse width”,即图2中的 tvp;
UPPER值5为“VS Back Proch”,即图2中的 tvb;
LOWER值15为“VS Front Porch”,即图2中的 tvf;
YRES值600为“Vertial Display period”,即图2中的 tvd;
YRES+UPPER+LOWER+VSLEN值625为“Vertical Cycle”,即图中的 tv;
注意:
① VSLEN 前面的空白为LOWER(tvf),其后的空白为UPPER(tvb),可与下文的图5相应证。
② VSLEN、UPPER、LOWER、YRES的单位是PIXCLOCK。

图3
对 fbset -fb /dev/vfb -g 800 600 800 600 24 -t 26040 200 12 5 15 12 5 来说:
HSLEN值12为“HS pulse width”,即图3中的 thp;
LEFT值200为“HS Back Proch”,即图3中的 thb;
RIGHT值12为“HS Front Porch”,即图3中的 thf;
XRES值800为“Hertial Display period”,即图3中的 thd;
XRES+LEFT+RIGHT+HSLEN值1024为“Horizontal Cycle”,即图3中的 th;
注意:
- 支持 BLE 连接、由 4mA 至 20mA 电流回路供电的现场发送器参考设计
- AM2DM-0515DH60-NZ ±15 Vout、2W 双路输出 DC-DC 转换器的典型应用
- LTC6261IDC 音频耳机桥式驱动器运算放大器的典型应用
- LTC1775CS 2.5V/5A 可调输出降压稳压器的典型应用电路
- AD8601ARTZ-REEL7 符合 PC100 标准的线路输出放大器的典型应用
- 一种基于分立的 315MHz 振荡器解决方案,用于使用 BFR182 射频双极晶体管的远程无钥匙进入系统
- 使用 ROHM Semiconductor 的 BD49E39G-TR 的参考设计
- AM30EW-2405SZ 5V 三路输出 DC/DC 转换器的典型应用
- LTC3564 的电池在 1.2A 应用中达到 1.2V
- AL1676EV2,基于 AP1676 高亮度降压 LED 驱动控制器的评估板



清晰详细的铜丝漆包线点焊机WHT-728图片
keil C51环境下,汉字显示bug修复
LCD Datasheet
现代雷达系统的信号设计

BFR340T






京公网安备 11010802033920号