STM32入门学习笔记之TFTLCD显示实验1

发布者:CrystalDawn最新更新时间:2024-04-07 来源: elecfans关键字:STM32  TFTLCD  显示实验 手机看文章 扫描二维码
随时随地手机看文章

10.1 概述

之前在51为核心的系统里面,常用的显示器件有LED,数码管,LCD1602和LCD12864,这些器件都有一个共同的特点,那就是只有一个颜色,没有办法显示彩色图片,为了显示彩色图片,我们引入了TFT显示模组。TFT-LCD即薄膜晶体管液晶显示器。其英文全称为:ThinFilmTransistor-Liquid Crystal Display。TFT-LCD与无源TN-LCD、STN-LCD的简单矩阵不同,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。TFT-LCD也被叫做真彩液晶显示器。


目前常用的TFT显示模组按照接口类型可以分为MCU屏幕与RGB屏幕,其中MCU在STM32F1系列中比较常用,原因是MCU屏幕内部集成了显示控制器,只需要按照手册指定的协议将输入发送过去即可,但是MCU屏幕受限于屏幕尺寸,一般不会超过4.3英寸,RGB屏幕内部没有控制器,需要单片机或者CPU自带控制器,但是RGB屏幕尺寸较大,且刷新速度快,通用性强,在生活中使用的更广泛,由于STM32F1单片机中没有RGB控制器(LTDC模块),所以采用核心为5510的TFT屏幕来进行TFT显示实验。


注 :我们在网上看到的大尺寸MCU屏幕一般都是以屏幕+PCB的形式,这是因为板子上携带了8080并口转RGB芯片,所以这种情况下,也可以使用MCU屏幕的驱动方式来进行驱动。


10.2 TFTLCD模块原理图

10.2.1 原理图

图片

RST:复位端口,高电平有效

CS:片选,低电平有效

RS:数据命令选择,低电平代表命令,高电平代表数据

WR:写控制,高电平有效

RD:读控制,高电平有效

DB0~DB15:16位并行数据口

VCC:电源正极

GND:电源负极

LEDK:背光LED负极

LEDA:背光LED正极

Y-:触摸屏Y轴数据

X-:触摸屏X轴数据

Y+:触摸屏Y轴数据

X+:触摸屏X轴数据


10.3 FSMC

10.3.1 FSMC简介

FSMC,即灵活的静态存储控制器,能够与同步或异步存储器和16位PC存储器卡连接,STM32F1的FSMC接口支持包括SRAM、NANDFLASH、NOR FLASH和PSRAM等存储器。一般大容量,且引脚数目在100脚及以上的 STM32F103芯片都带有FSMC接口,FSMC的框图如图所示。

图片

从上图可知,STM32的FSMC将设备分为3种:NOR/PSRAM设备,NAND设备和PC设备,共用地址数据总线等信号,通过CS端口来区分不同的设备,比如我们这个实验中LCD的片选就是接在FSMC_NE4端口上,其实本质上就是把TFTLCD作为SRAM来控制。


外部SRAM设备的连接一般有地址线(A0~A18),数据线(D0~D15),写信号(WR),读信号(RD)和片选,TFTLCD显然除了不具备地址线,其他的信号都是具备的,所以我们可以采用SRAM的方式来进行TFT的控制,这种控制方式的好处就是对比传统的GPIO翻转可以更快的将数据送入TFT。


STM32F1的FSMC支持8/16/32位数据宽度,我们的TFT模块采用的是16位数据宽度,所以只需要将FSMC配置为外置16位宽度即可。FSMC的外部存储器划分为了固定的4个256 M的存储块,如下图所示。


我们在驱动TFTLCD的时候,用到的存储块是块1,STM32将FSMC的存储块1分为4个区,每个区管理64M的空间,每个区都有独立的寄存器对连接的存储器进行配置,BANK1的256M空间由28根地址线寻址,这28根地址线如下表所示,其中低26个位来自外部存储器的地址,我们可以将TFTLCD的片选接在低26位上,通过发送地址来选中片选,只有高2位才是内部可以控制的。

BANK1区域片选地址范围地址线
[27:26][25:0]

