(STM32番外篇)STM32 +TFT LCD 电阻液晶屏 原理与配置

今天来学习TFT  液晶屏  这里参考正点原子的教程

讲解顺序 1TFTLCD驱动原理

               2FSMC简介

               3源码讲解

                4历程测试

上面的原理图中 中间的原理图没有用     用的是左边的连接驱动芯片        最右边的是屏上对外接口是一个2*17排针脚

XPT2046是触摸屏的驱动    XPT2046左边接  TFT28    右边接TFT_LCD,由于不支持兼容性设计所以下图中的两个电阻未焊接,LEDA是背光由于没有焊接R4所以背光实际上是3.3V供电的

下面是背光控制电路4个电阻起到限流作用

下面看2.8寸TFT的接口说明

下面是TFTLCD 80并口驱动

接下来介绍一下   驱动时序 对于9341我们重点关注  它的读时序 和写时序

从下图可以看出  1.    读ID低电平脉宽(trdl)是45ns

                             2.   读ID高电平脉宽(trdh)是90ns

                            3.   读FM低电平脉宽(trdlfm)是355ns

                             4   读FM高电平脉宽(trdhfm)是90ns  先对来说对于9341来说在读数据时速度还是有点慢

当我们要配置FSMC的读时候就可以参考上面的四个时序

                     然后我们的  写控制低电平脉宽(表中的WRX的twrl是15ns)

                                          写控制高电平脉宽(表中的WRX的twrh也是15ns)    

                             

接下来哦们再来看一下我们的LCD驱动流程 ,这里大家注意正点原子所有的LCD 他们驱动流程从大方向都是一模一样的

1.硬复位

2.初始化序列

3设置坐标 (读点 、画点) 三步即可驱动LCD

一   硬复位

正点原子的所有开发板LCD的液晶都接到了 MCU的Rest上,具体的IO口定义要看你的硬件

二  初始化序列    很多人问是怎么写的,其实是厂家提供的   不同的LCD屏不同的厂商它的初始化序列都是不一样的,直接由厂家提供,直接搬过来用就可以了,不要在这里过多的纠结

三 画点 分3步走   1设置坐标

                            2写GRAM指令

                           3写颜色数据 就可以画一个点  画点配置完成后就可以显示图片文字等信息

读点也分3步走1.设置坐标

                       2读GRAM指令

                       3写颜色数据 就可以读出一个点  读出显示的内容

接下来介绍指令

前5位设置为蓝色    中间6位为绿色    末尾5位为蓝色  所以称为 RGB565  例如:0xf800 是纯红色 只有红色显示别的位都不显示

ILI9341  只有在读写GROM的时候是有效的其他的时候  都只是8位的 ILI9341的指令较多不一一介绍首先来看其中的0xD3指令

该指令用于读控制器的ID,是控制器型号的具体体现,例如我们的是9341 那么读出来的ID就是9341,我们可以根据这个ID执行不同的初始化,可以实现同一个代码兼容不同的  LCD控制器,可以兼容N种屏幕 4.8  6.0 7.0等,因此读取ID使程序的兼容性大大提高  0xD3指令用法

1.先发0xD3指令

高8位无效  WR的上升沿写指令,写完指令就在RD的上升沿读出4个参数

第一个参数无效

第二个参数是0

第三个参数是才是93

第四个参数是41 就组成了9341

接下来我们看一下 0x36指令 它是存储访问控制指令 这个指令非常重要 可以控制9341的读写方向   

就是在连续写GROM的时候 或者连续读GROM的时候 可以控制 GROM的指针增长方向,从而控制显示方式

先发指令0x36

再发参数

 D7 D6 D5这3个位就控制了 GROM 自增的8个方向

利用8个值控制8个方向 下表已经列出来了

这里举例来说一下  0x36的作用 

假设我们设置为 000的时候 就从屏幕的左上角开始写,如果不用设置坐标每次写都要重新设置坐标,这样不停的发设置坐标的函数很麻烦,所以就使用0x36指令来实现  指针方向的自增  

除了上面3位的使用外其他位的使用可以看9341的数据手册

接下来看列地址设置 0x2A  默认从左到右从上到下的扫描   代表下图中的x方向,是用来控制列地址的带了4个参数

前面两个参数是SC  后面两个参数是EC      

SC  和 EC    是列地址的起始值和结束值  sc必须小于 等于ec   小于239 因为9341的分辨率是240 一般在设置x坐标的时候我们只需要设置两个参数就可以了

我们只需要发送   指令

                             参数1

                             参数2

猜你喜欢

转载自blog.csdn.net/weixin_38787597/article/details/81587070