总结篇之lcd驱动(重点)(三)

1、LCD简介

1、分辨率 

LCD显示器都是一个个像素点组成,比如1080p就是LCD上屏幕点数是1920*1080

像素格式

上面提到了像素点1,一个像素点相当于一个RGB小灯,通过控制这三种颜色亮度就可以显示各种各样的色彩,R,G,B分别占用8bit,再加上透明通道的8bit,一个像素点相当于占用4个字节的内存

3、lcd屏幕接口

IMX6ULL支持RGB接口的LCD,信号线如下,24个io口需要设置

4、显存

存放一帧的图像数据大小,一般定义一个数组

5、lcd时间参数

画一帧图片需要一行一行的画,HSYNC信号表示新的一行开始显示,信号的维持时间是HSPW

下一行像素的显示需要有个延时,叫做HFP

垂直:

VSYNC:垂直同步信号,帧同步信号,当出现这个信号的时候表示新的一帧开始显示,持续时间是vspw,间隔时间是VBP

2.LCD驱动简析

不同分辨率的 LCD 屏幕其 eLCDIF 控制器驱动代码都是一样的,只需要修改好对应的屏幕参数即可,也就是在设备树里面修改。LCD驱动部分不需要我们修改,只需要根据所使用的LCD来修改设备树:

1、LCDs所使用的Io配置

RGB LCD 的 24 根数据线配置项/4 根控制线配置项/LCD 背光 PWM 引脚配置项

2、lcd屏幕节点修改,修改相对应的属性值,换成我们的LCD屏幕参数

使用到的电气属性(data/ctl)

屏幕尺寸等参数

3、lcd背光节点信息修改,要根据实际使用的背光io来修改相应的设备节点信息

LCD 驱动代码编写

应用程序将数据写入framebuffer中,然后地址映射到内存中(物理内存与虚拟内存需要是一个地址)

lcd控制器从framerbuffer内存中将每个像素点发送给lcd              

famerbuffer驱动是一个字符驱动创建一个内存空间,可以直接对齐对写

frambuff驱动框架编写

 参考链接:驱动之LCD驱动框架和实现 | DRA&PHO

一、分配fb_info

fb_alloc_framebuffer  为framebuffer分配空间,进行内存映射

二、设置fb_info

  初始化fb_info设备结构体

从数据手册中获取屏幕参数,需要的参数每个屏幕不一定相同,填充fb_info

操作函数也在其中

三、注册fb_info

register_framebuffer  

*注册fb设备到系统中

硬件的配置

1、引脚设置

配置GPIO用于LCD

2、时钟设置

根据LCD手册设置LCD控制器,比如VCLK的频率

3、lcd控制器设置

分配显存(framebuffer)并将地址告诉LCD控制器

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值