当前位置:首页 > 单片机 > 单片机
[导读]多功能采集显示平台将通过STM32的FSMC接口来控制TFTLCD的显示,所以本节分为两个部分,分别介绍TFTLCD和FSMC。TFT-LCD即薄膜晶体管液晶显示器。其英文全称为:ThinFilmTransistor-LiquidCrystalDisplay。TFT-LCD与无

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

TFT-LCD即薄膜晶体管液晶显示器。其英文全称为:ThinFilmTransistor-LiquidCrystalDisplay。TFT-LCD与无源TN-LCD、STN-LCD的简单矩阵不同,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。TFT-LCD也被叫做真彩液晶显示器。FSMC(FlexibleStaticMemoryController,可变静态存储控制器)是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,并使能FSMCBank1_SRAMBank

4.TFTLCD硬复位

5.初始化相应TFT的序列

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

TFTLCD接口如下:


初始化函数代码如下:


/**********************管脚配置**********************************************/

voidLCD_guanjiao(void)

{

u16a=1000;

GPIO_InitTypeDefGPIO_InitStructure;

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC,ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE|

RCC_APB2Periph_GPIOF|RCC_APB2Periph_GPIOG,ENABLE);

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

GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_14|

GPIO_Pin_15;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;

GPIO_Init(GPIOD,&GPIO_InitStructure);

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

GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|

GPIO_Pin_15;

GPIO_Init(GPIOE,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;

GPIO_Init(GPIOF,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12;

GPIO_Init(GPIOG,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_Init(GPIOD,&GPIO_InitStructure);

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

while(a--);

GPIO_SetBits(GPIOD,GPIO_Pin_11);

}


/******************************FSMC配置*********************************/

voidLCD_FSMC()

{

FSMC_NORSRAMInitTypeDefFSMC_NORSRAMInitStructure;

FSMC_NORSRAMTimingInitTypeDefp;

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

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

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

p.FSMC_BusTurnAroundDuration=0x00;

p.FSMC_CLKDivision=0x00;

p.FSMC_DataLatency=0x00;

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

FSMC_NORSRAMInitStructure.FSMC_Bank=FSMC_Bank1_NORSRAM4;

FSMC_NORSRAMInitStructure.FSMC_DataAddressMux=FSMC_DataAddressMux_Disable;

//FSMC_NORSRAMInitStructure.FSMC_MemoryType=FSMC_MemoryType_SRAM;

FSMC_NORSRAMInitStructure.FSMC_MemoryType=FSMC_MemoryType_NOR;

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;

FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive=FSMC_WaitSignalActive_BeforeWaitState;

FSMC_NORSRAMInitStructure.FSMC_WriteOperation=FSMC_WriteOperation_Enable;

FSMC_NORSRAMInitStructure.FSMC_WaitSignal=FSMC_WaitSignal_Disable;

FSMC_NORSRAMInitStructure.FSMC_ExtendedMode=FSMC_ExtendedMode_Disable;

FSMC_NORSRAMInitStructure.FSMC_WriteBurst=FSMC_WriteBurst_Disable;

FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct=&p;

FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct=&p;

FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);

/*使能FSMCBank1_SRAMBank*/

FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4,ENABLE);

}


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



关于优化

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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

  引言   根据世界卫生组织公布的数据,全世界目前有3 000多万人目盲,其中约有18%是中国人。针对盲人行动不便的情况,本文介绍了一种基于超声相控阵的盲人避障系统。   本文

关键字: stm32f103 超声相控阵 导盲系统

  随着IPTV和多媒体业务的迅速发展,用户对接入带宽的要求不断增加,目前的铜线接入技术很难满足用户对高带宽、双向传输、及安全性方面的要求。在2010年以前,FTTB是中国主流的FTTx建网模式

关键字: stm32f103 张力传感器

引言 随着互联网技术、无线通信技术以及生物传感器技术的进一步发展,可供病人在医院、家庭等环境中使用的可穿戴健康监测预警系统已成为国内外研究人员关注的热点。 本文设计了一种应用互联

关键字: stm32f103 互联网 脉搏监测

致力于亚太地区市场的领先半导体元器件分销商---大联大控股宣布,其旗下友尚推出基于意法半导体(ST)STM32F103与德州仪器(TI)CC2564的智能车载双模蓝牙方案WLT2564S。该车载

关键字: stm32f103 蓝牙

台湾电子设备协会理事长王作京表示:Micro LED议题在苹果的专研实验室成立,鸿海大举收购eLux力拚Micro LED商业化,技术讨论已正式进入白热化时代。希望藉由电子设备协会平台,开放式讨

关键字: LCD microled tftlcd

2016年8月16日,致力于亚太地区市场的领先半导体元器件分销商---大联大控股宣布,其旗下友尚推出基于意法半导体(ST)STM32F103与德州仪器(TI)CC2564的智能车载双模蓝牙方案W

关键字: cc2564 stm32f103 大联大友尚

在做有AD模块项目的时候遇到几个问题:1, ADC配合DMA采样规则是怎样的。2, ADC在DMA采可否不连续采样,以提高有效采样使用率和降低功耗。3, 如何提高有效利用率和降低功耗,并减少CPU的占用时间。4, ADC...

关键字: adc stm32f103

//代码仅仅是配置使能串口和相应的中断处理函数,具体功能需要自己定义//IAR 7.1#include "stm32_uart.h"uint8_t card_ture=0;uint16_t add_c...

关键字: stm32f103 中断 双串口配置

1、配置STM32F103的SPI口void AD7606_Port_Init(void){GPIO_InitTypeDef GPIO_InitStructure;SPI_InitTypeDef SPI_InitStr...

关键字: stm32f103 模拟信号 ad7606

注意:每个区都有独立的寄存器控制,都有单独的片选引脚,故每个区都可以接不同的外设。

关键字: fsmc STM32 地址块划分
关闭
关闭