STM32之HAL开发——ILI9341液晶控制器

ILI9341液晶控制器简介

本液晶屏内部包含有一个液晶控制芯片ILI9341,它的内部结构非常复杂,如下图。该芯片最主核心部分是位于中间的GRAM(Graphics RAM),它就是显存。GRAM中每个存储单元都对应着液晶面板的一个像素点。它 右侧的各种模块共同作用把GRAM存储单元的数据转化成液晶面板的控制信号,使像素点呈 现特定的颜色,而像素点组合起来则成为一幅完整的图像。
框图的左上角为ILI9341的主要控制信号线和配置引脚,根据其不同状态设置可以使芯片工作在不同的模式,如每个像素点的位数是6、16还是18位;可配置使用SPI接口、8080接口还是RGB接口与MCU进行通讯。MCU通过SPI、8080接口或RGB接口与ILI9341进行通讯,从而访问它的控制寄存器(CR)、地址计数器(AC)、及GRAM。
在GRAM的左侧还有一个LED控制器(LED Controller)。LCD为非发光性的显示装置,它需要借助背光源才能达到显示功能,LED控制器就是用来控制液晶屏中的LED背光源。
在这里插入图片描述
图 1 ILI9341控制器内部框图

MCU-LCD屏与RGB-LCD屏的区别

MCU-LCD屏与RGB-LCD屏主要区别在于显存的位置:

  • RGB-LCD的显存是由系统内存充当的,因此其大小只受限于系统内存的大小,这样RGB-LCD可以做出较大尺寸,像现在4.3只能算入门级,而MID中7、10的屏都开始大量使用。
  • MCU-LCD的设计之初只要考虑单片机的内存较小,因此都是把显存内置在LCD模块内部。然后软件通过专门显示命令来更新显存,因此MCU屏往往不能做得很大。同时显示更新速度也比RGB-LCD慢。
    在这里插入图片描述在这里插入图片描述

MCU-LCD屏与RGB-LCD屏量示数据传输模式也有差别:

  • RGB屏只需显存组织好数据。启动显示后。LCD-DMA会自动把显存通过RGB接口送到LCM。
  • MCU屏则需要发送画点的命令来修改MCU内部RAM。(即不能直接MCU屏RAM)所以RGB显示速度明显比MCU快,而且播放视频方面,MCU-LCD也比较慢。
  • 对于RGB接口的LCM,主机输出的直接是每个象素的RGB数据,不需要进行变换(GAMMA校正等除外),对于这种接口,需要在主机部分有个LCD控制器,以产生RGB数据和点、行、帧同步信号。

也就是说,传统的MCU屏显示数据写入DDRAM,而RGB屏数据不写入DDRAM,直接写屏,读写速度更快。

液晶屏的信号线及8080时序

ILI9341控制器根据自身的IM[3:0]信号线电平决定它与MCU的通讯方式,它本身支持SPI及8080通讯方式,本示例 中液晶屏的ILI9341控制器在出厂前就已经按固定配置好(内部已连接硬件电路),它被配置为通过8080接口 通讯,使用16根数据线的RGB565格式。内部硬件电路连接完,剩下的其它信号线被引出到FPC排线,最后该 排线由PCB底板引出到排针,排针再与实验板上的STM32芯片连接,引出的排针信号线如下图。
在这里插入图片描述
图 2 液晶屏引出的信号线

液晶屏引出的信号线说明

信号线

ILI9341对应的信号线

说明

LCD_DB[15:0]

D[15:0]

数据信号

LCD_RD

RDX

读数据信号,低电平有效

LCD_RS

D/CX

数据/命令信号,高电平时,D[15:0]表示的是数据(RGB像素数据或命令数据),低电平时D[15:0]表示控制命令

LCD_RESET

RESX

复位信号,低电平有效

LCD_WR

WRX

写数据信号,低电平有效

LCD_CS

CSX

片选信号,低电平有效

LCD_BK

背光信号,低电平点亮

GPIO[5:1]

触摸屏的控制信号线

这些信号线即8080通讯接口,带X的表示低电平有效,STM32通过该接口与ILI9341芯片进行通讯,实现对液晶屏的控制。通讯的内容主 要包括命令和显存数据,显存数据即各个像素点的RGB565内容;命令是指对ILI9341的控制指令,MCU可通过8080接口发 送命令编码控制ILI9341的工作方式,例如复位指令、设置光标指令、睡眠模式指令等等,具体的指令在《ILI9341.pdf》数据手 册均有详细说明。写命令时序图见下图。
在这里插入图片描述
图 3 使用18条数据线的8080接口写命令时序

由图可知,写命令时序由片选信号CSX拉低开始,对数据/命令选择信号线D/CX也置低电平表示写入的是命令地址(可理 解为命令编码,如软件复位命令:0x01),以写信号WRX为低,读信号RDX为高表示数据传输方向为写入,同时,在数据线D[17:0](或D[15:0])输出命令地址,在第二个传输阶段传送的是命令的参数,所以D/CX要置高电平,表示写入的是命令数据,命令数据是某些指令带有的参数,如复位指令编码为0x01,它后面可以带一个参数,该参数表示多少秒后复位(实际的复位命令不含参数,此处只是为了讲解指令编码与参数的区别)。
当需要把像素数据写入GRAM时,过程很类似,把片选信号CSX拉低后,再把数据/命令选择信号线D/CX置为高 电平,这时由D[17:0]传输的数据则会被ILI9341保存至它的GRAM中。

STM32F401是一种高性能的微控制器,具有丰富的特性和强大的处理能力。它集成了SPI接口,它是一种高速串行通讯接口,常用于外围设备与微控制器之间的通信。 ILI9341是一款广泛应用于液晶显示屏的控制器芯片,它能够控制彩色TFT LCD显示屏的图形和文本。STM32F401与ILI9341之间使用SPI接口进行通信,实现从控制器到显示屏的数据传输。 StemWin1.2.0则是一款图形库软件包,可以在嵌入式系统中实现图形用户界面(GUI)。它为开发者提供了丰富的图形绘制和交互功能,例如按钮、文本框、图像等,可以为用户提供更好的操作体验。 在使用这些组件时,首先需要配置STM32F401的SPI接口。通过对SPI寄存器的设置,可以定义SPI的工作模式、速率、数据位宽等参数。然后,将ILI9341连接到STM32F401的SPI接口,并根据ILI9341的要求进行初始化和配置。通过SPI接口,STM32F401可以向ILI9341发送指令和数据,控制显示屏的输出。 接下来,可以利用StemWin1.2.0库来实现具体的UI界面。开发者可以使用StemWin提供的API函数,调用各种绘制函数、事件处理函数等,实现各种界面元素的绘制和交互。开发者还可以根据需要,自定义界面的布局、样式和动画效果。 通过以上的步骤,可以搭建一个基于STM32F401、ILI9341和StemWin1.2.0的嵌入式系统。这样的系统具有强大的处理能力、高速的数据传输速率和丰富的GUI功能,非常适合用于嵌入式应用领域,例如智能家居控制、工业自动化控制等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值