别人修改夏普3.5寸TFT的经验

修改24103.5寸显示驱动遇到下半屏无图像的问题?

我在调试2410 TFT显示驱动时遇到一个始终解决不了的问题,即只能正常显示上半部屏幕,下班部分则只是点亮,没有图像。请求各位大侠慷慨帮助:) 5O(U1 *  
我选用了一款夏普的3.5寸的TFT触摸屏:型号为LQ035Q7DH01,电路是自己设计的,原先的2410板接的是6.4寸的TFT屏,所以要自己将wince6.4寸的显示驱动改成3.5寸屏的驱动。 3*T/ 7/  
1
   在修改之前,我将3.5的屏接上灌了6.4寸屏的2410主板,结果整个3.5寸屏显示了6.4寸屏界面的一部分,(左上角的部分),显示的图像正常,屏也不闪,因此我认为我的硬件电路基本正常。 Y

SzC's [  
2
    修改第一步:在原 S 3C 2410 BSP 6.4 寸显示驱动的基础上修改成 3.5 寸的,首先,修改的文件有: ^6gEL~m|]  
PLATFORM/SMDK2410/DRIVERS/DISPLAY/S 3C 2410LCD/s 3c 2410disp.cpp
1+"d-`'Z2O  
红体字为修改后的结果。 Sz:PeUr9h[1]  
1 WORD    TempBuffer[241][320]; TV|Z$, 6l  
S 3C 2410DISP::S 3C 2410DISP (void)
AQTUd(_  
{
­[0 rH/{  
   RETAILMSG(0, (TEXT("++S 3C 2410DISP::S 3C 2410DISP/r/n")));
"$b{EYq6  
   
 3 g :P>(  
   // setup up display mode related constants
/rT>&o .i  
   
m_nScreenWidth = 240;//640 IM1&g7Qs2  
   m_nScreenHeight = 320;//480
   m_colorDepth = 16; cO]w*Hti  
   m_cbScanLineLength = m_nScreenWidth * 2;
:xHKbWz6j  
   m_FrameBufferSize = m_nScreenHeight * m_cbScanLineLength;
zgz!"knVx‑  
   
c$,1j­%[)  
   // memory map register access window, frame buffer, and program LCD controller
@p~s‑cE.#/  
   InitializeHardware();
Xg]Cq"RJC  
2     将原来在 6.4 寸屏驱动里的 0xA0000 改为 0x30000 E 9m u:T  
// map frame buffer into process space memory
M.,DXEZT  
   m_VirtualFrameBuffer = (DWORD)VirtualAlloc(0,
(0x30000 ), MEM_RESERVE, PAGE_NOACCESS); {H(l"KuL  
   if (m_VirtualFrameBuffer == NULL)
*]HnFP  
   {
wH!$TAZ:Yw  
      RETAILMSG(0,(TEXT("m_VirtualFrameBuffer is not allocated/n/r")));
jZ~b/  
       return;
Jq‑MF9|{H  
   }
,  
   else if (!VirtualCopy((PVOID)m_VirtualFrameBuffer, (PVOID)gdwLCDVirtualFrameBase,
(0x30000), PAGE_READWRITE | PAGE_NOCACHE)) ,/v'­%,:C  
­f/O6~I&g  
3
    修改 PLATFORM/SMDK2410/INC/s2410.h b v_ UroTr  
1 #define SCR_XSIZE_TFT     ( 480)//(1280)   //for virtual screen =J]WVA,GqA  
#define SCR_YSIZE_TFT     (
640)//(960) [1]Szus*YL7  
#define LCD_XSIZE_TFT    
(240)//(640)     k ;WD[SV  
#define LCD_YSIZE_TFT     (
320)//(480 ) n3Y   2 dWqn7+:  
#define VBPD          
((1)&0xff)   //((33-1)&0xff) *bkb-n  Kw  
#define VFPD          
((2)&0xff)   //((10-1)&0xff) gcLz­}84  
#define VSPW          
((1)&0x 3f ) JAbUK[:K  
#define HBPD          
((48-1)&0x 7f ) ?^|`A}q#  
#define HFPD          
((16-1)&0xff) Sn CwoxK  
#define HSPW          
((96-1)&0xff) "W<Y1$Y=Y  
#define CLKVAL_TFT      
(7)   // 1 _k84#E0  
7*:zN  
这组寄存器的值是我试出来的,应为这款屏的手册 PDF 需要日文支持,里面的时序图上的数值全是小黑点,所以无法参考数值。 Xr*I`BJ  
js$R^P  
4
、问题现象描述: )e(<YST  
1     只能正常显示上半部分的标准界面,而从屏的中线开始向下就没有图像,光被点亮(正好的屏高度的一半),我用鼠标可以将下部分没显示的桌面图标拖上来,是不是证明虚拟内存是合适的? ]jT}]9Q$  
2     另外上半部分屏显示闪的很厉害,我改了 CLKVAL_TFT 也没发改变 /w 9}O2 lL  
5e s t  
我参阅了论坛很多有关修改显示驱动的文章,开始认为这个问题不是大问题,可花一周还是没有解决,请大侠帮我解惑,真的感激万分!谢谢!我的 E_MAIL: [email protected].

////////////////////////////////////////////

哥们还需要修改下SMDK2410/KERNEL/HAL/cfw.c文件中的InitDisplay函数下面的一些值,加油~~~有什么问题再交流

//////////////////////////////////////

终于搞定了,我下了日文支持包,又再一次研究了屏的PDF,其中时序图能看清楚了,按照上面的参数修改,显示终于正常了。看来VBPD VFPDVSPW HBPD HFPD HSPW 这几个值很关键,大家调屏时要多留意。:)

   http://www.cnemb.com/forum/read.php?tid=19860 

你可能感兴趣的:(别人修改夏普3.5寸TFT的经验)