STM32f103的TFTLCD和FSMC的使用

2017-09-12 15:29:01来源: eefocus 关键字:STM32f103  TFTLCD  FSMC

多功能采集显示平台将通过 STM32 的 FSMC 接口来控制 TFTLCD 的显示,所以本节分为两个部分,分别介绍 TFTLCD 和 FSMC。

TFT -LCD 即薄膜晶体管液晶显示器。其英文全称为:Thin  Film  Transistor-Liquid Crystal Display。TFT - LCD 与无源 TN - LCD、STN - LCD 的简单矩阵不同,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。TFT -LCD 也被叫做真彩液晶显示器。FSMC ( Flexible Static Memory Controller ,可变静态存储控制器)是STM32系列采用一种新型的存储器扩展技术。在外部存储器扩展方面具有独特的优势,可根据系统的应用需要,方便地进行不同类型大容量静态存储器的扩展。

多功能采集显示平台使用的LCD的驱动芯片是 ILI9325,有一个16位的变址寄存器(IR)、一个18位的写数据寄存器(WDR)和一个18位的读数据寄存器(RDR)。变址寄存器(IR)存储来自控制寄存器和内部的GRAM的指令信息。写数据寄存器(WDR)用来暂时存储要被写到控制寄存器和内部的GRAM中的数据。读数据寄存器(RDR)用来暂时存储从GRAM中读取的数据。MPU中要写入内部GRAM的数据,首先写到写数据寄存器(WDR),然后再又内部操作自动的写到内部的GRAM 中。要读取的数据要通过读数据寄存器(RDR)从内部GRAM 中读取。因此无效数据将被读到数据总线,当ILI9325从内部的GRAM中读取第一个数据的时候,有效数据将在ILI9325进行了第二次读操作之后被读出。同时使用FSMC驱动TFTLCD的显存工作,可以极大地提升LCD的显示效率和刷屏频率。相对于以往使用IO口控制LCD屏幕来说,使用FSMC的优势在于MCU可以将内存的数据通过并行总线直接传送至LCD显存,极大地提高了速度,保证了LCD的显示刷新频率。经过简单测试,使用IO口控制的LCD的刷新频率大概可以达到14帧一秒,使用FSMC的控制的LCD的刷新频率大概可以达到28帧一秒,效率足足提升了100%,这足以使得多功能采集显示平台的显示模块达到显示要求。

TFTLCD 和 FSMC设置的一般步骤可以总结为如下几个步骤:

1.设置 STM32 与 TFTLCD 模块相连接的 IO

2.配置相应IO的功能 

3.并设置FSMC,并使能 FSMC Bank1_SRAM Bank

4.TFTLCD硬复位

5.初始化相应TFT的序列

6.通过函数将需要的图像或者文字显示在TFTLCD上面

TFTLCD接口如下:


初始化函数代码如下:


  1. /**********************管脚配置**********************************************/  

  2. void LCD_guanjiao(void)  

  3. {  

  4.   u16 a=1000;  

  5.   GPIO_InitTypeDef GPIO_InitStructure;  

  6.   

  7.   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);  

  8.   

  9.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE |  

  10.                          RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG ,ENABLE);  

  11.   

  12.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5 |  

  13.                                 GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_14 |   

  14.                                 GPIO_Pin_15;  

  15.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  

  16.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  

  17.   GPIO_Init(GPIOD, &GPIO_InitStructure);  

  18.   

  19.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |   

  20.                                 GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 |   

  21.                                 GPIO_Pin_15;  

  22.   GPIO_Init(GPIOE, &GPIO_InitStructure);  

  23.   

  24.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;  

  25.   GPIO_Init(GPIOF, &GPIO_InitStructure);  

  26.   

  27.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;  

  28.   GPIO_Init(GPIOG, &GPIO_InitStructure);  

  29.   

  30.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;            

  31.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  

  32.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  

  33.   GPIO_Init(GPIOD, &GPIO_InitStructure);  

  34.   

  35.   GPIO_ResetBits(GPIOD, GPIO_Pin_11);  //管脚复位  

  36.   while(a--);  

  37.   GPIO_SetBits(GPIOD, GPIO_Pin_11);  

  38. }  


  1. /******************************FSMC配置*********************************/  

  2. void LCD_FSMC()  

  3. {  

  4.     FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;  

  5.     FSMC_NORSRAMTimingInitTypeDef  p;   

  6.       

  7.       

  8.     p.FSMC_AddressSetupTime = 0x02;  //地址建立时间  

  9.     p.FSMC_AddressHoldTime = 0x00;   //地址保持时间  

  10.     p.FSMC_DataSetupTime = 0x05;         //数据建立时间  

  11.     p.FSMC_BusTurnAroundDuration = 0x00;  

  12.     p.FSMC_CLKDivision = 0x00;  

  13.     p.FSMC_DataLatency = 0x00;  

  14.     p.FSMC_AccessMode = FSMC_AccessMode_B;   // 一般使用模式B来控制LCD  

  15.       

  16.     FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM4;  

  17.     FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;  

  18.     //FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM;  

  19.         FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_NOR;  

  20.     FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;  

  21.     FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;  

  22.     FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;  

  23.     FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;  

  24.     FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;  

  25.     FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;  

  26.     FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;  

  27.     FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;  

  28.     FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;  

  29.     FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;  

  30.     FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;    

  31.       

  32.     FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);   

  33.       

  34.     /* 使能 FSMC Bank1_SRAM Bank */  

  35.     FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4, ENABLE);    

  36. }  


相关代码已上传:http://download.csdn.net/detail/devintt/8925341



关于优化

多功能采集显示平台需要要求每秒刷新屏幕10次,尽管刷新频率较低,但是如果使用先将全屏幕刷白,再通过计算添加不同的界面控件,这样的方法难以保证刷新屏幕的工作正常进行。有了优化显示,所以这里使用了局部刷新的方法,根据需要修改的显示区域进行刷白处理,其余的显示不变。这样

[1] [2]

关键字:STM32f103  TFTLCD  FSMC

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/mcu/article_2017091234386.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM32f103的数电采集电路的ADC多通道采集程序
下一篇:STM32f103的数电采集电路的双ADC的设计与使用

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利
推荐阅读
全部
STM32f103
TFTLCD
FSMC

小广播

独家专题更多

东芝在线展会——芯科技智社会创未来
东芝在线展会——芯科技智社会创未来
2017东芝PCIM在线展会
2017东芝PCIM在线展会
TI车载信息娱乐系统的音视频解决方案
TI车载信息娱乐系统的音视频解决方案
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2017 EEWORLD.com.cn, Inc. All rights reserved