OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3623|回复: 5

关于103VET6 驱动ili9320TFT的问题 弄了一天 要爆炸的感觉

[复制链接]

11

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-6-8
在线时间
0 小时
发表于 2015-8-1 00:27:35 | 显示全部楼层 |阅读模式
5金钱
首先,关于fsmc  bank区我大概知道程序里怎么写 取决与你的四根线怎么接 RS RD WR CS;
 先说说我的 吧。 stm32f103vet6    CSD7 ---NE1      RSD11---A16   WRD5---NEW   RDD4---NOE   在定义内部基地址的时候,设定这样     
#define LCD_REG  *((volatile u16 *)0x64020000)
  
#define LCD_RAM  *((volatile u16 *)0X64000000)

初始化FSMC的函数为、

  FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;
        FSMC_NORSRAMTimingInitTypeDef  p;
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);

        FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;
        FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;        
        FSMC_NORSRAMStructInit(&FSMC_NORSRAMInitStructure);
        
        /* FSMC_Bank1_NORSRAM1 timing configuration */
        p.FSMC_AddressSetupTime = 0;                                        /*地址建立时间期限*/                                                                                         
        p.FSMC_AddressHoldTime = 0;                                        /*地址的持续时间*/
        p.FSMC_DataSetupTime = 2;                                        /*设定数据时间期限*/
        p.FSMC_BusTurnAroundDuration = 0;                        /*总线转向时间*/
        p.FSMC_CLKDivision = 0;                                                /*CLK时钟输出信号的HCLK周期数表示时间???*/
        p.FSMC_DataLatency = 0;                                                /*指定在获得第一个数据前的时钟周期*/
        p.FSMC_AccessMode = FSMC_AccessMode_A;

        FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM2;                                                /*指定的FSMC块*/
        FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;                 /*地址和数据值不复用的数据总线*/                                                                                 
        FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM;                                /*外部存储器的类型*/
        FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;                /*数据宽度*/
        FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;        /*禁用突发访问模式*/
        FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;/*指定等待信号的极性*/
        FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;                                /*Enables or disables the Wrapped burst access mode for Flash*/
        FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
        FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;                /*启用指定的FSMC块的写操作*/
        FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
        FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Enable;                /*扩展模式*/
        FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;                        /*禁用写突发操作*/
        FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;
        FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;          


        FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); 

        /* Enable FSMC Bank1_SRAM Bank */
        FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM2, ENABLE); 

最佳答案

