FSMC驱动TFTLCD原理,时序和寄存器介绍

最新更新时间:2021-12-02来源: eefocus关键字:FSMC  驱动TFTLCD  时序  寄存器 手机看文章 扫描二维码
随时随地手机看文章

一,FSMC简介

FSMC:灵活的静态存储控制器

能够与同步或异步存储器和16位PC存储器卡连接

STM32的FSMC接口支持包括SRAM、NAND FLASH、NOR FLASH和PSRAM等存储器

STM32 407和103是不支持SD RAM的,429,439支持SD RAM操作


二,FSMC驱动LCD原理

FSMC框图

FSMC驱动外部SRAM(LCD被当做SRAM)


SRAM控制包含:

    地址线(如A0~A25)

    数据线(如D0~D15)

    写信号(WE,即WR)

    读信号(OE,即RD)

    片选信号(CS)

    若SRAM支持字节控制,还有UB/LB信号。


上一节提到的TFTLCD信号,RS、D0~D15、WR、RD、CS、RST和BL等


其中真正操作LCD时用到的就只有:

    数据&命令:RS

    数据线:D0~D15

    写信号:WR

    读信号:RD

    片选信号:CS


操作时序和SRAM控制类似,唯一不同是TFTLCD有RS信号,但是没有地址信号


TFTLCD通过RS信号来决定传送是数据还是命令,可以理解为一个地址信号

将RS接到FSMC地址线A10(A0-A25随意),TFTLCD就被当做一个SRAM使用

这样TFTLCD成为只有一个地址的SRAM设备,从而实现FSMC驱动TFTLCD


三,FSMC存储块

STM32的FSMC支持8/16/32位数据宽度,我们使用的LCD为16位,所以设置选择16位

FSMC的外部设备地址映像:STM32的FSMC将外部存储器划分为固定大小为256M字节的四个存储块

FSMC外部设备地址映像

如图:

    FSMC分为4块,每块256M字节又被划分为4*64,即四个片选

    NOR / PSRAM使用块1,共256M

    NAND闪存使用块2,3,共512M

    PC卡使用块4,共256M


所以我们使用NOR PSRAM驱动TFTLCD


四,存储块1(Bank1)寄存器介绍

STM32的FSMC存储块1(Bank1)用于驱动NOR FLASH/SRAM/PSRAM

Bank1被分为4个区,每个区管理64M字节空间,每个区都有独立的寄存器对所连接的存储器进行配置。

Bank1的256M字节空间由28根地址线(HADDR[27:0])寻址。 这里HADDR,是内部AHB地址总线

HADDR[25:0]来自外部存储器地址FSMC_A[25:0],而HADDR[26:27]对4个区进行寻址。


如下图所示:

FSMC-Bank1

说明:

     HADDR[27:26]是不可手动配置的,当选择所在区后会自动赋值


注意:

     1,当Bank1接 8位宽度存储器时:HADDR[25:0] -> FSMC_A[25:0]

     2,当Bank1接16位宽度存储器时:HADDR[25:1] -> FSMC_A[24:0]


        由于内部每个地址对应一个字节,外部设备16位宽,FSMC的一个地址对应两个字节

        即:

             0000对应FSMC_A[0]=0   (2字节)

             0010对应FSMC_A[0]=1   (2字节)

             0100对应FSMC_A[1]=1   (2字节)


        所以对应关系需要除以2,内部右移一位对齐

        此时最低位没用,访问最低位需要使用UB/LB


     不论外部接8位/16位宽设备,FSMC_A[0]永远接在外部设备地址A[0]


五,存储块1(Bank1)模式A读写时序

STM32的FSMC存储块1支持的异步突发访问模式

包括模式1,模式A~D等多种时序模型,驱动SRAM一般使用模式1或模式A

我们使用模式A驱动LCD(当做SRAM使用),模式A支持读写时序分开设置


上一篇说的LCD时序,我们知道,LCD的读写耗时是不同的.写快读慢

这里采用模式A,针对不同的速度,做不同的设置


模式A读时序:

FSMC-模式A读时序

模式A写时序:

FSMC-模式A写时序

ILI9341时序-读写高低电平最小持续时间:

ILI9341时序

根据ILI9341时序读写高低电平最小持续时间来配置模式A的读写时序


六,FSMC相关寄存器介绍

对于NOR FLASH/PSRAM控制器-存储块1,可通过FSMC_BCRx、FSMC_BTRx和FSMC_BWTRx寄存器设置(其中x=1~4,对应4个区)。

通过这3个寄存器,可以设置FSMC访问外部存储器的时序参数,拓宽了可选用的外部存储器的速度范围。


1,SRAM/NOR闪存片选控制寄存器(FSMC_BCRx)

FSMC_BCRx

EXTMOD:

     扩展模式使能位,控制是否允许读写不同的时序,需设置为1

WREN:

     写使能位。我们要向TFTLCD写数据,需设置为1

