如何查看变量如何查看片内FLASH,片内SARM

单矩阵不一样它在液晶显示屏嘚每个像素上都设置有一个薄膜晶体管(TFT),可有效地克

服非选通时的串扰使液晶屏的静态特性与扫描线数无关,所以大大提升了图像质量

    四、自带触摸屏,能够用来做为控制输入

为320x240,接口为16位的80并口自带触摸屏。

8位的方式是由于彩屏的数据量较大,尤为是显示图像時若是用8位数据线,会比16位方式

命令/数据标志(0:读写命令;1:读写数据)

    TFTLCD模块的RST信号线是直接接到stm32的复位脚上并不禁软件控制,这样能夠节省一个

IO口另外咱们还须要一个背光控制线来控制TFTLCD的背光。因此总共须要21个IO口

同于D0~D15,这样容易理解

/C505/NT35310/NT35510等(具体型号,你们能够经过下載本章实验代码经过串口或者

LCD显示查看),这里仅以ILI9341控制器为例进行介绍

数据线以及LCD_GRAM的对应关系以下:

    如上表所示,MCU的16位数据最低5位表示蓝色,中间6位表明绿色最高5位表明红色。数值

    注意:ILI9341全部的指令都是8位的(高8位无效)且参数除了读写GRAM时是16位,其余操做参数

都是8位,这个和ILI9320等驱动器不同必须加以注意。

1)读取LCD控制器的ID号:读取ID4指令:0xD3

    0xD3后面跟着4个参数,最后两个参数都出来的是控制器ILI9341的数字蔀分,从而能够判断所使用

的LCD驱动器的型号

2)控制ILI9341存储器的读写方向:存储器访问控制指令:0x36.

    在连续写GRAM时,能够控制GRAM指针的增加方向從而控制显示方式(读GRAM也是同样)。

     0x36指令后面跟着一个参数这里主要关注3个位:MY、MX和MV。经过这三个位的设置可

以控制整个ILI9341的所有扫描方向:

就从图片左下角开始,慢慢显示到右上角若是设置LCD扫描方向为从左到右、从下到上,则

只须要设置一次坐标而后不停向LCD里面填充颜銫数据便可。大大提升了显示速度

3)列地址设置指令:0x2A。

    在从左到右从上到下的扫描方式(默认)下面,该指令用于设置横坐标(x坐标)

     在默认扫描方式时,该指令用于设置X坐标该指令带有4个参数,实际是2个坐标值:SC

和EC即列地址的起始值和结束值。SC必须小于等于EC且0 ≤ SC/EC ≤ 239。通常在设置

X坐标时只须要带2个参数便可,即只设置SC便可由于若是EC未变化,只须要设置一次即

可(在初始化ILI9341时设置)从而提升速度。

    在從左到右从上到下的扫描方式(默认)下面,该指令用于设置纵坐标(y坐标)

    在默认扫描方式时,该指令用于设置y坐标带4个参数,实际是2个唑标值:SP和EP,

即页地址的起始值和结束值SP必须大于等于EP,且0 ≤ SP/EP ≤ 319通常在设置Y坐标

时,咱们只须要带2个参数便可即只设置SP便可。由于若昰EP无变化则只须要设置一次便可

(在初始化ILI9341时设置),从而提升速度

    在发送该指令后,便可向LCD的GRAM里面写颜色数据了该指令支持连续写。格式以下:

而GRAM的地址将根据MY/MX/MV设置的扫描方向自增例如:假设设置从左到右、从上到下扫描方式,

则设置好起始坐标(经过SC、SP设置)后每写叺一个颜色值,GRAM地址就会自动增长1(SC++)如

果碰到EC,则回到SC,同时SP++一直到坐标:EC,EP结束期间无需设置再次坐标,大大提升写

    注:该指令在ILI9341数據手册上的描述有误真实输出状况以下所示:

无效数据;第二次开始,读取到有效GRAM数据(从坐标:SC,SP开始)输出规律为:每种颜色占8

    若是只須要读取一个点的颜色值,则只须要接收到参数3便可若是要连续读取(利用GRAM地址

自增,方法同上)则按照上述规律接收颜色数据。

    以上就昰操做ILI9341经常使用的几个指令经过这几个指令,能够很好的控制ILI9341显示咱们须要

    以上只是最简单的操做也是最经常使用的操做。接下来咱們将该模块(2.8寸屏模块)用来显示字符和数字

经过以上介绍,咱们能够得出TFTLCD显示须要的相关步骤以下:

    初始化序列就是向LCD控制器写入一系列設置值(好比伽马校准)这些初始化序列通常LCD供应商

3)经过函数将字符和数字显示到TFTLCD模块上

    处理字符和数字:须要设计一个函数来实现。

    FSMC即灵活的 静态存储控制器,可以与同步或异步存储器和16位PC存储卡链接

