zoukankan      html  css  js  c++  java
  • RGB屏驱动流程

    RGB屏驱动

    这里讲下大致的流程,不作具体详细代码示例。
    TFT LCD的屏幕驱动方式有很多种,以12864来说,一般是直接由SPI来操作屏的驱动IC,再来IC来负责驱动屏幕,还有一个驱动接口如8080或者6800,相对于SPI来说这两种并口的数据处理方式会提高相应的数据传输速度,上述的接口都称之为MCU接口。

    MCU接口

    驱动IC中会带有一个数据存储空间,称为GRAM用于接收屏幕数据,再由驱动模块将GRAM里面的数据更新到屏幕之上,一般GRAM不会太大,导致了MCU接口屏一般不会超过3.8寸,对大一些屏幕一般就不采用MCU接口了

    RGB接口

    RGB接口的驱动,屏幕没GRAM这个存储空间,而是使用系统内存作为其显示的BUFFER,而且刷新速度远高于MCU接口。对于STM32来说,配置好屏幕的BUFFER存储空间与LTDC驱动模块后,用户只需要更新BUFFER中的数据,LTDC模块会自动去更新屏幕。

    RGB屏

    1. RGB屏显示数据输出是分为两种模式的,一种是DE模式,由DE输出高低电平控制;另一种是SYNC模式,由hsync与vsync输出行场同步信号至RGB屏。该两种模式由一个MODE脚进行选择,为0 时选择SYNC模式,为1时选择DE模式。
      通常选择DE模式
    2. 帧率取60hz左右,帧数与分辨率就决定了LCD的最小PCLK的时钟频率,不过在屏幕的文档里面都会提到这个数据,以800*480为例,大概在30MHZ左右。
    3. RGB屏数据管脚
      image

    LCD_CLK,LCD_HSYNC,LCD_VSYNC,LCD_DE为屏幕控制脚,

    RGB数据线,根据不同的RGB格式选择与之相对应RGB管脚不一定全部用到,

    不同的屏幕管脚定义会有所不同,主要表现为电压不同,及一些配置,如扫描方向等等。

    RGB驱动的时序图

    这个时序图中已经包含了DE与SYNC两种模式的时序,而实际用的时候,只要使用其中一种模式的线的时序就可以达到驱动屏幕的效果

    SYNC模式,由HSYNC与VSYNC来确定行与列的起始,再通过一些扫描前的准备与回扫操作来达到屏的驱动,这些具体的参数都是屏幕自己决定,在屏幕的文档里面都会有相应的说明。

    DE模式,直接由LCD_DE来决定数据是否有效,而通过时间间隔来确定行与列的起始,这里没有找到相应的文档来支持这个说法,但是在驱动时将HSYNC,与VSYNC两根线都去掉的情况下还是可以正常使用来,可能可以侧面验证这个想法。

    一个扫描周期包括一个起始的垂直同步信号,再包括相应行数的水平同步信号。同时两者的信号时钟单拉也是不一样的,不过在配置的时候我们并不需要关心这个单元,把相应的值对照LCD的规格参数配置好就可以了。

    以STM32F4为例配置

    先是配置好相应的管脚,再配置LTDC将屏幕时序的参数配置进行,再配置BUFFER(由SDRAM或SRAM来存储)的内存空间,以这样的方式来驱动屏幕。
    而屏幕的底层响应函数就是对BUFFER的赋值,而屏幕的刷新由硬件完成,且速度是固定的。
    至于的代码DEMO需要参考官方的例子

  • 相关阅读:
    超300程序员受益入职的面试经验
    【修真院“正直”系列之三】【修真神界】【修行卷】【第一章】修真院入场券
    Js的同步异步以及回调函数
    Bootstrap栅格布局使用
    为什么程序员的工资比其他行业高这么多?
    Java培训机构可靠吗?
    get 与 post的区别?application json 与form表单的区别?
    谈谈以前端角度出发做好SEO需要考虑什么?
    【修真院“纯洁”系列之十九】驱逐令
    Redis缓存穿透和缓存雪崩以及解决方案
  • 原文地址:https://www.cnblogs.com/stupidpeng/p/13413601.html
Copyright © 2011-2022 走看看