ILI9341的使用之【三】ILI9341系统通信接口模式操作详解

《ILI9341的使用之【一】TFT-LCD原理(转载)》
《ILI9341的使用之【二】ILI9341介绍》
《ILI9341的使用之【三】ILI9341系统通信接口模式操作详解》
《ILI9341的使用之【四】RGB接口操作详解》
《ILI9341的使用之【五】命令一》
《ILI9341的使用之【六】命令二》
《ILI9341的使用之【七】实体面板案例-arduino 2.4inch TFT Touch Shield》
《ILI9341的使用之【八】ASCII字符显示及驱动分析》
《ILI9341的使用之【九】BG2312字库》

MCU系统接口共4类12种模式,具体内容及选择方式详见上一篇的4.1。这里不再累述。接下来对这12种模式的部分实现细节做进一步的解释。

一、系统通信接口之8080-I系列并行接口

ILI9341提供8080-I/808II的8位,9位,16位,18位的并行系统接口,和3、4线的串行系统接口用于串行数据的输入。以上接口的选择是靠IM[3:0]扩展引脚的设置。而像素颜色的数据的位次序由指令3Ah(Pixel Format Set)的DBI[2:0]参数设置。
在这里插入图片描述

1.1、8080-I Series Parallel interface

ILI9341可以通过MCU 8080-I系列并行接口(分别为8位/9位/16位/18位)的方式进行访问。
CSX(片选,LOW有效)被用来使能或禁止ILI9341芯片的功能。
RESX(LOW 有效)是一个外部复位信号。
WRX是并行数据的写选通。
RDX是并行数据的读选通。
数据总线D[17:0]是并行数据总线。
D/CX是数据或命令选择的信号,当D/CX=‘1’,D[17:0]上的内容是显示RAM数据或命令的参数。当D/CX='0’时,D[17:0]是 命令
当WRX信号处于上升沿时,ILI9341锁存输入数据。

8080-I 接口模式的选择,由引脚IM3=0决定,IM[2:0]则决定了总线的使用宽度。具体如下表:
在这里插入图片描述
上表中的8080 MCU 8-bit bus interface I 是本系列重点讲解的模式。

1.2、写时序

在一次写周期中,WRX信号完成一次从高到低,再从低到高。在写周期中,在WRX的上升沿到来时,显示模块获得主控制器送来的信息。在这其间主控必须已把信息写入总线中。当D/DX信号被设为低电平时,总线上的信息被理解为命令。当D/CX信号被设为高电平时,总线上的信息被理解为RAM数据或命令的参数。
在这里插入图片描述
下图为写操作的完整时序图,注意两次数据写D/CX的不同电平使D[17:0]总线上数据被解释成不同的含义。当片选信号CSX=‘H’时,所有信号变化都被忽略。
在这里插入图片描述

1.3、读操作时序

在一次读周期中,RDX信号完成一次从高到低,再从低到高。在读周期中,在RDX的上升沿到来时,主控制器获得显示模块送来的信息。在这其间显示模块须已把信息写入总线中。当D/DX信号被设为低电平时,总线上的信息被理解为命令。当D/CX信号被设为高电平时,总线上的信息被理解为RAM数据或命令的参数。
在这里插入图片描述
下图为读操作的完整时序图,注意只有当D/CX被拉高时,读数据才是有效的。如果在读周期中D/CX被拉低,则ILI9341引脚对外将出现高阻态。因此注意下面两次数据读的有效性。第一次读,此时CSX片选有效,D/CX拉高,此时ILI9341在总线上的数据是有效数据。第二次读周期,在RDX 上升沿到来前,CSX片选信号已无效。
在这里插入图片描述

1.4 8-bit 并行MCU接口

ILI9341r 8080-I系统的8-bit并行总线接口的使用是通过设置外部引脚IM[3:0]为“0000”实现。下面的图展示了MCU系统接口8080-I的例子:
在这里插入图片描述
不同的显示数据格式可用于下面列出的两种彩色深度。
-65K色,RGB5,6,5-bits 输入数据
-262K色,RGB6,6,6 -bits 输入数据

65K色:每像素16-bitt(RGB 5-6-5 bits 输入)
当3Ah指令设置寄存器DBI[2:0]值为“101”时, 一个像素(有三个子像素,即红绿兰三个点)显示数据由2个字节来传送。
在这里插入图片描述
262K色:每像素18位(RGB 6-6-6 bits 输入)
当3Ah指令设置寄存器DBI[2:0]值为“110”时,一个像素(3个子像素)的显示数据由3个字节来传送
在这里插入图片描述
(说明:由于硬件接口是8bits,而像素的RGB三色数据占的位数大于8。因此传送像素颜色数据就需要多字节对应表示一个像素的颜色数据。该对应关系的设置由指令3Ah-Pixel Format Set设置)

1.5 9位并行MCU接口

通过设置硬件引脚 IM[3:0]为“0010”,选择ILI9341的8080-I系统的9位并行总线接口。如下:
在这里插入图片描述
65K color: 16-bit/pixel (RGB 5-6-5 bits input)
当3Ah寄存器的DBI[2:0]位被设置为“101”,一个像素(三个子像素)的显示数据由两个单位(每单位9bit位)来传送:
在这里插入图片描述
262K color: 18-bit/pixel (RGB 6-6-6 bits input)
当3Ah寄存器的DBI[2:0]位设置为“110”,2个像素(6个子像素)的显示数据由4个单位(每单位9bit位)来传送
在这里插入图片描述
或:
在这里插入图片描述

