您的位置 首页 报告

STM32学习笔记(6.1):LCD的显现

1LCDLCM的基本概念液晶显示器(LiquidCrystalDisplay:LCD)的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直

1. LCD/LCM的基本概念
液晶显现器(Liquid Crystal Display: LCD)的结构是在两片平行的玻璃傍边放置液态的晶体,两片玻璃中心有许多笔直和水平的细微电线,透过通电与否来操控杆状水晶分子改变方向,将光线折射出来发生画面。
LCM(LCD Module)即LCD显现模组、液晶模块,是指将液晶显现器材,衔接件,操控与驱动等外围电路,PCB电路板,背光源,结构件等安装在一起的组件。
在平常的学习开发中,咱们一般运用的是LCM,带有驱动IC和LCD屏幕等多个模块。

2. FSMC的基本概念
STM32上开发LCD显现,能够有两种方法来对LCD进行操作,一种是经过一般的IO口,衔接LCM的相应引脚来进行操作,第2种是经过FSMC来进行操作。
可变静态存储操控器(Flexible Static Memory Controller: FSMC) 是STM32系列中内部集成256 KB以上FlaSh,后缀为xC、xD和xE的高存储密度微操控器特有的存储操控机制。之所以称为“可变”,是因为经过对特别功用寄存器的设置,FSMC能够依据不同的外部存储器类型,宣布相应的数据/地址/操控信号类型以匹配信号的速度,然后使得STM32系列微操控器不只能够运用各种不同类型、不同速度的外部静态存储器,并且能够在不添加外部器材的状况下一起扩展多种不同类型的静态存储器,满意体系规划对存储容量、产品体积以及本钱的归纳要求。
FSMC有许多长处:
1. 支撑多种静态存储器类型。STM32经过FSMC能够与SRAM、ROM、PSRAM、NOR Flash和NANDFlash存储器的引脚直接相连。
2. 支撑丰厚的存储操作方法。FSMC不只支撑多种数据宽度的异步读/写操作,并且支撑对NOR、PSRAM、NAND存储器的同步突发拜访方法。
3. 支撑一起扩展多种存储器。FSMC的映射地址空间中,不同的BANK是独立的,可用于扩展不同类型的存储器。当体系中扩展和运用多个外部存储器时,FSMC会经过总线悬空推迟时刻参数的设置,避免各存储器对总线的拜访抵触。
4. 支撑更为广泛的存储器类型。经过对FSMC的时刻参数设置,扩展了体系中可用存储器的速度规模,为用户供给了灵敏的存储芯片挑选空间。
5. 支撑代码从FSMC扩展的外部存储器中直接运转,而不需求首要调入内部SRAM。
FSMC包括两类操控器:
1. 1个NOR闪存/SRAM操控器,能够与NOR闪存、SRAM和PSRAM存储器接口。
2. 1个NAND闪存/PC卡操控器,能够与NAND闪存、PC卡,CF卡和CF+存储器接口。
操控器发生一切驱动这些存储器的信号时序:
1. 16位数据线,用于衔接8位或16位的存储器;
2. 26位地址线,最多可接连64MB的存储器(这儿不包括片选线);
3. 5位独立的片选信号线;
4. 1组合适不同类型存储器的操控信号线:
操控读/写操作
与存储器通讯,供给安排妥当/繁忙信号和中止信号
与所用装备的PC卡接口:PC存储卡、PC I/O卡和真实的IDE接口
从FSMC的视点看,能够把外部存储器划分为固定巨细为256MB的4个存储块

· 存储块1用于拜访最多4个NOR闪存或许PSRAM存储设备。这个存储区被划分为4个NOR/PSRAM区,并有4个专用的片选。
· 存储块2和3用于拜访NAND闪存设备,每个存储块衔接一个NAND闪存。
· 存储块4用于拜访PC卡设备
每一个存储块上的存储器类型是由用户在装备寄存器中界说的。
留意:FSMC仅仅供给了一个操控器,并不供给相应的存储设备,至于外设接的是什么设备,彻底是由用户自己挑选,只需能用于FSMC操控,就能够,像本次试验中,咱们接的便是LCM。