区域1NE10x60000000 ~ 0x63FFFFFF00
区域2NE20x64000000 ~ 0x67FFFFFF01
区域3NE30x68000000 ~ 0x6BFFFFFF10
区域4NE40x6C000000 ~ 0x6FFFFFFF11

注:


当Bank1接的是16位宽度存储器的时候:地址线的[25:1]对应FSMC_A[24:0]


当Bank1接的是8位宽度存储器的时候:地址线的[25:0]对应FSMC_A[25:0]


对于NOR FLASH控制器,主要通过3个寄存器来设置FSMC的时序参数,NORFLASH控制器支持同步和异步突发两种访问方式。


选用同步突发访问方式时,FSMC将系统时钟分频后,发送给外部存储器作为同步时钟信号 FSMC_CLK。此时需要的设置的时间参数有2个,即系统时钟HCLK与FSMC_CLK的分频系数(可以2~16分频),同步突发访问中获取第一个数据所需要的等待延迟。


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


在实际扩展时,根据选用存储器的特征确定时序模型,从而确定各时间参数与存储器读/写周期参数指标之间的计算关系,利用该计算关系和存储芯片数据手册中给定的参数指标,可计算出FSMC所需要的各时间参数,从而对时间参数寄存器进行合理的配置。


我们现在使用异步模式A方式来控制LCD,模式A的读操作时序如下图所示。

图片

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


模式A的写操作如下图所示。

图片

10.3.2 相关寄存器

(1)SRAM/NOR 闪存片选控制寄存器:FSMC_BCRx(x=1~4)

31302928272625242322212019181716
-CBURSTRW-












1514131211109876543210
-EXTMODWAITENWRENWAITCFGWRAPMODWAITPOLBURSTEN-FACCENMWIDMTYPMUXENMBKEN


关键字:STM32  TFTLCD  显示实验 引用地址:STM32入门学习笔记之TFTLCD显示实验1

上一篇:STM32入门学习笔记之TFTLCD显示实验2
下一篇:用STM32与PID算法做一个磁悬浮装置

推荐阅读最新更新时间:2024-11-12 10:56