1.6 16位并行MCU接口(省略)

1.7 18位并行MCU接口(省略)

1.8 6位并行RGB接口(省略)

二、系统通信接口之8080-II系列并行接口(省略)

三、系统通信接口之串行接口

3.1、串行接口概述

该接口的选择是由IM[3:0]完成的。下表详述:
在这里插入图片描述
ILI9341支持3线9位和4线8位的双向串行接口用于在主控与ILI9341之间通信。
3线串行模式由CSX(片选,LOW有效),SCL(串口时钟)、SDA或SDI/SDO(串行数据输入输出引脚,模式由IM3=0或1确定,具体见引脚说明)组成。
4线串行模式由D/CX(数据/命令选择)、CSX(片选)、SCL(时钟)、SDA或SDI/SDO(串行数据输入输出引脚,模式由IM3=0或1确定,具体见引脚说明)组成。
D[17:0]不使用时,必须连接到GND。串行时钟(SCL)仅用于单片机的接口,所以如果没有通信时时钟可以中止它。
在这里插入图片描述
在这里插入图片描述

3.2 写周期时序

接口的写模式意味着从主机写命令或数据到ILI9341。3线串行数据包包含了一个数据/命令选择位(D/CX)和一个传送字节。(注意,这里是一个数据/命令的选择位,是bit,不是前面所说到的D/CX引脚)。
如果D/CX位是 “low”,传送的字节就被理解为命令字节。如果D/CX位是“high”,这个传送的字节就被存储为显示数据或命令参数。
任何指令能以任意顺序被发送给ILI9341,并且最高有效位(MSB)选被发送。当CSX=‘high’时,串行接口被初始化。在这种状态下,SCL时钟脉冲和SDA数据都是无效的。一个CSX上的下降沿会使能串行接口,并且表明数据传送的开始。具体看下面详线的数据格式:
在这里插入图片描述
在这里插入图片描述
主机处理器驱动CSX引脚为低电平,并且在SDA线上设定D/CX位。这一位被ILI9341在SCL引脚 上的第一个上升沿读取。在紧接着的SCL引脚的下降沿,MSB(最高有效位)数据位(D7)被写到SDA上。在又紧接着的下降沿,D6位被写到SDA上。如果D/CX引脚有被使用,则一个读周期是8位一个字节的宽度。3或4线串行接口写时序详见下图:
在这里插入图片描述

3线的两种色彩深度

在这里插入图片描述
注意1:16位色深的像素数据。
注意2:最高有效位是:红色 4,绿色 5 兰色 4
注意3:最低有效位都是0
注意4:“-”号不去关心,代表能被设置成0或1

在这里插入图片描述
注意1:18位色深的像素数据。
注意2:最高有效位是:红色 5,绿色 5 兰色 5
注意3:最低有效位都是0
注意4:“-”号不去关心,代表能被设置成0或1
在这里插入图片描述

在这里插入图片描述

3.3 4线的两种色深

在这里插入图片描述
注意1:16位色深的像素数据。
注意2:最高有效位是:红色 4,绿色 5 兰色 4
注意3:最低有效位都是0
注意4:“-”号不去关心,代表能被设置成0或1

在这里插入图片描述
注意1:18位色深的像素数据。
注意2:最高有效位是:红色 5,绿色 5 兰色 5
注意3:最低有效位都是0
注意4:“-”号不去关心,代表能被设置成0或1
在这里插入图片描述

3.3、读周期时序

接口的读模式意味着主机从ILI9341读取寄存器的参数或显示数据。主机必须发送命令(读 ID 或读寄存器命令)然后接着有字节会被回传。ILI9341在SCL的上升沿锁住SDA上的输入数据,然后在SCL的下降沿移位SDA上的输出数据。
主机在读的命令发出后,SDA线必须设置为三态并且该状态转换不能迟于命令字的最后一位的下降沿。读模式有三种传输命令数据的类型,分别与8-/24-/32-bit三种数据类型对应的命令码。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ili9341是一种常见的液晶显示屏控制器,常用于嵌入式系统中。它可以通过STM32的HAL库来进行驱动。 首先,我们需要在STM32的HAL库中配置GPIO引脚,用于ILI9341的数据和控制信号。通常需要使用SPI接口进行通信,因此需要配置对应的SPI引脚,并初始化SPI外设。使用HAL库的函数,我们可以简单地设置GPIO引脚的模式、速度和中断等。 接下来,我们需要编写驱动代码以实现ILI9341与STM32之间的通信。HAL库中提供了一系列的SPI函数,可以用于发送和接收数据。通过配置控制寄存器和数据寄存器,我们可以向ILI9341发送命令和数据。 在ILI9341的初始化过程中,我们需要按照其数据手册所规定的步骤进行配置。例如,设置像素格式、方向、颜色模式等。还需要设置ILI9341的画布大小,以便正确显示图像。 一旦ILI9341完成初始化,我们就可以使用HAL库提供的函数来绘制图形、显示文本等操作。例如,可以使用HAL库的函数在屏幕上绘制点、直线、矩形、圆等图形。还可以使用HAL库的函数来显示文本,设置字体、大小和颜色等。 总之,通过使用STM32的HAL库驱动ILI9341,我们可以方便地控制并显示图像和文本。该库提供了一系列的函数,用于配置引脚、初始化SPI外设并实现与ILI9341的通信。这样,开发人员可以轻松地在嵌入式系统使用ILI9341,并实现各种复杂的显示功能。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骑牛唱剧本

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值