历史上的今天
今天是:2025年06月03日(星期二)
2018年06月03日 | STM32-TFT-LCD触摸屏以及FSMC基础
2018-06-03 来源:eefocus
TFT-LCD 即薄膜晶体管液晶显示器。它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管(TFT) ,可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。TFT-LCD 也被叫做真彩液晶显示器。
TFT-LCD模块的引脚说明
引脚介绍
LCD_CS是TFTLCD的片选信号
LCD_RS是命令和数据的标志 (0,读写命令。1是写命令)
LCD_WR是向TFTLCD写入数据
LCD_RD是从TFTLCD读取数据
D[17-1]是数据16位双向数据线
RST是硬复位的标志
BL_CTR背光处理信号
lT_MISO/T_MOSI/T_PEN/T_CS/T_CLK,触摸屏接口信号
模块的8080并口读/写的过程为
先根据要写入/读取的数据的类型,设置RS为高(数据)/低(命令),然后拉低片选,选中ILI9341,接着我们根据是读数据,还是要写数据置RD/WR为低,然后:
1.读数据:在RD的上升沿,读取数据线上的数据(D[15:0]);
2.写数据:在WR的上升沿,使数据写入到ILI9341里面
FSMC基础知识
FSMC,即灵活的静态存储控制器,能够与同步或异步存储器和 16 位 PC 存储器卡连接,STM32 的 FSMC 接口支持包括 SRAM、NAND FLASH、NOR FLASH 和 PSRAM 等存储器。大容量,且引脚数在 100 脚以上的 STM32F103 芯片都带有 FSMC 接口。
STM32 的 FSMC 将外部设备分为 3 类:NOR/PSRAM 设备、NAND设备、PC 卡设备。
把TFTLCD当做SRAM来用的原因
外部 SRAM 的控制一般有: 地址线 (如 A0~A18) 、 数据线 (如 D0~D15) 、 写信号 (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 信号,但是没有地址信号。TFTLCD 通过 RS 信号来决定传送的数据是数据还是命令,本质上可以理解为一个地址信号,比如我们把 RS 接在 A0 上面,那么当 FSMC 控制器写地址 0 的时候,会使得 A0 变为 0,对 TFTLCD 来说,就是写命令。而 FSMC 写地址 1 的时候,A0 将会变为 1,对 TFTLCD 来说,就是写数据了。这样,就把数据和命令区分开了,他们其实就是对应 SRAM 操作的两个连续地
址。
史海拾趣
|
Wince下如何使用CreateDIBSection第四个参数返回的指针 我在Wince下打开了一张图片并且成功截取了图片 保存截图 使用CreateDIBSection大概如下(我那个也差不多是这样子,因为程序我没有拿回来): hBitmap=CreateDIBSection(hDc,(BITMAPINFO *)lpImgData,DIB_RGB_COLORS, &n ...… 查看全部问答> |
|
int rc = _sqlite3_open(_T(\"存储卡\\\\123.db\"), &m_db); if ( rc != SQLITE_OK ) { ASSERT(FALSE); } 打开不成功,如果是英文目录就没有问题!… 查看全部问答> |
|
我的6410裸奔已经起来了 牛人给的的一个简单的BOOT 代码已经可以在DDR里面运行 但是我没有设置变量创建的地址在哪 那6410是自动在内部8K的SRAM创建变量呢 等到满了8K ...… 查看全部问答> |
|
config.status: error: cannot find input file: config.h.in [root@localhost ntop-3.2]# make cd . && /bin/sh ./missing --run echo cd && /bin/sh /ntop-3.2/config.status config.h config.status: creating config.h config.status: error: cannot find input file: config.h.in make: * ...… 查看全部问答> |
|
最近在搞omap-l138 DDR2驱动,DDR芯片是:FMD4A16LCx–30A,遇到问题卡住了。问题是这样的: 发现DDR在操作时,会刷新数据也会变。 测试伪代码: for(i = 0; i <length;i++) { p = ddr_addrbase ...… 查看全部问答> |
|
为什么我的ADC12MEM0寄存器读出来最大值是255 #include unsigned char i=0,qianwei=0,baiwei=0,shiwei=0,gewei=0; #include \"1602.c\" unsigned int a[32]; unsigned int sum=0; unsigned int temp=0; void main() { &n ...… 查看全部问答> |
|
从单片机到ARM9 参与Helper2416开发板助学计划心得 在ARM9之前学习过51、MSP430、STM32,从8位到16位再到32位的单片机,每一次的跨越无疑都是一次挑战。其中最明显的就是使用单片机实现某一相同的功能需要配置的寄存器越来越多。 ...… 查看全部问答> |




