访问电脑版页面

导航:老古开发网手机版STM32单片机驱动LCD

STM32之FSMC驱动LCD屏应用

导读:
关键字:
FSMC,STM32,lcd,

首先,你得稍微了解一下FSMC的基本原理,就是说它是怎么用的,怎么配置,为什么能这么用。这个东西可以看看STM32F4的参考手册。这里不具体说了。

FSMC其实就是把芯片内部的数据总线和地址总线引出来了,其实51单片机也是有这个总线外接的。没有说把SRAM读到内部内存再读到CPU,SRAM就是内存,直接读到CPU的寄存器,通过内部的AHB总线传输的。

我使用的是野火开发板的屏,因为想用开发板提供的程序直接移植。(小白就只能干这种事)因为买的最小系统板是100脚封装的,所以在使用上有点小问题了。我在网上查了好多关于怎么在100引脚的板子上用FSMC上驱动LCD,没有找到合适的答案,既然自己运气好点,调出来了,那么就分享一下。即使不能帮到看到的人,起码能给遇到和我相同问题的人一点安慰!慢慢调,能调出来的!

FSMC的数据线D0-D15,100封装的也有,直接连上就好。(参考数据手册IO口的定义)电源地什么的也当然也是。背光那个引脚是可以自己定义的,这个看个人喜好了。在LCD初始化的最后把背光开了,我的是低电平有效。复位信号和背光一样。CS信号在FSMC定义是PG12,显然没有,但是CS即片选信号,既然我用的就是这一块屏,没必要控制选哪一个,直接使之永远被选就好。当然自己用个引脚去控制理论上也可以。(我没试过)最关键的是LCD-DC信号,使用方法是接在FSMC的地址线上,100封装的也有几根地址线,根据选定的地址线计算好RAM地址。

STM32的FSMC真是一个万能的总线控制器,不仅可以控制SRAM,NOR FLASH,NAND FLASH,PC Card,还能控制LCD,TFT.

一般越是复杂的东西,理解起来就很困难,但是使用上却很方便,如USB.

不过FSMC也有很诡异的地方。如

STM32之FSMC驱动LCD屏应用

为什么呢?那时我还以为软件或硬件还是芯片有BUG,

我就是从上面的不解中开始研究FSMC的…。。

FSMC翻译过来就是灵活的静态存储器控制器,是用来驱动外部总线的。关于外部总线,你可以想象一下51的外部总线,STM32的FSMC实际上跟51的外部总线是一样的,只不过性能更好,速度更快。 至于总线的优势,可以举个51外部总线的例子,51单片机驱动1864或者1602液晶,如果用IO口模拟液晶的时序,需要用指令分别控制RS,WR,EN控制线还有数据线;但是如果用的是外部总线,从汇编指令上来讲,只需要一条MOVX指令就解决问题了。二者的速度一目了然!

在一些TFT液晶的操作用经常用得到,并且非常的好用!(以一个TFT为例)TFT的数据接口为:D0-D15或者D0-D8.

TFT的控制线有:复位信号RST,片选CS,输出使能RD(读信号),写信号WE以及RS信号。

于STM32连线为: RST-》GPIO, CS-》NEx, RD-》NOE, WE-》RW, RS-》A0(或者其他任何一条地址线)

关键的一点就在于这个RS信号(我只说关键的这一点):

一般TFT的地址线只有1个RS. 以控制芯片的TFT为例.RS=0的时候一般是写命令,RS=1的时候是写数据,把TFT作为只有2个地址的存储器对待。

RS接到哪一个地址线都是可以的。假如RS接到A0,而片选为NE4,总线宽度8位。

那么可以定义

#define Bank1_SRAM4_ADDR ((u32)0x6C000000) #define LCD_DATA_ADDR (Bank1_SRAM4_ADDR + 1) #define LCD_CMD_ADDR (Bank1_SRAM4_ADDR + 0) 那么写命令数据就是直接往LCD_CMD_ADDR写数据:(假设cmd,data为16位,而我的TFT数据接口是8位) LCD_WRITE_CMD(unsigned short cmd) //写命令到TFT,16位要写2次

{ *(vu8*)LCD_CMD_ADDR=(cmd》》8);

*(vu8*)LCD_CMD_ADDR=(cmd);

}

写数据就是直接往LCD_DATA_ADDR写数据:

LCD_WRITE_DATA(unsigned short Data) //写数据到TFT

{ *(vu8*)LCD_DATA_ADDR=(Data》》8);

*(vu8*)LCD_DATA_ADDR=(Data); }

至于RD,WE,RS,CS信号都已经是FSMC控制器自动产生的,不用理会,不过当然是FSMC及GPIO初始化要正确。而RST信号还是需要通过操作GPIO来完成的。

这是最基本的2个操作。而那些什么设置X,Y,设置窗口,设置亮度,设置。。。。都是由这2个操作组合完成的。

72M HZ,320*240刷单色屏速度在 32fps左右.

来源:网络整理   作者:工程师3  2018/4/20 8:32:00
栏目: [ STM32单片机驱动LCD]

相关阅读

嵌入式开发:STM32 FSMC接口驱动TFT-LCD设计

STM32之FSMC驱动LCD屏应用

STM32单片机ILI9325系列TFT的驱动原理解析

STM32单片机对TFTLCD的驱动设计

基于STM32F4x9的LCD显示设计

基于STM32F4x9的LCD显示系统架构设计

基于STM32F4x9微处理器的LCD显示设计

STM32单片机对智能手机触摸屏的驱动

STM32F429 Discovery FMC驱动原子4.3寸LCD

STM32单片机的FSMC对TFT的驱动

基于STM32的FSMC接口驱动TFT彩屏的设计方案