打印
[其他ST产品]

STM32-TFTLCD显示

[复制链接]
楼主: 尽快回复过
手机看帖
扫描二维码
随时随地手机跟帖
21
尽快回复过|  楼主 | 2023-10-25 15:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
  3)通过函数将字符和数字显示到 TFTLCD 模块上。
                这一步则通过上图左侧的流程,即:设置坐标->写 GRAM 指令->写 GRAM 来实现,但是这个步骤,只是一个点的处理,我们要显示字符/数字,就必须要多次使用这个步骤,从而达到显示字符/数字的目标,所以需要设计一个函数来实现数字/字符的显示,之后调用该函数,就可以实现数字/字符的显示了。

使用特权

评论回复
22
尽快回复过|  楼主 | 2023-10-25 15:53 | 只看该作者
1.2.7 TFTLCD驱动指令简介
        模块对外接口采用16位并口,颜色深度为16位,格式为RGB565,关系如下图:

使用特权

评论回复
23
尽快回复过|  楼主 | 2023-10-25 15:53 | 只看该作者
  ILI9341所有的指令都是8位的(高8位无效),且参数除了读写GRAM的时候是16位,其他操作参数,都是8位的。ILI9341的指令很多,这里不一一介绍,仅介绍几个重要的指令,他们是:0XD3,0X36,0X2A,0X2B,0X2C,0X2E等6条指令。

使用特权

评论回复
24
尽快回复过|  楼主 | 2023-10-25 15:53 | 只看该作者
    1)0XD3指令:该指令为读ID4指令,用于读取LCD控制器的ID 。0XD3 指令后面跟了 4 个参数,最后 2 个参数,读出来是 0X93 和 0X41,刚好是控制器 ILI9341 的数字部分,从而,通过该指令,即可判别所用的 LCD 驱动器是什么型号,这样,我们的代码,就可以根据控制器的型号去执行对应驱动 IC 的初始化代码,从而兼容不同驱动 IC 的屏,使得一个代码支持多款 LCD。

使用特权

评论回复
25
尽快回复过|  楼主 | 2023-10-25 15:53 | 只看该作者

使用特权

评论回复
26
尽快回复过|  楼主 | 2023-10-25 15:54 | 只看该作者
   2)0X36指令:该指令为存储访问控制指令,可以控制ILI9341存储器的读写方向,简单的说,就是在连续写GRAM的时候,可以控制GRAM指针的增长方向,从而控制显示方式(读GRAM也是一样)。

使用特权

评论回复
27
尽快回复过|  楼主 | 2023-10-25 15:54 | 只看该作者

使用特权

评论回复
28
尽快回复过|  楼主 | 2023-10-25 15:54 | 只看该作者

使用特权

评论回复
29
尽快回复过|  楼主 | 2023-10-25 15:54 | 只看该作者
  0X36 指令后面,紧跟一个参数,主要关注: MY、 MX、 MV 这三个位,通过这三个位的设置,可以控制整个 ILI9341 的全部扫描方向。

使用特权

评论回复
30
尽快回复过|  楼主 | 2023-10-25 15:54 | 只看该作者

使用特权

评论回复
31
尽快回复过|  楼主 | 2023-10-25 15:55 | 只看该作者
在利用 ILI9341 显示内容的时候,就有很大灵活性了,比如显示 BMP 图片,BMP 解码数据,就是从图片的左下角开始,慢慢显示到右上角,如果设置 LCD 扫描方向为从左到右,从下到上,那么我们只需要设置一次坐标,然后就不停的往 LCD 填充颜色数据即可,这样可以大大提高显示速度。

使用特权

评论回复
32
尽快回复过|  楼主 | 2023-10-25 15:55 | 只看该作者
    3)0X2A指令:该指令是列地址设置指令,在从左到右,从上到下的扫描方式(默认)下面,该指令用于设置横坐标(x坐标)

使用特权

评论回复
33
尽快回复过|  楼主 | 2023-10-25 15:55 | 只看该作者
在默认扫描方式时,该指令用于设置x坐标,该指令带有4个参数,实际上是2个坐标值:SC和EC,即列地址的起始值和结束值,SC必须小于等于EC,且0≤SC/EC≤239。一般在设置x坐标的时候,我们只需要带2个参数即可,也就是设置SC即可,因为如果EC没有变化,我们只需要设置一次即可(在初始化ILI9341的时候设置),从而提高速度。

使用特权

评论回复
34
尽快回复过|  楼主 | 2023-10-25 15:56 | 只看该作者
   4)0X2B指令:该指令是页地址设置指令,在从左到右,从上到下的扫描方式(默认)下面,该指令用于设置纵坐标(y坐标)

使用特权

评论回复
35
尽快回复过|  楼主 | 2023-10-25 15:56 | 只看该作者
在默认扫描方式时,该指令用于设置y坐标,该指令带有4个参数,实际上是2个坐标值:SP和EP,即页地址的起始值和结束值,SP必须小于等于EP,且0≤SP/EP≤319。一般在设置y坐标的时候,我们只需要带2个参数即可,也就是设置SP即可,因为如果EP没有变化,我们只需要设置一次即可(在初始化ILI9341的时候设置),从而提高速度。

使用特权

评论回复
36
尽快回复过|  楼主 | 2023-10-25 15:56 | 只看该作者
     5)0X2C指令:该指令是写GRAM指令,在发送该指令之后,我们便可以往LCD的GRAM里面写入颜色数据了,该指令支持连续写 (地址自动递增)

使用特权

评论回复
37
尽快回复过|  楼主 | 2023-10-25 15:56 | 只看该作者
  在收到指令0X2C之后,数据有效位宽变为16位,我们可以连续写入LCD GRAM值,而GRAM的地址将根据MY/MX/MV设置的扫描方向进行自增。例如:假设设置的是从左到右,从上到下的扫描方式,那么设置好起始坐标(通过SC,SP设置)后,每写入一个颜色值,GRAM地址将会自动自增1(SC++),如果碰到EC,则回到SC,同时SP++,一直到坐标:EC,EP结束,其间无需再次设置的坐标,从而大大提高写入速度。

使用特权

评论回复
38
尽快回复过|  楼主 | 2023-10-25 15:56 | 只看该作者
       6)0X2E指令:该指令是读GRAM指令,用于读取ILI9341的显存(GRAM),同0X2C指令,该指令支持连续读 (地址自动递增)

使用特权

评论回复
39
尽快回复过|  楼主 | 2023-10-25 15:57 | 只看该作者
     ILI9341在收到该指令后,第一次输出的是dummy数据(无效),第二次开始,读取到的才是有效的GRAM数据(从坐标:SC,SP开始),输出规律为:每个颜色分量占8个位,一次输出2个颜色分量。比如:第一次输出是R1G1,随后的规律为:B1R2→G2B2→R3G3→B3R4→G4B4→R5G5... 以此类推。

使用特权

评论回复
40
尽快回复过|  楼主 | 2023-10-25 15:57 | 只看该作者
2 FSMC简介
2.1 FSMC介绍
        FSMC,即灵活的静态存储控制器,能够与同步或异步存储器和16位PC存储器卡连接,STM32的FSMC接口支持包括SRAM、NAND FLASH、NOR FLASH和PSRAM等存储器。FSMC的框图如下图所示:

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则