MWID[1:0]:

     存储器数据总线宽度。00,表示8位数据模式;01表示16位数据模式;10和11保留。

     我们的TFTLCD是16位数据线,需设置WMID[1:0]=01。

MTYP[1:0]:

     存储器类型。00表示SRAM、ROM;01表示PSRAM;10表示NOR FLASH;11保留。

     我们把LCD当成SRAM用,需设置MTYP[1:0]=00。

MBKEN:

     存储块使能位。需设置为1


2,SRAM/NOR闪存片选时序寄存器(FSMC_BTRx)-读时序控制

FSMC_BTRx

ACCMOD[1:0]:

     访问模式。00:模式A;01:模式B;10:模式C;11:模式D。

     我们使用模式A,需设置为00

DATAST[7:0]:

     数据保持时间,等于: DATAST(+1)个HCLK时钟周期,DATAST最大为255。

     对于ILI9341相当于RD低电平持续时间,最大355ns

     对于STM32F1,一个HCLK=13.8ns (1/72M),设置为15,相当于16个HCLK=220.8,加上STM32F1的FSMC性能较低一些,配置为15即可

     对于STM32F4,一个HCLK=6ns(1/168M) ,设置为60(360)。

ADDSET[3:0]:

     地址建立时间。表示:ADDSET+1个HCLK周期,ADDSET最大为15。

     对ILI9341来说,这里相当于RD高电平持续时间,为90ns。

     STM32F1的FSMC性能较低,即便设置为0,RD也有190ns高电平,所以设置为1

     STM32F1设置为15


注意:

     如果未设置EXTMOD位,则读写共用FSMC_BTRx时序寄存器


3,SRAM/NOR闪存写时序寄存器(FSMC_BWTRx)-写时序控制

FSMC_BWTRx

ACCMOD[1:0]:

     访问模式。00:模式A;01:模式B;10:模式C;11:模式D。

DATAST[7:0]:

     数据保持时间,等于: DATAST(+1)个HCLK时钟周期,DATAST最大为255。

     对ILI9341来说,其实就是WR低电平持续时间,为15ns,不过ILI9320等则需要50ns。

     考虑兼容性,对STM32F1一个HCLK=13.8ns (1/72M),设置为3(4*13.8=55.2);

     对STM32F4,一个HCLK=6ns(1/168M) ,设置为9(9*6=54)。

ADDSET[3:0]:

     地址建立时间。表示:ADDSET+1个HCLK周期,ADDSET最大值为1111 = 15。

     对ILI9341来说,这里相当于WR高电平持续时间,为15ns。

     考虑兼容ILI9320,STM32F1即便设置为1,WR也有100ns高电平,所以设置为1。

     而对STM32F4,则设置为8(9*6=54)


七,寄存器组合说明

ST官方库寄存器定义中并没有FSMC_BCRx、FSMC_BTRx、FSMC_BWTRx等单独寄存器

而是将他们进行了一些组合。规律如下:


FSMC_BCRx和FSMC_BTRx,组合成BTCR[8]寄存器组,他们的对应关系如下:


BTCR[0]对应FSMC_BCR1,BTCR[1]对应FSMC_BTR1

BTCR[2]对应FSMC_BCR2,BTCR[3]对应FSMC_BTR2

BTCR[4]对应FSMC_BCR3,BTCR[5]对应FSMC_BTR3

BTCR[6]对应FSMC_BCR4,BTCR[7]对应FSMC_BTR4


FSMC_BWTRx则组合成BWTR[7],他们的对应关系如下:


BWTR[0]对应FSMC_BWTR1,

BWTR[2]对应FSMC_BWTR2,

BWTR[4]对应FSMC_BWTR3,

BWTR[6]对应FSMC_BWTR4,

BWTR[1]、BWTR[3]和BWTR[5]保留


修改记录:

20161212:

修改错别字

添加当Bank1接16位宽度存储器时:HADDR[25:1] -> FSMC_A[24:0]对应关系的进一步解释

添加寄存器FSMC_BTRx为读时序控制,FSMC_BWTRx为写时序控制

关键字:FSMC  驱动TFTLCD  时序  寄存器 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic556238.html

上一篇:意法半导体推出下一代安全微控制器
下一篇:STM32 LED跑马灯-位操作

推荐阅读

