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