搜索
bottom↓
回复: 7

求助各位高手:ili9320与S3c2410白屏问题

[复制链接]

出0入0汤圆

发表于 2009-11-5 12:24:28 | 显示全部楼层 |阅读模式
我用s2410连接9320之后是白屏,请各位高手指教问题出在哪里?

硬件连接如下:
s2410             9320显示模块
===================================
gpc4              WR
gpc8              lcd interface mode select 0:16bits 1:8bits
gpc9              CS
gpc11             RD
gpc12             RS
gpc13             Reset
16根数据线接GPDDAT口 56000034

连接后通电,结果是白屏,我用ADS跟踪了内存,在GPCCON相应的56000024的位置的各个管脚变化是正常的。不仅如此,还用电表直接测量LCD模块的WR,CS,RS,Reset引脚的电平变化都是正常的,符合9320的写入信号规程(见下图)。在DB0-15的各个管脚也能量出正确的电平,例如画一条红线(调用函数Lcd_midline(0xF800)),则在LCD模块的DB15-0管脚量出数据为F800, 可这样为什么还是白屏?

/************************************************************************
  **                                                                    **
  ** nCS       ----\__________________________________________/-------  **
  ** RS        ------\____________/-----------------------------------  **
  ** nRD       -------------------------------------------------------  **
  ** nWR       --------\_______/--------\_____/-----------------------  **
  ** DB[0:15]  ---------[index]----------[data]-----------------------  **
  **                                                                    **
  ************************************************************************/


下面是我的函数以及宏定义:

#define LCD_LIM_16 rGPCDAT &= ~(1<<8) //GPC8 is to choose the interface mode. low level means 16bits mode. high means 8bits.

#define LCD_CS_H  rGPCDAT |=  (1<<9) //GPC9 is CS
#define LCD_CS_L  rGPCDAT &= ~(1<<9)

#define LCD_WR_H  rGPCDAT |=  (1<<4) //GPC4 is WR
#define LCD_WR_L  rGPCDAT &= ~(1<<4)

#define LCD_RD_H  rGPCDAT |=  (1<<11) //GPC11 is RD
#define LCD_RD_L  rGPCDAT &= ~(1<<11)

#define LCD_RS_H  rGPCDAT |=  (1<<12) //GPC12 is RS
#define LCD_RS_L  rGPCDAT &= ~(1<<12)

#define LCD_RESET_H  rGPCDAT |=  (1<<13) //GPC13 is reset signal to ili9320
#define LCD_RESET_L  rGPCDAT &= ~(1<<13)

/**************************************************************
320×240 16Bpp TFT LCD数据和控制端口初始化
**************************************************************/
static void Lcd_Port_Init(void)
{
    rGPCUP = 0x0; // enable Pull-up register
    rGPCCON = 0xa565a9aa;

    rGPDUP = 0x0 ; // enable Pull-up register
    rGPDCON=0x55555555; //Initialize GPD
}


9320初始化:
static void Lcd_Init(void)
{

        LCD_LIM_16;   
        LCD_Delay(15);   

        LCD_RESET_H;              
        LCD_Delay(1);
        LCD_RESET_L;
        LCD_Delay(15);  //>1ms
        LCD_RESET_H;
        LCD_Delay(150); //>10ms
   
   
        LCD_SetReg(0xE5,0x8000);
        LCD_SetReg(0x00,0x0001);//开启内部osc
        LCD_Delay(150);                        //延时10毫秒等待晶体稳定      
        LCD_SetReg(0x2B,0x0010);
        LCD_SetReg(0x01,0x0100);//driver output control,SS=1 S极输出移动方向S720到S1.     SM=0 【GS=0】 G极扫描方向从上到下(详细DATASHEET)
        LCD_SetReg(0x02,0x0700);//LCD driving control B/C=1 EOR=1 set the line inversion             
        LCD_SetReg(0x03,0x1230);//DFM=0,TRI=0,SWAP=1,16位system interface 写GRAM时翻转RGB数据到BRG数据   
                                                    //HWM=0,高速GRAM写操作禁止,高速写操作是否是激活RBG或其他动态画面显示模式?AM=0,ID[1.0]=11   AC由左到右又下到上自增                  
        LCD_SetReg(0x04,0x0000);//比例缩放设置   
        LCD_SetReg(0x08,0x0202);                        
        LCD_SetReg(0x09,0x0000);             
        LCD_SetReg(0x0A,0x0000);     
        LCD_SetReg(0x0C,0x0000);//RIM1,RIM0=00,18bit RGB interface(01--16bit). DM1,DM0=00,internal clock (if 10,use RGB clock.moving pics.)   
        LCD_SetReg(0x0D,0x0000);             
        LCD_SetReg(0x0F,0x0000);//RBG 接口极性设置 DOTCLK ENABLE HSYNC           
        LCD_SetReg(0x50,0x0000);//水平 GRAM起始位置                     
        LCD_SetReg(0x51,0x00EF);//水平GRAM终止位置   
        LCD_SetReg(0x52,0x0000);//垂直GRAM起始位置                       
        LCD_SetReg(0x53,0x013F);//垂直GRAM终止位置   
        LCD_SetReg(0x60,0x2700);//G扫描设置 从G1开始   
        LCD_SetReg(0x61,0x0001);//Enables the grayscale inversion of the image by setting REV=1   
        LCD_SetReg(0x6A,0x0000);//不使用卷曲功能   
        LCD_SetReg(0x80,0x0000);            
        LCD_SetReg(0x81,0x0000);             
        LCD_SetReg(0x82,0x0000);             
        LCD_SetReg(0x83,0x0000);             
        LCD_SetReg(0x84,0x0000);             
        LCD_SetReg(0x85,0x0000);             
        LCD_SetReg(0x90,0x0010);             
        LCD_SetReg(0x92,0x0000);             
        LCD_SetReg(0x93,0x0003);             
        LCD_SetReg(0x95,0x0110);             
        LCD_SetReg(0x97,0x0000);             
        LCD_SetReg(0x98,0x0000);   
          
        LCD_SetReg(0x10,0x0000);//power control 1   
        LCD_SetReg(0x11,0x0000);//power control 2   
        LCD_SetReg(0x12,0x0000);//...   
        LCD_SetReg(0x13,0x0000);//power control 4   
        LCD_Delay(2000); //>200ms   
        LCD_SetReg(0x10,0x17B0);   
        LCD_SetReg(0x11,0x0004);   
        LCD_Delay(550); //>50ms   
        LCD_SetReg(0x12,0x013E);   
        LCD_Delay(550); //>50ms   
        LCD_SetReg(0x13,0x1F00);   
        LCD_SetReg(0x29,0x000F);   
        LCD_Delay(550); //>50ms          
        LCD_SetReg(0x20,0x0000);//GRAM水平起始位置   
        LCD_SetReg(0x21,0x0000);   
          
        LCD_SetReg(0x30,0x0204);             
        LCD_SetReg(0x31,0x0001);             
        LCD_SetReg(0x32,0x0000);              
        LCD_SetReg(0x35,0x0206);                        
        LCD_SetReg(0x36,0x0600);             
        LCD_SetReg(0x37,0x0500);                        
        LCD_SetReg(0x38,0x0505);             
        LCD_SetReg(0x39,0x0407);   
        LCD_SetReg(0x3C,0x0500);             
        LCD_SetReg(0x3D,0x0503);   
          
        LCD_SetReg(0x07,0x0173);//display control 1 写入0173是显示当前GRAM内容 写入0073是不显示当前   
}

写寄存器:
//------------------------------------------------------------------
// 函数名  : void LCD_SetReg(INT8U addr,INT16U dat)
// 输入    : addr :寄存器地址 dat :写入的数据
// 输出    : Null
// 全局变量: Null
// 功能描述: 设寄存器值
//------------------------------------------------------------------
void LCD_SetReg(U16 addr,U16 dat)
{
         LCD_CS_L;
         LCD_RS_L;
       
         LCD_WR_L;
      
         LCD_PORT         =addr;

         LCD_WR_H;       
   
         LCD_RS_H;   
         LCD_WR_L;   
   
         LCD_PORT  =dat;
       
         LCD_WR_H;
   
         LCD_CS_H;       
       
}



/**************************************************************
320×240 16Bpp TFT LCD单个象素的显示数据输出
**************************************************************/
static void PutPixel(U32 x,U32 y,U32 color)
{       
         LCD_SetReg(0x20,x);
       
         LCD_SetReg(0x21,y);
       
         LCD_SetReg(0x22,color);

}

static void Lcd_midline(U16 c) //在屏幕中央画一条线
{
        unsigned int x;
          
        for(x = 0 ; x < SCR_XSIZE_TFT_240320 ; x++)
               
              PutPixel(x,160,c);
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2009-11-5 15:57:38 | 显示全部楼层
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=1563849&bbs_page_no=1&search_mode=1&search_text=ILI9325&bbs_id=9999

出0入0汤圆

 楼主| 发表于 2009-11-6 09:27:34 | 显示全部楼层
谢谢楼上的兄弟,可是我看了您给的帖子,那里并不存在我这样的问题啊。我用的程序是在别人那里成功运行了的,为什么在我这里就不行了呢?信号的时序都是符合要求的,为什么白屏呢?

出0入0汤圆

发表于 2009-11-7 21:27:26 | 显示全部楼层
把你的文件以附件的形式贴出来,我帮你看看,绝对是你的程序有问题,我用2410测的是RGB接口,没有问题呀,你用的是MCU接口,与我的有点不同.

出0入0汤圆

 楼主| 发表于 2009-11-9 10:30:34 | 显示全部楼层
感谢楼上两位兄弟的热心帮助。
这是我的程序,现在终于可以显示了,最终是把CS引脚换了一下。程序除CS所处管脚以外基本未改。
点击此处下载 ourdev_501325.rar(文件大小:784K) (原文件名:lcd9320-test.rar)

出0入0汤圆

发表于 2009-11-9 19:27:12 | 显示全部楼层
/cs用哪个脚都一样,程序我看了下,都大同小异,LCD模拟程序都是这样的,只是模拟口有不同,没有发现异常.
  LCD如果有写寄存器指令动作,一定要先写0X22指令,再写显示数据,LCD才会显示.
  调试时你可以在程序中设置断点,查看寄存器的值是否正常,另一方面用示波器看LCM引脚的波形是否正常,这样问题就可以推查到.

出0入0汤圆

发表于 2010-9-14 16:06:38 | 显示全部楼层
试试

出0入0汤圆

发表于 2011-5-10 11:11:38 | 显示全部楼层
这其实还得你自己找原因,因为硬件是你自己手上,不一下下试还真不好找问题在哪
就像我原来一样,我的lcd的数据端口用的是GPIOB(STM32F10x的),而B口上有两根线是用于调试的JTAG线,
上电默认是用于调试的,不能用于普通IO口,
而我一开始没注意,总也不行,也是白屏,弄了一天多时间,总算认真看了一下手册,才发现这个问题,把JTAG禁用,一切OK
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 15:11

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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