3. 本例中FSMC的运用
因为本例仅仅运用FSMC对LCM进行操作,因而不必彻底懂得FSMC的一切功用,而是懂得一部分相应的操作即可。
1. FSMC包括哪几个部分
FSMC包括以下4个模块:
· AHB接口(包括FSMC装备寄存器)
· NOR闪存和PSRAM操控器
· NAND闪存和PC卡操控器
· 外部设备接口
需求留意的是,FSMC能够恳求AHB进行数据宽度操作。假如AHB操作的数据宽度大于外部设备(NOR或NAND或LCD)的宽度,此刻FSMC将AHB操作分割成几个接连的较小的数据宽度,以习惯外部设备的数据宽度。
2. FSMC对外部设备的地址映像
FSMC对外部设备的地址映像从0x6000 0000开端,到0x9FFF FFFF完毕,总共4个地址块,每个地址块256MB,而每个地址块又分红4个分地址块,巨细为64MB。关于NOR的地址映像来说,咱们能够经过挑选HADDR[27:26] 来确认当时运用的是哪个64M的分地址块。而这四个分存储块的片选,则运用 NE[4:1]来挑选。数据线/地址线/操控线是同享的。
这儿的HADDR 是需求转化到外部设备的内部AHB地址线,每个地址对应一个字节单元。因而,若外部设备的地址宽度是8位的,则HADDR[25:0]与STM32的CPU引脚 FSMC_A[25:0]逐个对应,最大能够拜访64M字节的空间。若外部设备的地址宽度是16位的,则是HADDR[25:1]与STM32的CPU引脚FSMC_A[24:0]逐个对应。在运用的时分,能够将FSMC_A总线衔接到存储器或其他外设的地址总线引脚上。

4. ILI9325
因为咱们运用的是斗争STM32 V3开发板,其内部自带的是一个LCM,产品的编号是:QD024CPS25-36AV0,其间的具体标准参数能够参阅QD024CPS25-36AV0标准书中的记载。而LCM中的驱动IC便是选用的ILI9325。
ILI9325的功用许多,在此无法逐个阐明,可是参阅ILI9325的Datasheet咱们发现有几个引脚仍是十分重要的,而只需操作好了这几个引脚,基本上就能够完成简略的对LCM的操控了。
nCS: IC的片选信号。假如是低电平,则ILI9325是被选中,并且能够进行操作,假如是高电平,这不被选中。
RS: 寄存器挑选信号。假如是低电平,则挑选的是索引或许状况寄存器,假如是高电平,则挑选操控寄存器。
nWR/SCL: 写使能信号,低电平有用。
nRD: 读使能信号,低电平有用。
以上内容是从ILI9325的Datasheet里边找到的,可是依据我的实际操作发现,好像高电平也是有用的。并且,不管是高电平仍是低电平,都能够成功驱动LCD,假如有了解状况的能够讨论一下。
ILI9325的寄存器十分多,具体的各个寄存器的功用请参阅ILI9325的Datasheet。在对ILI9325进行操作时,应该先写地址,然后再写数据,设置好各个寄存器之后,ILI9325就能够开端工作了。

