当前位置: 首页 > 新闻中心 > 集团新闻

米乐体育活动

NEWS
×

米乐体育活动

米乐体育活动:TFTLCD之FSMC详解

发布时间:2022-10-02 06:56:37 来源:米乐体育在线下载 作者:米乐体育app官方版下载

  1~21号IO口用于LCD控制器,23号IO口用于LCD的背光控制,这样LCD的显示总共需要22个IO口。但是,电源和地线我们千万不要忽略,模块需要双电源供电:5V和3.3V才可以正常工作,5V电源用于背光供电,3.3V用于除背光外的其他电源部分供电。

  NT35510支持多种时序读写操作,我们这里使用的是8080并口操作,读/写时序如下:

  FSMC,即灵活的静态存储控制器,能够与同步或异步存储器和16位PC存储器卡连接,STM32的FSMC接口支持包括SRAM、NANDFLASH、NORFLASH和PSRAM等存储器。FSMC的框图如图18.1.2.1所示:

  从上图我们可以看出,STM32的FSMC将外部设备分为3类:NOR/PSRAM设备、NAND设备、PC卡设备。他们共用地址数据总线等信号,他们具有不同的CS以区分不同的设备,比如本章我们用到的TFTLCD就是用的FSMC_NE4做片选,其实就是将TFTLCD当成SRAM来控制。

  这里我们介绍下为什么可以把TFTLCD当成SRAM设备用:首先我们了解下外部SRAM

  的连接,外部SRAM的控制一般有:地址线)、数据线)、写信号(WE)、读信号(OE)、片选信号(CS),如果SRAM支持字节控制,那么还有UB/LB信号。而TFTLCD的信号我们在18.1.1节有介绍,包括:RS、D0~D15、WR、RD、CS、RST和BL等,其中真正在操作LCD的时候需要用到的就只有:RS、D0~D15、WR、RD和CS。其操作时序和SRAM的控制完全类似,唯一不同就是TFTLCD有RS信号,但是没有地址信号。

  FSMC听起来很高大上,其实FSMC就是一个MCU与外部存储器(SRAM,FLASH等)读写数据的一个接口,我们可以配置FSMC的寄存器从而实现MCU可以根据特定的时序与外部存储器进行数据的交互(存储/读取)。有人会疑问:TFTLCD又不是存储器不具备存储功能但是却可以与MCU通过读写时序交互信息?

  TFTLCD确实不是SRAM这样的数据存储器,不具备数据存储功能,但是FSMC的扩展功能就在于此,TFTLCD的读写时序和SRAM大致一样,因此我们使用FSMC去充当MCU与TFTLCD的沟通桥梁。不止TFTLCD是这样,其他的具有和FSMC支持的存储器相同/类似时序的设备都通过FSMC与MCU建立起数据沟通的桥梁。

  FSMC是沟通CPU与外部存储器之间的桥梁。FSMC在CPU内存中的映射地址如下所示:

  我们可以好好地品味上图的含义,FSMC一个块有64M的存储空间,存储空间里存储的是数据吗?不是的,存储的是外设地址,当我们在存储块中的访问单元序号+1,对应的外设存储单元的访问地址就自加8(如果外设数据存储的数据宽度为8b的话)。由此,我们可以得到当输出长度为8b时,FSMC与外部SRAM的地址映射关系:

  既然明白了CPU和外部SRAM之间的地址映射关系,那么就拿STM32读写外部SRAM为例说明FSMC的功能:

  FSMC是一个数据管理设备负责变量的读取和发送,既然是管理设备那就应该将被管理的对象纳入自己的势力范围之中,即将被托管的变量定义在自己在内存中的地址映像之中。

  FSMC作为CPU与外部SRAM沟通的桥梁,那就得说他们两个人都认识的话——读写时序,两者沟通关系如下所示:

  3. 对变量进行读写操作时,FSMC会进行在CPU和SRAM外部存储器之间进行如下操作:

  首先,对FSMC管理的变量Var进行读写就会引起FSMC产生读取SRAM中数据的时序,引发对SRAM的读写操作。

  读写控制是FSMC自动控制的,你向指定地址写数据(如*(uint32_t*)0x6C000080=var),FSMC会自动控制相应的引脚(CS、RS、RD、WR等)发送写数据时序,读也是一样的。

  因此,如果是读LCD,则使用的一定是LDR指令(LoadRegister);而写LCD,则使用的是STR指令(StoreRegister)。这是由于不同的指令会对应不同的总线访问时序。

  从上面可以得出结论,只要是访问一个存储单元并且写入数据(将变量的值赋值给存储单元),那么FSMC就会控制CS、RS、RD、WR等对这个存储单元进行写操作;我们访问一个存储单元并进行读操作(把存储单元的数据读出来并赋值给变量),那么FSMC就会控制CS、RS、RD、WR等对这个存储单元执行读操作。

  像这种地址线和数据线分开的数据存储器,一般的向数据存储器写数据的时序如下所示:

  我们前面说过FSMC进行读写操作的原理,但是当我们读FSMC中的地址映射单元时,FSMC会输出如下图所示的读时序:

  这并不是8080时序,而且我们疑问的是TFTLCD中只有地址线],而没有RS信号来决定收发数据还是收发命令。这就很懵了,RS的0/1分别代表着命令/数据,但是我上哪里找0/1呢?此时换位思考一下,惊奇的发现地址线]可以帮到我们:

  假设TFTLCD只有两个寄存器:数据操作寄存器/命令操作寄存器。当TFTLCD收到寄存器地址”addr=1“时,此时命令操作寄存器响应;同理,当TFTLCD收到寄存器地址“addr=0”时,此时数据操作寄存器响应。以上一波操作就可以把FSMC读写SRAM的时序神奇地转化为8080读写时序了。

  我们将A[10]作为RS引脚用于控制TFTLCD是操作命令还是操作数据。如何使得TFTLCD操作数据时A[10]=1,操作命令时A[10]=0是关键:

  我们将这个地址强制转换为LCD_TypeDef结构体地址,那么可以得到LCD->

  LCD_REG的

  0X6C00,0800(结构体地址自增),对应A[10]的状态为1(即RS=1),从而实现对RS的控

  STM32的FSMC支持8/16/32位数据宽度,我们这里用到的LCD是16位宽度的,所以在设置的时候,选择16位宽就OK了。我们再来看看FSMC的外部设备地址映像,STM32的FSMC将外部存储器划分为固定大小为256M字节的四个存储块:

  从上图可以看出,FSMC总共管理1GB空间,拥有4个存储块(Bank),本章,我们用到的是块1,所以在本章我们仅讨论块1的相关配置。

  STM32的FSMC存储块1(Bank1)被分为4个区,每个区管理64M字节空间,每个区都有独立的寄存器对所连接的存储器进行配置。Bank1的256M字节空间由28根地址线])寻址。

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

  这里,TFTLCD使用的是16位数据宽度,所以HADDR[0]并没有用到,只有HADDR[25:1]是有效的,对应关系变为:HADDR[25:1]→FSMC_A[24:0],相当于右移了一位,这里请大家特别留意。另外,HADDR[27:26]的设置,是不需要我们干预的,即当我们设置了片选HADDR[27:26]自动被设置为相应的数值。比如:当你选择使用Bank1的第三个区,即使用FSMC_NE3来连接外部设备的时候,即对应了HADDR[27:26]=10,我们要做的就是配置对应第3区的寄存器组,来适应外部设备即可。

  其实,我们看到一个Bank存储块中又有4个子块,我们称之为扇区(Sector),它的配置不是通过片选而是通过配置寄存器实现,Bank1的寄存器一共有12个(BCKx,BTKx,BWTKx,x=1,2,3,4)。

  从上表可以看出,FSMC最大访问的存储器位数就是512M,例如Bank1的第1区的寻址范围是0X60000000~0X63FFFFFF,对应的外部存储器的地址为0~0X03FFFFFF,即我们可以访问的位的地址从0~512M。

  此时,我们可以用FSMC一个数据存储块最大管理的位数反推FSMC地址映射范围,可得如下结果:

  HADDR的[25:0]位所表示的地址为0~64M,但是当数据长度为16b时,需要访问的地址为0~32M,因此HADDR中只用到了25位。当数据长度为16b时,HADDR的有效位为[25:1]而且外部存储器的地址线开始寻址,因此要求HADDR向低位偏移一位,如下图所示:

  当数据长度为16b时,FSMC中的地址映射仍是一个地址寻址一个字节的数据,但是FSMC地址自增就变了,变成了每次自加2,而非原来的自加1,16b的地址映射关系如下:

  位带操作,乍一听名字,也很高大上。但是位带操作实质上就是一个寻址的手段而已。在我们做一件事情时,总喜欢先顶层规划,然后再细分各个工作流程。C语言中常用的寻址方式就是位带操作,我们再C语言中访问一个结构体变量元素的地址,一般常常确定这个结构体变量的地址,再根据结构体中的元素相对于结构体首地址的偏移量确定其具置,并且访问该地址的信息。

  0x6C000000代表的是FSMC中的Bank1的基地址,而0x000007FE代表的是Bank1的存储块1相对于Bank1的地址偏移量。这样操作就使得LCD_BASE代表FSMC中Bank1的存储块1的地址,然后我们使用强制类型转换,就在LCD_BASE地址上建立了一个结构体变量LCD,其内存分布如下所示:

  存器设置(其中x=1~4,对应4个区)。通过这3个寄存器,可以设置FSMC访问外部存储器的时序参数,拓宽了可选用的外部存储器的速度范围。FSMC的NORFLASH控制器支持同步和异步突发两种访问方式。这里,TFTLCD使用的是异步突发访问模式。

  对于异步突发访问方式,FSMC主要设置3个时间参数:地址建立时间(ADDSET)、数据建立时间(DATAST)和地址保持时间(ADDHLD)。FSMC综合了SRAM/ROM、PSRAM和NORFlash产品的信号特点,定义了4种不同的异步时序模型。选用不同的时序模型时,需要设置不同的时序参数:

  我们这里读写的时序是SRAM,因此我们可以选用模式1/模式A。但是,我们知道TFTLCD的写速度要快于读速度,因此我们分别配置读写速度——模式A。模式A与模式1的最大区别在于:模式1中读写速度一样,模式A中读写速度不同。

  模式A支持独立的读写时序控制,这个对我们驱动TFTLCD来说非常有用,因为TFTLCD在读的时候,一般比较慢,而在写的时候可以比较快,如果读写用一样的时序,那么只能以读的时序为基准,从而导致写的速度变慢,或者在读数据的时候,重新配置FSMC的延时,在读操作完成的时候,再配置回写的时序,这样虽然也不会降低写的速度,但是频繁配置,比较麻烦。而如果有独立的读写时序控制,那么我们只要初始化的时候配置好,之后就不用再配置,既可以满足速度要求,又不需要频繁改配置。

  在模式A中,我们无非关注两个参数:地址建立时间(ADDSET)、数据建立时间(DATAST)。

  首先,我们先要知道什么是建立时间:建立时间(Tsu:setuptime)是指在时钟沿到来之前数据从不稳定到稳定所需的时间,如果建立的时间不满足要求那么数据将不能在这个时钟上升沿被稳定的打入触发器。

  地址建立的含义:在读取数据之前一定要识别到A[25:0]地址线中的稳定地址信号,这样我们才能进行读写操作。

  RDX和WRX均为无效电平的这段时间不是无效时间,适用于A[25:0]建立稳定的地址信号的时间,因为在读写数据之前,必须要通过地址线建立稳定的联系才行。

  首先,我们要清楚何为保持时间:保持时间(Th:holdtime)是指数据稳定后保持的时间,如果保持时间不满足要求那么数据同样也不能被稳定的打入触发器。

  数据所存的含义:NT35510芯片可以识别稳定的数据。为了我们识别到稳定可靠的数据,数据保持时间必须大于RDX低电平持续时间,即RDX的上升沿必须出现在地址保持时间之内。

  注意:最后的2HCLK是用于存储器将读取到的数据存入锁存器(即保存数据)用的。

  要确定ADDSET和DATAST就必须参考“芯片NT35510的读写时序”,如下所示:

  因此,ADDSET最小为250ns/HCLK,DATAST最小为150ns/HCLK,其中,FSMC接在AHB总线上,由HCLK驱动,因此单位周期为HCLK,ADDSET代表着地址线上的地址建立所需的单位周期数量(记得向正无穷取整),DATAST代表着数据线上数据保持的单位周期数量(记得向正无穷取整)。

  但是,为了兼容其它型号的屏幕驱动芯片以及STM32F10x系列的缺陷,正点原子例程中ADDSET和DATAST设置如下:

  由于STM32F103FSMC的性能问题,就算设置ADDSET为0,RD的高电平持续时间也达到了190ns以上,所有,我们这里可以设置ADDSET为较小的值,本章我们设置ADDSET为1,即2个HCLK周期,实际RD高电平大于200ns。

  为了兼容其他屏,我们这里设置DATAST为15,也就是15+1=16个HCLK周期,时间大约是234ns。

  对NT35510来说,这两个时间只需要15ns就够了,比读操作快得多。所以我们这里设置DATAST为3,即4个HCLK周期,时间约为55ns(因为9320等控制器,这个时间要求比较长,要50ns)。然后ADDSET(也存在性能问题)设置为0,即1个HCLK周期,实际WR高电平时间大于100ns。

  扩展模式使能位,也就是是否允许读写不同的时序,很明显,我们本章需要读 写不同的时序,故该位需要设置为 1。

  扩展模式使能位,也就是是否允许读写不同的时序,很明显,我们本章需要读 写不同的时序,故该位需要设置为 1。

  这个容易理解,我们需要用到该存储块控制 TFTLCD,当然要 使能这个存储块了。

  由于我们配置了扩展模式位使能,因此FSMC对SRAM的读写速度不同,FSMC_BTRx代表着存储块x的读时序。如果扩展模式位失能呢个,则读写时序的配置均有该寄存器完成。

  00 表示访问模式 A;01 表示访问模式 B;10 表示访问模式 C; 11 表示访问模式 D,本章我们用到模式 A,故设置为 00。

  由于我们配置了扩展模式位使能,因此FSMC对SRAM的读写速度不同,FSMC_BWTRx代表着存储块x的写时序。

  **本文使用环境:电脑:WIN10开发板:W80X (w806 w801 w800 air101 air 103)平台:CDK显示屏:openmv 1.8英寸SPI显示屏128X160(st7735r ,程序兼容st7735s)显示屏资料:(128RMB,为什么会这么贵,搞不清楚)**本项目github地址一、显示接口连接1、显示屏接口:典型的SPI接口2、开发板接口自己可以下去查看手册,这里不再赘述了,直接看SPI的IO口是哪些。80X带有硬件SPI,速度最快20MHZ,所以刷屏会有些慢。SPI接口如下程序:void HAL_SPI_MspInit(SPI

  程序开发 /

  8080时序简介NT35510支持多种时序读写操作,我们这里使用的是8080并口操作,读/写时序如下:表格 1注意:这里的数据传输线]是双向的,且RD读使能,WR写使能低电平有效。FSMC到底是干什么用的?不同存储器在FSMC中的地址映射如下所示:FSMC与外部存储器的映射关系如下:我们可以好好地品味上图的含义,FSMC一个块有64M的存储空间,存储空间里存储的是数据吗?不是的,存储的是外设地址,当我们在存储块中的访问单元序号+1,对应的外设存储单元的访问地址就自加8(如果外设数据存储的数据宽度为8b的话)。由此,我们可以得到FSMC的工作机理:我们一定要区分“地址映射“和”实际地址“之间的不同。FSMC的地址映射和外部

  的原理详述 /

  TFTLCD的引脚介绍TFTLCD显示用到的引脚如下所示:表格11~21号IO口用于LCD控制器,23号IO口用于LCD的背光控制,这样LCD的显示总共需要22个IO口。但是,电源和地线我们千万不要忽略,模块需要双电源供电:5V和3.3V才可以正常工作,5V电源用于背光供电,3.3V用于除背光外的其他电源部分供电。TFTLCD的与MCU的硬件连接表格28080时序简介NT35510支持多种时序读写操作,我们这里使用的是8080并口操作,读/写时序如下:表格 1注意:这里的数据传输线]是双向的,且RD读使能,WR写使能低电平有效。FSMC简介大容量,且引脚数在100脚以上的STM32F103芯片都带有FSMC接口,ALIE

  详解 /

  一,FSMC简介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控制包含: 地址线) 数据线) 写信号(WE,即WR) 读信号(OE,即RD) 片选信号(CS) 若SRAM支持字节控制,还有UB/LB信号。上一节提到的TFTLCD信号,RS、D0~D15、WR、RD、CS、RST和BL等其中线

  介绍 /

  一,TFTLCD简介TFTLCD : 薄膜晶体管液晶显示器在液晶显示屏的每一个像素上都设置有一个薄膜晶体管(TFT)克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,提高图像质量TFTLCD优点:亮度好,对比度高,层次感强,颜色鲜艳,是目前最主流的LCD显示器广泛用于电视,手机,电脑,平板等各种的电子产品二,ALINETEK 2.8寸 TFTLCD模块介绍240*320分辨率16位线色)自带电阻触摸屏自带背光电路三,ALINETEK 2.8寸 TFTLCD模块原理图1,2.8寸LCD引脚2,TFTLCD 为对外接口,引出2*17排针3,电阻触摸屏驱动XPT20464,触摸屏信号控制TFT2.8 12-15引

  原理与驱动与指令介绍 /

  ALINETEK2.8寸 TFTLCD模块特点240*320分辨率16位线色)自带电阻触摸屏自带背光电路注意:模块是3.3V供电的,不支持5V电压的MCU,如果是5VMCU,必须在信号线R电阻使用。ALINETEK2.8寸 TFTLCD接口说明(16位80并口)LCD_CS:LCD片选信号LCD_WR:LCD写信号LCD_RD:LCD读信号DB[17:1]:16位双向数据线。LCD_RST:硬复位LCD信号LCD_RS:命令/数据标志(0:命令,1:数据)BL_CTR:背光控制信号T_MISO/T_MOSI/T_PEN/T_CS/T_CLK,触摸屏接口信号引脚电路图如下图:驱动时序图:驱动流程:RGB56

  驱动原理 /

  版本

  【直播】STM32 GUI解决方案浅谈以及一小时教会你使用TouchGFX

  【视频】基于STM32WB的BLE MESH和Zigbee同网并发的智能家居解决方案

  【干货】STM32WB:双核架构、可支持BLE 5.2等多种2.4GHz频段射频协议的SoC射频芯片

  【干货】STM32WL单/双核架构、可支持LoRa等Sub-GHz频段射频协议的SoC射频芯片

  【干货】放大招!STM32U5,ST首个获得PSA和SESIP 3级认证的MCU!

  【无线连接】 微控制器无线连接应用,多场景技术支持,丰富的学习设计资源

  有奖直播:基于GaN 的高频(1.2MHz)高效率 1.6kW 高密度临界模式 (CrM) 图腾柱功率因数校正 (PFC)转换器的应用介绍

  免费试用Atmel MCU开发板,抢“鲜”体验优越性能,更有大奖等你拿!

  ST直播主题:高度灵活的、易用的、可定制化的协议栈--BlueNRG-LP 协议栈介绍

  有奖直播|TI 新一代Sitara AM62处理器革新人机交互――产品介绍和相关资源

  51单片机PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程词云: