现在的位置: 首页 > 综合 > 正文

s3c2440 LCD 配置的一点答疑–极性为什么有的不反转,有的不反转,还有字节交换使能这些是什么意思?都是LCDCON5寄存器的

2013年10月14日 ⁄ 综合 ⁄ 共 641字 ⁄ 字号 评论关闭

 

 

对于RGB16来说,一个像素占2个字节,这样2个像素组合成1个字.

假如LCD面板上的某一行像素排列是P1 P2 P3 P4 P5 P6 P7 P8.

且我们定义unsigned int LCD_BUFFER[8]来存放像素数据.

那么LCD_BUFFER[0],LCD_BUFFER[1].....LCD_BUFFER[7]就是对应这8个点的数据.

这样LCD控制器拿到地址LCD_BUFFER后会以LCD_BUFFER为起始地址取出一个字即4个字节去刷屏幕,这时候它犯难了,

1)到底是这个字的高16位还是低16位是第一个像素???

所以这时候我们得设置HWSWP = 0,即不进行半字交换,这样高16位就表示是第一个像素的,低16位是第二个像素的.这样做的原因是我们的程序是用大端格式编译的,比如0x12345678,在大端格式下就是

B31   B24      B23   B16        B15   B8       B7  B0

    0x12            0x34                0x56            0x78

2)当LCD控制器知道高16位是第一个像素的时候,又犯难了

这16位数据,高8bit和低8bit是怎么安排的,

  RGB16,我们采用的是 565的方式,红色有5bit,绿色6bit,蓝色5bit.

B15  B11    B10    B5    B4  B0

   R                  G           B

也就是没有字节交换,所以要设置BSWP = 0,即字节交换为0.

抱歉!评论已关闭.