FSMC提供了所有的LCD控制器的信号:
FSMC_D[16:0] 16bit的数据总线
FSMC NEx:分配给NOR的256M,再分为4个区,每个区用来分配一个外设,这四个外设的片选分为是NE1-NE4,对应的引脚为:PD7—NE1,PG9—NE2,PG10-NE3,PG12—NE4。连LCD的片选。
FSMC NOE:输出使能,连接LCD的RD脚。
FSMC NWE:写使能,连接LCD的RW脚。
FSMC Ax:用在LCD显示RAM和寄存器之间进行选择的地址线,即该线用于选择LCD的RS脚,该线可用地址线的任意一根线,范围:FSMC_A[25:0]。
注:RS = 0时,表示读写寄存器;RS = 1表示读写数据RAM。

一,FSMC简介

本文引用地址:http://www.eepw.com.cn/article/201801/374605.htm

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

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

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

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

  二,FSMC驱动LCD原理

  

  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分为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个区进行寻址。

  如下图所示:

  说明:

  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读时序:

  模式A写时序:

  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]保留

FSMC知识详解,以及驱动TFTLCD原理相关推荐

  1. 详解Linux-I2C驱动(硬件原理\驱动分析\测试)

    目录 一.LinuxI2C驱动--概述 1.1 写在前面 1.2 I2C 1.3 硬件 1.4 软件 1.5 参考 二.LinuxI2C驱动--I2C总线 2.1 I2C总线物理结构 2.2 I2C总 ...

  2. 汇川小型PLC梯形图编程系列教程(七):数值存储与二进制数据知识详解

    原文链接:汇川小型PLC梯形图编程系列教程(七):数值存储与二进制数据知识详解 PLC数据存储原理简介 H123U小型PLC内部采用的是32位的处理器,PLC中的数据处理和电脑中的数据处理基本是一致的 ...

  3. 网络知识详解之:HTTPS通信原理剖析(对称、非对称加密、数字签名、数字证书)

    网络知识详解之:HTTPS通信原理剖析(对称.非对称加密.数字签名.数字证书) 计算机网络相关知识体系详解 网络知识详解之:TCP连接原理详解 网络知识详解之:HTTP协议基础 网络知识详解之:HTT ...

  4. 计算机网络知识详解之:TCP连接原理详解

    网络知识详解之:TCP连接原理详解 计算机网络相关知识体系详解 网络知识详解之:TCP连接原理详解 网络知识详解之:HTTP协议基础 网络知识详解之:HTTPS通信原理剖析(对称.非对称加密.数字签名 ...

  5. 【转】什么是场效应管(FET)-场效应管(FET)分类、原理、用途等知识详解

    什么是场效应管(FET)-场效应管(FET)分类.原理.用途等知识详解 场效应管和双极晶体管不同,它属于仅以电子或空穴中的一种载子动作的晶体管.按照结构.原理可以分为:1.接合型场效应管 2.MOS型 ...

  6. python 快速排序_小白入门知识详解:Python实现快速排序的方法(含实例代码)...

    前言: 今天为大家带来的内容是:小白入门知识详解:Python实现快速排序的方法(含实例代码)希望通过本文的内容能够对各位有所帮助,喜欢的话记得点赞转发收藏不迷路哦!!! 提示: 这篇文章主要介绍了P ...

  7. 最全 VxLAN 知识详解

    什么是VXLAN VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网),是由IETF定义的NVO3(Network Virtualization o ...

  8. 网络知识详解之:网络攻击与安全防护

    网络知识详解之:网络攻击与安全防护 计算机网络相关知识体系详解 网络知识详解之:TCP连接原理详解 网络知识详解之:HTTP协议基础 网络知识详解之:HTTPS通信原理剖析(对称.非对称加密.数字签名 ...

  9. fdct算法 java_ImageSharp源码详解之JPEG压缩原理(3)DCT变换

    DCT变换可谓是JPEG编码原理里面数学难度最高的一环,我也是因为DCT变换的算法才对JPEG编码感兴趣(真是不自量力).这一章我就把我对DCT的研究心得体会分享出来,希望各位大神也不吝赐教. 1.离 ...

最新文章

  1. ubuntu开机启动管理
  2. OpenCV reshape函数需要注意的细节
  3. 如何选择IDC服务器托管服务商
  4. Google 机器学习应用的43条经验法则
  5. 物联网卡网速被限制如何解除
  6. 快速乘 防爆乘 快速幂
  7. GNU make manual 翻译( 一百四十)
  8. 中国农业银行总行西安成都软件开发中心笔试面试流程
  9. 华为 USG6000防火墙管理员密码重置(配置会清空)
  10. Python数据分析第四课:数据的处理(数据合并、数据筛选、数据排序)
  11. 计算机应用基础网课作业答案,知到网课答案计算机应用基础(新)全部答案
  12. #华为云在HC2018#华为云学院
  13. 由ip地址和子网掩码求网络号、主机号、广播地址(超详细)
  14. pr-pr与au联动
  15. 试题 C: 数列求值
  16. antd vue 树更新数据后不展开_Vue 性能优化 - 去除 VNode
  17. 介绍芯片时为什么都要介绍制程?制程到底是什么?14nm、10nm?
  18. MPI 易懂笔记
  19. 一个程序员的工作总结
  20. 虚拟产品之苹果内购支付/支付宝支付/微信支付的区别

热门文章

  1. JAVA从入门到入土(引入篇)
  2. easy excel date 类型解析报错_Excel神具EasyExcel,常见API
  3. iqooneo3 如何不用vivo账号下载外部应用_不怕卡还不怕偷窥 iQOO Neo3这几个功能赶紧学起来!...
  4. 蒸压加气混凝土砌块荷载系数1.4取值依据
  5. 贪吃蛇代码和基本图像资源(狂神)
  6. ActUP v2.2 水声软件图文教程
  7. java测试生成中征码(包含字母、数字)
  8. 帝国的余辉(ATT)(二)
  9. 迅雷创始人程浩写了篇5万+的文章,告诫你创业AI前,必须注意的6大核心问题
  10. 超导量子计算机速度多快,中国科学家实现 “量子霸权”,计算速度比超级计算机快100万亿倍...