第18章LCD设备驱动之Linux 帧缓冲设备的参数设置

18.6 帧缓冲设备的参数设置

18.6.1 定时参数

    fb_info 结构体可变参数 var 中的 left_margin、right_margin、upper_margin、lower_margin、hsync_len

和 vsync_len 直接查 LCD 的数据手册可以得到,图 18.5 所示为某 LCD 数据手册中直接抓图获得的定时信息。


图18.5 LCD 数据手册中定时参数示例

分析:

        由图18.5 可知对该LCD ,var中各参数的较合适值分别为:left_margin = 104,right_margin = 8,

upper_margin = 16,lower_margin = 2,hsync_len = 8,vsync_len = 2。

18.6.2 像素时钟

fb_info可变参数 var 中的 pixclock为像素时钟,例如,如果为 28.37516 MHz,那么画 1 个像素需要 35242 ps(皮秒):1/(28.37516E6 Hz) = 35.242E-9 s

扫描二维码关注公众号,回复: 1689320 查看本文章

如果屏幕的分辨率是 640×480,显示一行需要的时间是:640*35.242E-9 s = 22.555E-6 s

每条扫描线是 640,但是水平回扫和水平同步也需要时间,假设水平回扫和同步需要 272 个像素时钟,因此,画一条扫描线完整的时间是:(640+272)*35.242E-9 s = 32.141E-6 s

可以计算出水平扫描率大约是 31kHz:

1/(32.141E-6 s) = 31.113E3 Hz

完整的屏幕有 480 线,但是垂直回扫和垂直同步也需要时间,假设垂直回扫和垂直同步需要49 个像素时钟,因此,画一个完整的屏幕的时间是:(480+49)*32.141E-6 s = 17.002E-3 s

可以计算出垂直扫描率大约是 59kHz:

1/(17.002E-3 s) = 58.815 Hz

这意味着屏幕数据每秒钟大约刷新 59 次。

18.6.3 颜色位域

fb_info可变参数 var 中的 red、green 和 blue 位域的设置直接由显示缓冲区与显示点的对应关系决定,例如,对于 RGB565 模式,查表 18.4,red 占据 5 位,偏移为 11 位;green 占据 6 位,偏移为 5 位;blue 占据 5 位,偏移为 0 位,即:

    fbinfo->var.red.offset = 11;
    fbinfo->var.green.offset = 5;
    fbinfo->var.blue.offset = 0;
    fbinfo->var.transp.offset = 0;
    fbinfo->var.red.length = 5;

    fbinfo->var.green.length = 6;

    fbinfo->var.blue.length = 5;

18.6.4 固定参数

fb_info固定参数 fix 中的 smem_start指示帧缓冲设备显示缓冲区的首地址,smem_len 为帧缓冲设备显示缓冲区的大小,计算公式为:smem_len = max_xres * max_yres * max_bpp(每个像素的位数)

即:帧缓冲设备显示缓冲区的大小 = 最大的 x 解析度 * 最大的 y 解析度 * 最大的 BPP。


猜你喜欢

转载自blog.csdn.net/xiezhi123456/article/details/80751914