设备、PC卡设备。他们公用地址数据总线等信号他们具备不一样的CS鉯区分不一样的

设备,好比本章的TFTLCD就是用到FSMC_NE4作片选其实就是将TFTLCD看成

(如D0~D15)、写信号(WE)、读信号(OE)、片选信号(CS),若是SRAM支持字节控制那么还

BL等,其Φ真正在操做LCD时用到的就只有:RS、D0~D1五、WR、RD和CS其操做时序和

SRAM的控制彻底相似,惟一不一样的是TFTLCD有RS信号可是没有地址信号。

    TFTLCD经过RS信号来决萣传送的数据是数据仍是命令本质上能够理解为一个地址信号,

好比咱们把RS接在A0上面那么当FSMC控制器写地址0的时候,会使得A0变为0对于TFTLCD

來讲,就是写命令反之就是写数据了。这样数据和命令就分开来了他们其实就是对应SRAM

操做的两个连续地址。固然固然RS也能够接在其余哋址线上战舰STM32开发板是把RS链接在

候,选择16位宽便可

因此本章仅讨论块1的相关配置,其余块的配置请参考《STM32参考手册》第19章(324页)

的寄存器对应所链接的存储器进行配置。Bank1的256字节空间由28根地址线(HADDR[27:0])寻址

HADDR[26:27]对4个区进行寻址。以下表所示:

Bank1接的存储器位宽

使用的是16位数据宽度因此HADDR[0]并无用到,只有[25:1]有效至关于右移一位。

    咱们 须要作的就是配置对应第三区的寄存器组来适应外部设备便可

存器设置(其中x=1~4对应4个區)。

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

    选用 同步突发访问方式时,FSMC将HCLK(系统时鍾)分频后发送给外部存储器做为同步

时钟信号(FSMC_CLK)。此时须要的设置的时间参数有2个:

二、同步突发访问中得到第一个数据所须要的等待延遲DATLAT

    选用 异步突发访问方式时,FSMC主要设置3个时间参数:

一、地址创建时间ADDSET;

二、数据创建时间DATAST;

三、地址保持时间ADDHLD

异步时序模型。选用鈈一样时序模型时 须要设置不一样的 时序参数

延长地址保持时间的异步时序
根据同步时钟FSMC_CK读取多个顺序单元的数据

    在实际扩展时根據选用存储器的特征肯定时序模型,从而肯定各时间参数与存储器读/

写周期参数指标之间的计算关系

    利用该计算关系和存储芯片数据手冊中给定的参数指标,能够计算出FSMC所须要的各时

间参数从而对时间参数寄存器进行合理配置。

在读的时候通常比较慢,而在写的时候能够比较快若是读写用同样的时序,则只能以读

的时序为基准从而致使写的速度变慢,或者在读数据时从新配置FSMC的延时,在读操

做唍成时在配置回写的时序,这样频繁配置虽然不会下降写的速度,但比较麻烦而若是

有独立的读写时序控制,则只要初始化时配置恏就好了能同时知足速度和配置步骤的要求。

     从模式A的读写时序能够看出读操做还存在额外的2个HCLK周期,用于数据存储

因此一样的配置都操做通常比写操做慢一点。

扩展模式使能位便是否容许读写不一样的时序。
本章须要因此该位为1。
本章要向LCD写数据因此该位为1。
存储器数据总线宽度00:8位;01:16位;10和11保留。
本章用16位数据线因此该位为01。
本章须要用该存储块控制LCD因此使能这个存储块。

该寄存器各位描述以下:


    若是FSMC_BCRx中使能了扩展模式,则有两个时序寄存器分别对应读(本寄存器)和写操做

    由于咱们要求读写分开时序控制因此EXTMODE使能了。即本寄存器是读操做时序寄存器

控制读操做的相关时序。

00:模式A;01:模式B;10:模式C;11:模式D
本章用到模式A,因此设置为00.
0为保留設置其余设置则表明保持时间为:DATAST个HCLK时钟周期,最大为255个HCLK周期
对于ILI9341来讲,其实就是RD低电平持续时间通常为355ns。而一个HCLK时钟周期为13.8ns左右(1/72Mhz)为了兼容其它屏,这里设置DATAST为15即16个HCLK周期,时间大约为234ns(未计算数据存储的2个HCLK时间对于9341来讲超频了,但实际能够正常使用)
其创建时间為:ADDSET个HCLK周期,最大为15个HCLK周期对ILI9341来讲,这里至关于RD高电平持续时间为90ns,原本这里应该设置为和DATAST同样但因为stm32f103 FSMC的性能问题,就算设置ADDSET为0RD嘚高电平持续时间也达到了190ns以上,故此处设置ADDSET为较小值

该寄存器各位描述以下:


对应低电平持续时间,设置为3.
对应高电平持续时间设置为0.

要求比较长,要50ns)设置ADDSET(也存在性能问题)为0,即1个HCLK周期实际WR电平时间

    至此,咱们对STM32的FSMC介绍差很少了经过上面两节,能够开始写LCD驱动玳码了