STM32的DS18B20的驱动移植
折腾了一晚上,才把DS18B20的驱动移植到STM32上来。以前在51上使用过单个和多个连接的DS18B20,有现成的程序了,以为很快就能弄好,结果还是被卡住了,下面说下几个关键点吧: 首先是延时的问题,STM32上若用软件延时的话不太好算时间,所以要么用定时器要么用SysTick这个定时器来完成延时的计算。相比之下用SysTick来的简单方便点。 接着是STM32 IO脚的配置问题,因为51是双向的IO,所以作为输入输出都比较方便。STM32的IO是准双向的IO,网上查了下资料,说将STM32的IO配置成开漏输出,然后外接上拉即可实现双向IO。于是我也按规定做了,但调了老半天都不成功,是因为DS18B20没有响应的信号。
[单片机]
STM32独立看门狗IWDG与窗口看门狗WWDG研究
1.看门狗介绍 看门狗这东西虽然简单,但我相信绝大多程序员没有足够重视它。使用看门狗保证系统正常地运行是非常有必要的。我们在设计产品时,代码以及硬件设计缺陷或是外界电磁干扰都有可能使系统死机,如果不能正常对其进行复位,系统的可靠性将大打折扣。看门狗分为软件看门狗和硬件看门狗两类,其原理都是使用一个独立定时器来计时,超出时间就会产生复位信号,主要区别看是否具有独立的硬件结构,如果有,就是硬件看门狗,如果是一个普通定时器实现的那么就是软件看门狗。STM32F407片内有两个看门狗:独立看门狗IWDG以及窗口看门狗WWDG,下面来讨论各自的特点和用法。 2.IWDG的特点以及使用 IWDG是一个独立看门狗,具有独立于系统的时钟,与片
[单片机]
读取stm32 产品的唯一身份的寄存器
读取stm32 产品的唯一身份的寄存器 voidGet_ChipID(void) { uint32_t temp0,temp1,temp2; temp0 = *(__IO uint32_t*)(0x1FFF7A10); temp1 = *(__IO uint32_t*)(0x1FFF7A14); temp2 = *(__IO uint32_t*)(0x1FFF7A18); // temp0=(*( uint32_t *)0x1FFF7A10); //产品唯一身份标识寄存器(96位) // temp1=(*( uint32_t *)0x1FFF7A14); // temp2=(*( ui
[单片机]
STM32对码盘的正交信号处理
STM32的每个TIMER都有正交编码器输入接口,TI1,TI2经过输入滤波,边沿检测产生TI1FP1,TI2FP2接到编码器模块,通过配置编码器的工作模式,即可以对编码器进行正向/反向计数。 如下图,编码器使用了A,B两相信号,但是我只需要对TI1信号进行计数(第一行),我也是刚发现了这个错误,原来对两个信号都计数,导致码盘转一周得到不止100个脉冲(100线的光电码盘)。通过STM32的编码器模块比较两想的电平信号就可以很容易地计算出编码器的运行情况了。 下面是调试OK的代码: void Encoder_Configration(void) { GPIO_InitTypeDef GPIO_InitStruct
[单片机]
<font color='red'>STM32</font>对码盘的正交信号处理
初学STM32芯片的必备技能
STM32的核心Cortex-M3处理器是一个标准化的微控制器结构,希望思考一下,何为标准化?简言之,Cortex-M3处理器拥有32位CPU,并行总线结构,嵌套中断向量控制单元,调试系统以及标准的存储映射。 嵌套中断向量控制器(NestedVectorInterruptController,简称NVIC)是Cortex-M3处理器中一个比较关键的组件,它为基于Cortex-M3的微控制器提供了标准的中断架构和优秀的中断响应能力,为超过240个中断源提供专门的中断入口,而且可以赋予每个中断源单独的优先级。利用NVIC从可以达到极快的中断响应速度,从收到中断请求到执行中断服务的第一条指令仅需12个周期。这种极快的响应速度一方面得
[单片机]
stm32的gpio口的介绍
我最近在学stm32,想和大家分享自己的学习成果,也和大家一起学习交流。之前学习过15的库函数的套用,经过一段时间摸索,我对stm32的使用有了基础的了解。因为板子不是正点原子和野火,所以有些不同。 每个板子视频教学第一个介绍都是stm32的gipo口的介绍,这个io口跟51的io口定义全然不同,并且能配置自身频率,而且有些定义用到了结构体。而且stm32是32位的单片机,内部的32位寄存器太多,很难记住,所以建议使用库函数的办法,先学会套用,后来在更改参数或者做一些小项目的时候,对一些寄存器做一些更深入的理解。 首先我们讲一下gipo口void led_init(void) { GPIO_InitTypeDe
[单片机]
STM32低功耗模式解读
本文主要解读STM32低功耗模式的机制,并不侧重STM32低功耗的程序实现,而且借助STM32固件库实现STM32低功耗会变的非常简单。 一、STM32芯片性能 使用芯片型号:stm32f030f4,CORTEX -M0.封装TSSOP20. 运行模式:内部时钟(HSI),系统时钟频率采用48MHZ。 工作电压:3.3V 芯片具体参数如下: 二、芯片功耗 功耗: 芯片工作模式: 工作模式:外设正常运行,内核CPU及SRAM供电,未使用外设的时钟默认关闭。 睡眠模式:只有CPU停止工作,各个外设正常工作,依靠任何中断/事件唤醒。 停机模式:1.8V供电区域时钟被停止,内部HSI,PLL,外部时钟HSE均关闭,同时电压
[单片机]
<font color='red'>STM32</font>低功耗模式解读
单片机汇编实验四: 扫描键盘及LED显示实验
实验要求 利用P0口与行列式键盘接口,编写键盘扫描程序,把按键输入的键码,显示在数码管上 //This is the fourth program of the homework //The date:2013/3/1 The author:WQ ORG 0000H SJMP MAIN MAIN: MOV DPTR,#TABLE MOV R1,#00H SETB P2.6 MOV P0,#00H CLR P2.6 SETB P2.7 MOV P0,#0H; CLR P2.7 SCAN: //检测第一行 MOV P3,#0FEH
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved