一、接口定义
RGB颜色是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。
1)区别
正常的RGB24是由24位即3个字节来描述一个像素,R、G、B各8位。而实际使用中为了减少图像数据的尺寸,如视频领域,对R、G、B所使用的位数进行的缩减,如你所说的RGB565和RGB555。
RGB565 是16位的,2个字节,5 6 5,第一字节的前5位是R,后三位 第二字节前三位是G,第二字节后5位是B。就是R-5bit,G-6bit,B-5bit
RGB555 也是16位的,2个字节。就是R-5bit,G-5bit,B-5bit,有1位未用
RGB888 是24位的,3个字节。就是R-8bit,G-8bit,B-8bit ;其实这就是RGB24
至于BMP那是RGB的像素数据基础上增加位图头数据而成的文件格式。
另外常见的BMP图像文件,即是在RGB的像素数据基础上增加位图头数据而成的图像文件格式。
一般BMP是BGR888,jpeg是YUV的,其他的要看各自格式的标准描述。
(2)各自优缺点
从屏幕自身说,屏幕自身的控制器必须要达到RGB888的标准,才可以使用RGB888,相比RGB565,需要屏幕主控的存储空间增加1/2。RGB888的颜色分辨率肯定要比565高,造价成本更高。RGB565一方面可以降低成本,同时,减少单片机传输的数据量,能够实现2^16种颜色,满足一般的使用场景;主要缺点,就是色域没有RGB888广。
2.1 取位与补位
24位RGB[23:0]转16位RGB[15:0]是通过取高位来实现的。取RGB[23:19],RGB[15:10],RGB[7:3]作为RGB三原色的值。
16位RGB[23:0]转24位RGB[15:0]是通过补位来实现的。使用位拼接的语法为RGB低位补0至8位即可。
Mini2440的LCD硬件电路图是RGB888的接法:
但根据Linux中的配置实际上用的是RGB565,根这个配置在mach-mini2440.c的static struct s3c2410fb_mach_info mini2440_fb_info_initdata={};中!具体体现是:
.gpccon=0xaa955699;
.gpdcon=0xaa95aaa1;
二、接口类型
并行 RGB
串行 RGB
(1)接口特点
a. 接口一般为3.3V电平
b. 需要同步信号
c. 需时刻刷新图像数据
d. 需配置适当的timing
上图:并行 RGB 接口
上图:串行 RGB 接口
(2)最大分辨率和时钟频率
并行 RGB 接口:
分辨率:1920 * 1080
时钟频率:1920108060*1.2 = 149MHZ
串行 RGB 接口:
分辨率:800 * 480
时钟频率:8003480601.2 = 83MHZ