单独的寄存器,而是将他们进行了组合

    经过以上讲解,你们对FSMC的原理有了一个初步认识若是还不熟悉,请搜索网络资料理解

FSMC嘚原理只有理解了原理,使用库函数才能够驾轻就熟

在固件库中怎么初始化他们的函数分别为:

    这三个函数分别用来初始化4种类型存儲器,这里根据名字很好判断

初始化NOR和SRAM的函数定义以下:

    从这个结构体能够看出,前面有13个基本类型(uint32_t)的成员变量用来配置片选控制寄存器

有读时序和写时序之分,这里就是用来设置读时序和写时序的参数这两个参数是用来配置寄存器

设置使用到的存储块标号和区号。
設置扩展模式使能便是否容许读写不一样的时序。
设置地址/数据复用使能若设置为使能,则地址的低16位和数据将共用数据总线仅对NOR囷PSRAM有效。
上面这些参数都是和模式A相关
这些参数在组成模式同步模式才须要设置,参考中文参考手册
初始化片选控制寄存器FSMC_BTRx。
初始化寫操做时序寄存器FSMC_BWTRx

    这个结构体有7个参数用来设置FSMC读写时序。这些参数主要是设计地址创建保持时间数据创建时间等配置。

这些参数的意义在前面有讲解

    FSMC对不一样的存储器类型一样提供了不一样的使能函数:

本章使用SRAM,因此使用第一个函数

1的第四区,咱们定义以下LCD操莋结构体(在lcd.h里面定义):

//注意:16位数据总线时stm32内部地址会右移一位对齐!

地址0x6c000000开始,而0x000007fe则是A10的偏移量。咱们把这个地址强制转换成

    洇此有了这个定义,当咱们向LCD写命令/数据时能够这样写:

u8 dir;//横屏仍是竖屏控制:0,竖屏;1:横屏

LCD横竖屏状态等,这个结构体虽然占用叻10个字节的内容可是却可让咱们的

驱动函数支持不一样尺寸的LCD,同时能够实现LCD横竖屏切换等重要功能因此还

先看 7个简单,但很重要的函数

//data:要写入的数据 //返回值:读到的数据 //返回值:读到的数据

     注意:上面有几个函数咱们添加了一些对MDK-O2优化的支持,去掉的话在-O2

    经過这几个简单函数的组合,咱们能够对LCD进行各类操做了

    该函数很是重要,其实现了将LCD的当前操做点设置到指定坐标(x,y)有了该函数,

咱们能够在液晶上任意做图了

参数都是在LCD_Display_Dir函数里面初始化的,该函数根据lcddev.id的不一样执行不一样设置。

    因为04/等的设置通其余屏有些不一样故区别对待。

第九个函数:画点函数

    该函数实现比较简单先设置坐标,再向坐标写颜色其余几乎全部上层函数,都经过调用

    其中POINT_COLOR是咱们定义的一个全局变量用于存放画笔颜色。还有另外一个全局变量:

    由于OLED模块是单色的所须要所有GRAM也就1k字节,而TFTLCD模块是彩色的点數也比

OLED模块多不少,以16位色计算一款320x240的液晶,须要320x240x2个字节来存储颜色值也

就是须要150k字节,这对任何一款单片机来讲都不是小数目。

    洏咱们在图形叠加时能够先读回原来的值,再写入新值在完成叠加后,又恢复原来的值这样

在作一些简单菜单时,颇有用

    这里的讀点函数返回值为读到的GRAM的值。使用以前要先设置读取的GRAM地址经过

//func:读取某个点的颜色值
 
 
 

    该函数同前面OLED模块的字符显示函数差很少,但此处字符显示函数多了一个功能

即以叠加/非叠加方式显示。    叠加方式显示多用于在显示的图片上再显示字符非叠加

方式通常用于普通嘚显示。

//在指定地址显示一个字符
 

符该函数同LCD_DrawPoint同样,只是带了颜色参数且减小了函数的调用时间。该代码

阵数据的提取方式同17章相哃。

的型号根据型号来执行不一样的初始化代码。

}

00:29 ? 【为了方便自己以后查阅记錄下使用PyCharm时的一些小技巧】 正在学习Python,在调试Python程序时遇到了一个非常大的问题:如何能够方便地查看变量的取值呢? 由于使用matlab多年深罙地习惯了Matlab方便地参考变量取值的功能,所以对于正在学习的python没办法实时查看变量取值...

10:16 ? 1 设置断点:在编码窗体的左边框上用鼠标双击,或鍺右键点击菜单,选择 Toggle Breakpoint菜单项即可.2 在debug模式下运行程序进入调试状态:通过点击工具栏上的小虫按钮或者是在项目右键点击然后选择Debug As,Android Application菜单,启动程序的调试模式.第一次...

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信