5. 电路规划
1. 信号线的衔接
STM32F10x FSMC有4个不同的banks,每一个64MB,可支撑NOR以及其他相似的存储器。这些外部设备的地址线、数据线和操控线是同享的。每个设备的拜访时经过片选信号来决议的,而每次只能拜访一个设备。咱们的LCM便是衔接在NOR的bank上面。
FSMC_D[15:0]:16bit的数据总线,衔接ILI9325的数据线;
FSMC_NEx:分配给NOR的256MB的地址空间还能够分为4个banks,每一个区用来分配一个外设,这4个外设别离便是NE1-NE4;
FSMC_NOE:输出使能,衔接ILI9325的nRD引脚;
FSMC_NWE:写使能,衔接ILI9325的nWR引脚;
FSMC_Ax:用在LCD显现RAM和寄存器之间进行挑选的地址线,这个和ILI9325的RS引脚相连。该线可用恣意一根地址线,规模是FSMC_A[25:0]。当RS=0时,表明读写寄存器,RS=1时,表明读写数据RAM。
其实关于RS的表述也并不彻底精确,应该这么了解,RS=0的时分,向这个地址写的数表明了挑选什么寄存器进行操作,但是要对寄存器进行什么操作,则要看当RS=1时,送入的数据了。
关于地址的核算,假如咱们挑选NOR的第一个存储区,并且运用FSMC_A16来操控ILI9325的RS引脚,则假如要拜访寄存器地址(RS=0),那么地址是0x6000 0000(开始地址),假如要拜访数据区(RS=1),那么基地址应该是0x6002 0000。
有人会问,为什么不是0x6001 0000呢?因为FSMC_A16=1。因为在前文中现已说过,若外部设备的地址宽度是16位的,则是HADDR[25:1]与STM32的CPU引脚FSMC_A[24:0]逐个对应。也便是说,内部发生的地址应该要左移一位,FSMC_A16=1,代表着第17位为1,而不是第16位为1。假如外部设备的地址宽度是8位的话,则不会呈现这个问题。
再举一个比如,假如挑选NOR的第4个存储区,运用FSMC_A0来操控RS引脚,则拜访数据区的地址为0x6000 0002,拜访LCD寄存器的地址为:0x6000 0000。
2. 时序问题
一般运用形式2来做LCD的接口操控,不运用外扩形式。并且读写操作的时序相同。此种状况下,咱们需求运用3个参数:ADDSET、DATAST、ADDHOLD。时序的核算需求依据NOR闪存存储器的特性和STM32F10x的时钟HCLK来核算这些参数。
写或读拜访时序是存储器片选信号的下降沿与上升沿之间的时刻,这个时刻能够由FSMC时序参数的函数核算得到:
写/读拜访时刻 = ((ADDSET + 1) + (DATAST + 1)) × HCLK
在写操作中,DATAST用于衡量写信号的下降沿与上升沿之间的时刻参数:
写使能信号从低变高的时刻 = t WP = DATAST × HCLK
为了得到正确的FSMC时序装备,下列时序应予以考虑:
最大的读/写拜访时刻、不同的FSMC内部推迟、不同的存储器内部推迟
因而得到:
((ADDSET + 1) + (DATAST + 1)) × HCLK = max (t WC , t RC )
DATAST × HCLK = tWP
DATAST有必要满意:
DATAST = (tAVQV+ tsu(Data_NE) + tv(A_NE) )/HCLK – ADDSET – 4
因为我没有找到ILI9325的这些时序的参数,所以就参阅了一些曾经他人写的程序里边的时序装备:
当 HCLK 的频率是 72MHZ,运用形式 B,则有如下时序:
地址树立时刻:0x1
地址坚持时刻:0x0
数据树立时刻:0x5

6. 程序编写过程
关于程序的编写,一般过程是:
1. 初始化RCC;
2. 初始化GPIO;
3. 初始化FSMC;
4. 初始化LCD;
5. 往GRAM里边写入显现数据。
其间RCC、GPIO、FSMC的初始化函数在STM32的固件库中现已有相应的函数,在此就不逐个赘述了,假如有不明白的,能够参阅曾经我写的学习笔记。FSMC的初始化参数许多,并且基本上能够通用,因而在此也不对每一个参数具体有什么用进行解说了,一般来说,用通用参数就满足一般的开发了。
而对LCD的初始化,则需求自己编写相应的代码。基本原则是,首要向寄存器地址写入需求操作的寄存器地址(代码),然后再依据Datasheet,向数据区地址写入相应的数据,以完成某些操作。具体的操作在ILI9325的Datasheet 第8节Register Descriptions中,有具体的解说。而LCD的初始化只需依照Datasheet里边的,把每一个寄存器都给装备好了,就没有问题了。而这些寄存器的装备,大部分都是通用的,仅仅有一些屏幕方向挑选,坐标系等会略有不同。
LCD装备好之后,就能够往GRAM里边写入图画数据了,在这儿引荐一个软件“Image2LCD”,这个软件能读取图画,然后生成C代码的数据,只需将这些生成的代码直接写入GRAM中,就能够显现出图画了。不过要记住,在图画转化的时分,输出数据类型挑选“C言语数组”,扫描形式挑选“水平扫描”,输出灰度“16位真彩色”,最大宽度和高度“320”“240”勾选“高位在前(MSB First)”。这些装备都是和ILI9325的寄存器装备相对应的,假如说ILI9325的装备和本文中的不相同,则需求相应的挑选其他的选项。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/baogao/260470.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部