查看完整内容[请看2#楼]

哈哈 ,终于解决了。 还是 基地址设置的问题。 现在的问题是  字符和文字是镜像的,我的是ili9328 怎么改初始化函数啊 LCD_WriteReg(0x00e7,0x0010);               LCD_WriteReg(0x0000,0x0001);   //start internal osc         LCD_WriteReg(0x000 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-6-8
在线时间
0 小时
 楼主| 发表于 2015-8-1 00:27:36 | 显示全部楼层
哈哈 ,终于解决了。 还是 基地址设置的问题。 现在的问题是  字符和文字是镜像的,我的是ili9328 怎么改初始化函数啊
LCD_WriteReg(0x00e7,0x0010);      
        LCD_WriteReg(0x0000,0x0001);   //start internal osc
        LCD_WriteReg(0x0001,0x0100);     
        LCD_WriteReg(0x0002,0x0700);  //power on sequence                     
        LCD_WriteReg(0x0003,(1<<12)|(1<<3));  //65K 
        LCD_WriteReg(0x0004,0x0000);                                   
        LCD_WriteReg(0x0008,0x0207);            
        LCD_WriteReg(0x0009,0x0000);         
        LCD_WriteReg(0x000a,0x0000);  //display setting         
        LCD_WriteReg(0x000c,0x0001); //display setting          
        LCD_WriteReg(0x000d,0x0000);  //0f3c          
        LCD_WriteReg(0x000f,0x0000);
//Power On sequence //
        LCD_WriteReg(0x0010,0x0000);   
        LCD_WriteReg(0x0011,0x0007);
        LCD_WriteReg(0x0012,0x0000);                                                                 
        LCD_WriteReg(0x0013,0x0000);                 
        for(i=50000;i>0;i--);
for(i=50000;i>0;i--);
        LCD_WriteReg(0x0010,0x1590);   
        LCD_WriteReg(0x0011,0x0227);
        for(i=50000;i>0;i--);
for(i=50000;i>0;i--);
        LCD_WriteReg(0x0012,0x009c);                  
        for(i=50000;i>0;i--);
for(i=50000;i>0;i--);
        LCD_WriteReg(0x0013,0x1900);   
        LCD_WriteReg(0x0029,0x0023);
        LCD_WriteReg(0x002b,0x000e);
        for(i=50000;i>0;i--);
for(i=50000;i>0;i--);
        LCD_WriteReg(0x0020,0x0000);                                                            
        LCD_WriteReg(0x0021,0x0000);           
///////////////////////////////////////////////////////      
        for(i=50000;i>0;i--);
for(i=50000;i>0;i--);
        LCD_WriteReg(0x0030,0x0007); 
        LCD_WriteReg(0x0031,0x0707);   
        LCD_WriteReg(0x0032,0x0006);
        LCD_WriteReg(0x0035,0x0704);
        LCD_WriteReg(0x0036,0x1f04); 
        LCD_WriteReg(0x0037,0x0004);
        LCD_WriteReg(0x0038,0x0000);        
        LCD_WriteReg(0x0039,0x0706);     
        LCD_WriteReg(0x003c,0x0701);
        LCD_WriteReg(0x003d,0x000f);
        for(i=50000;i>0;i--);
for(i=50000;i>0;i--);
        LCD_WriteReg(0x0050,0x0000);        
        LCD_WriteReg(0x0051,0x00ef);   
        LCD_WriteReg(0x0052,0x0000);     
        LCD_WriteReg(0x0053,0x013f);
        LCD_WriteReg(0x0060,0xa700);        
        LCD_WriteReg(0x0061,0x0001); 
        LCD_WriteReg(0x006a,0x0000);
        LCD_WriteReg(0x0080,0x0000);
        LCD_WriteReg(0x0081,0x0000);
        LCD_WriteReg(0x0082,0x0000);
        LCD_WriteReg(0x0083,0x0000);
        LCD_WriteReg(0x0084,0x0000);
        LCD_WriteReg(0x0085,0x0000);
      
        LCD_WriteReg(0x0090,0x0010);     
        LCD_WriteReg(0x0092,0x0000);  
        LCD_WriteReg(0x0093,0x0003);
        LCD_WriteReg(0x0095,0x0110);
        LCD_WriteReg(0x0097,0x0000);        
        LCD_WriteReg(0x0098,0x0000);  
         //display on sequence     
        LCD_WriteReg(0x0007,0x0133);
    
        LCD_WriteReg(0x0020,0x0000);                                                            
        LCD_WriteReg(0x0021,0x0000);
回复

使用道具 举报

11

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-6-8
在线时间
0 小时
 楼主| 发表于 2015-8-1 00:31:14 | 显示全部楼层
但问题是 TFT根本没什么反应  而且 如果fsmc初始化里的FSMC_Bank1_NORSRAM2改成FSMC_Bank1_NORSRAM1/3/4,程序就卡住,连while(1)都进不去。。测试的主函数为

  ili9320_Initializtion();  //TFT LCD彩色液晶屏初始化
ili9320_Clear(0x0645);
ili9320_PutChar(100,100,'a',Green,Blue);
  while (1) 
{
GPIO_ResetBits(GPIOA,GPIO_Pin_5);
Delay(200);
GPIO_SetBits(GPIOA,GPIO_Pin_5);
Delay(200);


   }
去网上看了好多别人调试过程 众说纷纭,试了很多,还是没有用,一个外部存储管理总线  怎么这么难用!!!
回复

使用道具 举报

11

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-6-8
在线时间
0 小时
 楼主| 发表于 2015-8-1 00:35:48 | 显示全部楼层
问题可能还是处在fsmc初始化函数里  和那个基地址的定义。   唉,,实在是不知从何下手了,求助啊 各位大神哥哥们
回复

使用道具 举报

11

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-6-8
在线时间
0 小时
 楼主| 发表于 2015-8-1 00:36:48 | 显示全部楼层
咦~~~ 突然发现是今天的第一张贴 呵呵
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5141
金钱
5141
注册时间
2014-8-26
在线时间
1317 小时
发表于 2015-8-1 10:35:11 | 显示全部楼层
我们的代码是支持9320的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 04:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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