请教大家LCD里面的语句
1、rLCDSADDR1=(((U32)LCD_BUFFER>>22)<<21)|M5D((U32)LCD_BUFFER>>1);2、rLCDSADDR2=M5D( ((U32)LCD_BUFFER+(SCR_XSIZE_TFT*LCD_YSIZE_TFT*2))>>1 );
3、rLCDSADDR3=(((SCR_XSIZE_TFT-LCD_XSIZE_TFT)/1)<<11)|(LCD_XSIZE_TFT/1);
第一句:(U32)LCD_BUFFER为什么是右移22位再左移21位?
第三句:=(SCR_XSIZE_TFT-LCD_XSIZE_TFT)/1和LCD_XSIZE_TFT/1为什么要除1,其中暗含什么意义呢?
还有这个地址映射的具体过程是怎样的呢???希望大家能给我解解惑!!! 唉,自顶一下!! 友情顶贴虽然不能回答这个只能靠自己 兄弟我总结的经验
1# fjq 只能自己再看看了!!! 第1句:好像是这样的,系统内存地址A处的Bank位置为图像缓冲,
LCDSADDR1的LCDBANK的值为A,而A=((U32)LCD_BUFFER>>22);
LCDSADDR1的LCDBASEU的值位A,而A=((U32)LCD_BUFFER>>1) &0x1fffff//取低21 bits (M5D)就表示&0x1fffff;
所以,rLCDSADDR1=(LCDBANK)|(LCDBASEU)=(A<<21)|(LCDBASEU)=(((U32)LCD_BUFFER>>22)<<21)|(((U32)LCD_BUFFER>>1) &0x1fffff) ; 第二句中是设置OFFSIZE。是以半字为单位的地址差。
(SCR_XSIZE_TFT-LCD_XSIZE_TFT) 为相差的点数
(SCR_XSIZE_TFT-LCD_XSIZE_TFT) *16为这些点所占的已bit为单位的位数。16代表16bpp
(SCR_XSIZE_TFT-LCD_XSIZE_TFT) *16 /16后面这个16代表16bit因为以半字为单位。
化简为
(SCR_XSIZE_TFT-LCD_XSIZE_TFT)/1
若使用8bpp显示模式,应为
(SCR_XSIZE_TFT-LCD_XSIZE_TFT) *8 /16
化简为
(SCR_XSIZE_TFT-LCD_XSIZE_TFT)/2 多谢liusheng的解答!!:handshake 学习了豁然开朗 现在还是看不懂,先复制保存再说 好贴 :hug:此贴必火。。。 那請問大大~
若是我要用24BPP的話
該要怎麼設置呢
我現在出來的畫面會分成4等分...
盼望各位大大解惑一下~
謝謝
页:
[1]