天嵌 ARM开发社区

 找回密码
 注册
查看: 3377|回复: 11

请教大家LCD里面的语句

[复制链接]
fjq 发表于 2010-10-8 16:24:56 | 显示全部楼层 |阅读模式
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[30:22]处的Bank位置为图像缓冲,
LCDSADDR1的LCDBANK[29:21]的值为A[30:22],而A[30:22]=((U32)LCD_BUFFER>>22);
LCDSADDR1的LCDBASEU[20:0]的值位A[21:1],而A[21:1]=((U32)LCD_BUFFER>>1) &0x1fffff  //取低21 bits (M5D)就表示&0x1fffff;
所以,rLCDSADDR1=(LCDBANK)|(LCDBASEU)=(A[30:22]<<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等分...
盼望各位大大解惑一下~
謝謝
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-6-2 01:20 , Processed in 1.031250 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表