【ARM裸板】LCD硬件原理、时序及初始化

1.LCD与OLED的区别

  • LCD背光源与OLED自发光

  • LCD无机材料,LCD寿命较长。OLED广视角、几乎无穷高的对比度、可以弯曲、较低耗电优点。
    LCD与OLED结构差异

2.LCD原理

  • 屏幕上的每一个点称为像素
  • 每个像素点由RGB三原色组成
    LCD Display a picture

2.1 颜色如何确定?

  • 由RGB三组信号线组成
  • 由下原理图可知:R5条、G6条,B5条,即RGB565(彩色模式, 一个像素占两个字节
  • 因此其每个像素占用多少位(BBP:bit per piexl)为2个字节

2.2 LCD如何“行扫描”?

  • 有一条CLK时钟线与LCD相连,每发出一次CLK(高低电平),就移动一个像素。

2.3 如何跳到下一行进行“行扫描”?

  • 有一条HSYNC(水平同步信号)信号线与LCD相连,每发出一次脉冲(高低电平),行扫描跳到下一行的起始位置。

2.4 如何进行下一个“场扫描”?

  • 有一条VSYNC(垂直同步信号)信号线与LCD相连,每发出一次脉冲(高低电平),就跳到原点。

注意:RGB数据线上的数据从何而来?
内存里面手动划分一块显存(FrameBuffer),里面存放了要显示的数据,LCD控制器从里面将数据读出来,通过RGB三组线传给LCD,再依次打到显示屏上。

信号引脚标

3.LCD时序

  • 分辨率 = Hsync的个数 * 一行中的有效CLK

完整时序图:
完整时序图
形象时序图:
形象时序图

以上两张图可以解释LCD控制时序中的HsyncVsync的协同(可以理解 一帧是一个垂直同步信号、一行是一个水平同步信号)

  • 1.首先一帧(Vsync)中有若干个行(Hsync),设为y,Vsync发出帧脉冲宽度Tvp
  • 2.经过 Tvb 时间,才可以发送一帧的数据,从第一行开始
  • 3.其次一行(Hsync)中有若干个时钟信号(CLK),有效的设为x,Hsync发出脉冲宽度Thp
  • 4.经过 Thb 时间,才可以发送一行的数据
  • 5.直到发送到一行的最后一个像素,经过 Thf 时间,才会有下一个水平同步信号(Hsync)
  • 6.直到发送到最后一行,经过 Tvf 时间,才会有下一个垂直同步信号(Vsync)

由上可知几个重要的信号引脚HsyncVsyncCLKDn
由上可知几个重要的时间参数TvpTvbThpThbThfTvf

4.LCD控制器

思路:

  • 1.取数据:把FrameBuffer的地址、bpp分辨率告诉LCD控制器
  • 2.发数据:把时序告诉LCD控制器、并设置引脚的极性(本款是下降沿取数据,但是有的LCD是上升沿有效,因此需要设置极性)

LCD结构图

4.1 像素数据格式

  • 使用的像素数格式如下:16BPP
    16BPP内存数据格式

565数据格式引脚连接图:
565数据格式引脚连接图

4.2 调色板

  • 本应该用FrameBuffer中用16bit表示1像素,可以用8bit存放在FrameBuffer来省空间
  • 8bit存放的是调色板中颜色的索引(共256中16bit颜色)

那么当使用像素深度为8pp时候,像素深度和我们的带宽不一致,我们的颜色要用16位表示,如果直接用上肯定不可能,那我们就可以选择用调色板,调色板中存放了256种16bpp的颜色,这时候我们color存放的就不是真实的颜色值了,而是存放的是调色板中256种颜色的索引,成线性关系一一对应,这样我们大大减轻了系统的负担。用16bpp还是8bpp这得取决实际情况,16bpp肯定比8pp清晰,但同时带来的负荷也更加重。

调色板工作示意图
调色板工作示意图
调色板8BPP

5.编程框架

LCD编程框架

面向对象编程
参数层:

  • 1.抽象出(不同设备)共同的参数结构体
  • 2.上层的设备结构体指针指向所需的参数结构体

驱动层

  • 1.抽象不同平台的LCD控制器结构体
  • 2.上层的LCD控制器结构体指针指向所需的结构体

6. 结构体参数

6.1 引脚极性结构体

由上3.LCD时序可知几个重要的信号引脚:HsyncVsyncCLKDnHsyncVsyncCLKDn
引脚极性寄存器

/* 引脚极性结构体
 * NORMAL:正常极性
 * INVERT:反转极性
 */
typedef struct pins_polarity{
  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值