STM32F207触摸屏、LCD实验记录


触摸屏

电阻式触摸屏利用压力感应进行触点检测控制,需要直接应力接触,通过检测电阻来定位触摸位置。

电阻式:定位准确,单点触摸


四线电阻屏

有x极、y极,根据均匀分布的电场,触摸然后确定某点电压。

开始不知道斜率,需要校准,确定电压和坐标之间的函数关系。
校准参数保存在EEPROM(断电可保存),
每次重新上电系统初始化后读出来这个参数即可。

一般用三点触摸或者四点触摸检测。


电阻屏感应触摸后输出两个方向的电压,根据电压值来判断触摸点。所以还需要一个特定的触摸屏AD转换芯片来转换。



LCD


TFTLCD

TFT-LCD 即薄膜晶体管液晶显示器。

其英文全称为:Thin Film Transistor-Liquid Crystal Display。

TFT-LCD 与无源 TN-LCD、STN-LCD 的简单矩阵不同,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。


ALINETEK 2.8寸 TFTLCD

特点
  • 240*320分辨率
  • 16位真彩显示(65536色)
  • 自带电阻触摸屏
  • 自带背光电路

模块是3.3V供电的


这个是对外引出的接口

接口说明

16位80并口

  • LCD_CS :LCD片选信号
  • LCD_WR :LCD写读号
  • LCD_RD :LCD读信号
  • DB[17:1] : 16位双向数据线
  • LCD_RST :硬复位LCD信号
  • LCD_RS : 命令/数据标志 (0命令 1数据)
  • BL_CTR :背光控制信号
  • T_MISO/T_MOSI/T_CS/T_CLK,触摸屏接口信号


上面用来点亮LCD,下面是触摸屏相关的接口。


ALINETEK 2.8寸 TFTLCD 16位80并口驱动简介

模块的8080并口读/写的过程为:
先根据要写入/读取的数据的类型,设置RS为高(数据)/低(命令),然后拉低片选,选中ILI9341,接着我们根据是读数据还是要写数据置RD/WR为低,
然后

  • 读数据:在RD的上升沿,读取数据线上的数据
  • 写数据:在WR的上升沿,使数据写入到ILI9341里
ILI9341驱动时序


读ID低电平脉宽trdl 45纳秒
读ID高电平脉宽trdh 90纳秒
ID指的是LCD的ID号
读ID的时序最小是45和90纳秒


读FM低电平脉宽trdlfm 355纳秒
读FM高电平脉宽trdhfm 90纳秒
FM指帧缓存,即GRAM。
读FM的时候速度比较慢。

上面的读时序配置FSMC就行了


写LCD的速度比读快很多
写控制低电平脉宽(twrl) 15纳秒
写控制高电平脉宽(twrh) 15纳秒

TFTLCD驱动流程


LCD_RST和MCU的复位连在一起,节省了一个IO。
驱动之前必须硬复位。

初始化序列厂家提供。

RGB565

模块对外接口采用16位并口,颜色深度为16位,格式为RGB565
5位红 6位绿 5位蓝 这样的格式

ILI9341指令格式说明

指令都是8位的,高8位无效,且参数除了读写GRAM的时候是16位,其他操作参数都是8位的。

0XD3

读ID4的指令,用于读取LCD控制器的ID,(ID:LCD模块控制器的型号的具体体现,比如9341读出来就是9341)
同一个代码,可以根据ID不同,执行不同的LCD驱动初始化,以兼容不同的LCD屏幕。

0X36

该指令为存储访问控制指令,可以控制ILI9341存储器的读写方向,简单的说就是在连续读写GRAM的时候。可以控制GRAM指针的增长方向,从而控制显示方式(读GRAM也一样)。
就是用处就是先确定0,0坐标,然后就写GRAM就行了,不用再不停地设置坐标,就是写的时候一行一行从左到右从上到下写(控制位000的情况)。
还可以从左到右从下到上……

可以加速显示。

0X2A

该指令是列地址设置指令,在从左到右,从上到下的扫描方式下,该指令用于设置横坐标
带有SC和ES坐标值,列地址的起始值和结束值。SC必须小于等于EC。
0<=SC/EC<=239
如果EC没有变化,只要设置SC就行。

0X2B

该指令是页地址设置指令,从左到右从上到下的扫描方式下,该指令用于设置纵坐标。
0<=SP/EP<=319

0X2C

该指令是写GRAM指令,在发送该指令后,就可以往LCD的GRAM里面写入颜色数据了,该指令支持连续写(地址自动递增)

0X2E

该指令是读GRAM指令,用于读取ILI9341的显存(GRAM),同0X2C指令,该指令支持连续读(地址自动递增)


FSMC

FSMC,即灵活的静态存储控制器,能够与同步或异步存储器和16位PC存储器卡连接,STM32的FSMC接口支持包括SRAM、NAND FLASH、NOR FLASH和PSRAM等存储器。

实验里是将LCD当作外部SRAM的。

外部SRAM的控制一般有:
地址线A0~A25
数据线D0~D15
写信号WE 即WR
读信号OE 即RD
片选信号CS
如果SRAM支持字节控制,还有UB/LB信号

TFTLCD的信号有RS、D0~D15、WR、RD、CS、RST和BL等。
其中真正在操作LCD用到的只有RS、D0~D15、WR、RD和CS。
其操作时序和SRAM的控制完全类似,
唯一不同就是TFTLCD有RS信号,但是没有地址信号。

TFTLCD通过RS信号来决定传送的是数据还是命令,本质就是当作地址信号,这样就可以当作SRAM。
把数据和命令分开,其实就是对应SRAM操作的两个连续地址。
可以把TFTLCD当作一个SRAM来用,只不过这个SRAM有2个地址,这也是FSMC可以驱动LCD的原理。

NOR PSRAM外设接口

FSMC支持8/16/32位数据宽度,这里LCD是16位宽度的,设置的时候,选择16位宽就行了。FSMC的外部设备地址映像,STM32的FSMC将外部存储器划分为固定大小为256M字节的四个存储块。

STM32的FSMC存储块1用于驱动NOR FLASH/SRAM/PSRAM,被分为4个区,每个区管理64M字节空间,每个区都有独立的寄存器对所连接的存储器进行配置。存储块1的256M字节空间由28根地址线(HADDR[27:0])寻址。
这里HADDR,是内部AHB地址总线,其中HADDR[25:0]来自外部存储地址FSMC_A[25:0],而HADDR[26:27]对4个区进行寻址。



这里用模式A来驱动LCD(当SRAM用)

FSMC 寄存器

对于NOR FLASH/PSRAM控制器(存储块1),通过FSMC_BCRx、FSMC_BTRx和FSMC_BWTRx寄存器设置。
设置FSMC访问外部存储器的时序参数。






开发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值