LCD应用开发手册

内核开启fbtft

Device Drivers  ---> 
    [*] SPI support  --->
    Graphics support  --->
        Frame buffer Devices  --->
             <*> Support for frame buffer devices  ---
    [*] Staging drivers  --->
        <*>   Support for small TFT LCD display modules  --->
             <*>   FB driver for the ILI9341 LCD Controller

应用程序编写

  1. 打开对应的设备节点 /dev/fb*
    fd = open("/dev/fb0", O_RDWR);
    
  2. 通过ioctl获取lcd相关信息
    struct fb_var_screeninfo var_info;  //lcd的可变信息
    struct fb_fix_screeninfo fix_info;  //lcd的固定信息

ioctl(fd, FBIOGET_FSCREENINFO, &fix_info); ioctl(fd, FBIOGET_VSCREENINFO, &var_info); </pre> 主要需要关注的信息有

fix_info->smem_len  //驱动分配的显存大小
fix_info->line_length //一行的字节数

var_info->xres //lcd实际的宽
var_info->yres //lcd实际高
var_info->bits_per_pixel //描述每个像素的bit数
fb->red.offset //描述rgb格式
fb->red.length
fb->green.offset
fb->green.length
fb->blue.offset
fb->blue.length
  1. 通过write或者mmap写入需要显示的图像
     size = var_info.xres_virtual * \
     var_info.yres_virtual * var_info.bits_per_pixel / 8;
    
    map = mmap(0, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);

</pre>

注意点

图像正确但颜色不正常

  • 可能数据大小端错了
  • 可能驱动开启了rgb转bgr

results matching ""

    No results matching ""