stm32专题二十一:FSMC液晶显示和扫描方向
液晶屏连接原理图:其中值得注意的是,LCD_RESET复位引脚和LCD_BL背光,可以选择普通的GPIO来进行控制。而左侧的FSMC数据线,就直接按照编号连接到液晶屏。右侧LCD_CS片选、RD、WE都是FSMC固定占用的,而命令 / 数据线使用的是地址线A16。如果程序跑飞了导致下载器无法下载,先按住复位键,再点下载,然后松开复位键就能下载成功。接下来是代码说明:初始化GPIO和FMSC,这里一个值得注意点地方就是,我们模拟8080时序使用的是FSMC模式B,这其中有一些时序参数。在操作SRAM时,这些参数可以通过SRAM提供的数据手册来得到。而在驱动液晶屏时,因为提供的参数并没有严格对应,需要使用实验测试参数。多测试几组参数
发表于 2021-10-27
stm32专题二十一:<font color='red'>FSMC</font>液晶显示和扫描方向
stm32专题二十一:FSMC模拟8080时序
ILI9341的8080通讯接口时序可以由STM32使用普通 I/O 接口进行模拟,但这样效率太低,STM32 提供了一种特别的控制方法,使用FSMC接口实现8080时序。由于 FSMC 外设可以用于控制扩展的外部存储器,而 MCU 对液晶屏的操作实际上就是把显示数据写入到显存中,与控制SRAM 存储器非常类似,且 8080 接口的通讯时序完全可以使用 FSMC 外设产生,因而非常适合使用 FSMC控制液晶屏。FSMC结构框图:LCD — 液晶显示:NADV引脚是专门拥堵地址 / 数据线复用时做锁存信号,如下。当我们不需要地址 / 数据线复用时,NADV就不用管。NADV由以下寄存器位来配置:液晶屏使用模式B的写操作时序:模式B读
发表于 2021-10-27
stm32专题二十一:<font color='red'>FSMC</font>模拟8080时序
stm32专题二十:FSMC结构体分析
FSMC结构体:控制FSMC使用SRAM存储器时主要是配置时序寄存器以及控制寄存器,利用ST标准库的SRAM时序结构体以及初始化结构体可以很方便地写入参数。时序结构体配置:SRAM初始化结构体配置:硬件连接:操作的时候,就直接进行指针操作,向相应的地址写入和读出就行了,非常简单。sram.c#include "./sram/sram.h"   /**  * @brief  初始化控制SRAM的IO  * @param  无  * @retval 无  */static void SRAM_GPIO_Config(void
发表于 2021-10-26
stm32专题二十:<font color='red'>FSMC</font>结构体分析
stm32专题二十:FSMC
STM32F1 系列芯片使用 FSMC 外设来管理扩展的存储器,FSMC 是 Flexible Static Memory Controller 的缩写,译为灵活的静态存储控制器。它可以用于驱动包括 SRAM、NOR FLASH 以及 NAND FLSAH 类型的存储器,不能驱动如 SDRAM这种动态的存储器而在 STM32F429 系列的控制器中,它具有 FMC 外设,支持控制 SDRAM存储器。中文参考手册对FSMC的描述:接下来是FSMC的结构框图:在框图的右侧是 FSMC 外设相关的控制引脚,由于控制不同类型存储器的时候会有一些不同的引脚,看起来有非常多,其中地址线 FSMC_A和数据线 FSMC_D是所有控制器都共用
发表于 2021-10-26
stm32专题二十:<font color='red'>FSMC</font>
STM32CubeMX | 35-使用硬件FSMC驱动TFT-LCD屏幕
本篇详细的记录了如何使用STM32CubeMX配置 STM32f407ZGT6 的硬件FSMC外设驱动TFT-LCD屏幕。1. 准备工作硬件准备开发板首先需要准备一个开发板,这里我准备的是STM32F407ZGT6的开发板。TFT-LCD开发板底板接正点原子4.3寸TFT-LCD。2. STM32 FSMC外设概述2.1. 什么是FSMCFSMC全称 Flexible static memory controller,灵活的静态内存控制器,顾名思义,其主要作用是:负责向外部扩展的存储类设备提供控制信号。FSMC内存控制器支持的存储设备有:Nor Flash、SRAM、PSRAMNand Flash类SRAM设备2.2. FSMC
发表于 2021-07-26
STM32CubeMX | 35-使用硬件<font color='red'>FSMC</font>驱动TFT-LCD屏幕
STM32 TFTLCD原理与驱动与指令介绍
一,TFTLCD简介TFTLCD : 薄膜晶体管液晶显示器在液晶显示屏的每一个像素上都设置有一个薄膜晶体管(TFT)克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,提高图像质量TFTLCD优点:亮度好,对比度高,层次感强,颜色鲜艳,是目前最主流的LCD显示器广泛用于电视,手机,电脑,平板等各种的电子产品二,ALINETEK 2.8寸 TFTLCD模块介绍240*320分辨率16位真彩显示(65536色)自带电阻触摸屏自带背光电路三,ALINETEK 2.8寸 TFTLCD模块原理图1,2.8寸LCD引脚2,TFTLCD 为对外接口,引出2*17排针3,电阻触摸屏驱动XPT20464,触摸屏信号控制TFT2.8 12-15
发表于 2021-12-01
STM32 <font color='red'>TFTLCD</font>原理与<font color='red'>驱动</font>与指令介绍
小广播
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved