fjq 发表于 2010-10-8 16:24:56

请教大家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,其中暗含什么意义呢?

还有这个地址映射的具体过程是怎样的呢???希望大家能给我解解惑!!!

fjq 发表于 2010-10-11 12:26:01

唉,自顶一下!!

Rain_ning 发表于 2010-10-12 12:42:31

友情顶贴虽然不能回答这个只能靠自己 兄弟我总结的经验
1# fjq

fjq 发表于 2010-10-12 21:32:12

只能自己再看看了!!!

混江龙 发表于 2010-10-12 22:35:17

第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) ;

liusheng 发表于 2010-10-17 14:12:12

第二句中是设置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

fjq 发表于 2010-10-18 09:36:01

多谢liusheng的解答!!:handshake

Rain_ning 发表于 2010-10-18 14:13:24

学习了豁然开朗

fans_run 发表于 2010-12-10 20:39:42

现在还是看不懂,先复制保存再说

machoe 发表于 2010-12-10 20:49:28

好贴

w15778225 发表于 2011-1-17 21:22:40

:hug:此贴必火。。。

zaho 发表于 2011-2-25 18:02:16

那請問大大~
若是我要用24BPP的話
該要怎麼設置呢
我現在出來的畫面會分成4等分...
盼望各位大大解惑一下~
謝謝
页: [1]
查看完整版本: 请教大家LCD里面的语句