产品简介
本产品是 2寸IPS显示屏模块,分辨率为 240*320,使用 SPI 接口通信,LCD 带有内部控制器,已封装好基本函数,可以实现图片旋转、画点、线、圆、矩形,显示英文字符和中文字符,显示图片。
提供完善的配套树莓派例程(BCM2835 库,WiringPi 库,以及 python 例程),STM32 例程,Arduino 例程。
产品参数
- 工作电压:3.3V/5V
- 通信接口:SPI
- 屏幕类型:TFT
- 控制芯片:ST7789V
- 分辨率:240(V) x 320(H)RGB
- 显示尺寸:23.4(H)x 23.4(V)mm
- 像素大小:0.0975(H)x 0.0975(V)mm
- 产品尺寸:58 x 35(mm)
功能引脚
功能引脚 |
描述
|
VCC |
3.3V/5V电源正
|
GND |
电源地
|
DIN |
SPI数据输入
|
CLK |
SPI时钟输入
|
CS |
片选,低电平有效
|
DC |
数据/命令选择
|
RST |
复位
|
BL |
背光
|
硬件说明
LCD 及其控制器
该LCD支持12位,16位以及18位每像素的输入颜色格式,即RGB444,RGB565,RGB666三种颜色格式,本例程使用RGB565的颜色格式,这也是常用的RGB格式。
对于大部分的LCD控制器而言,都可以配置控制器的通信方式,通常都有8080并行接口、三线SPI、四线SPI等通信方式。此LCD使用四线SPI通信接口,这样可以大大的节省GPIO口,同时通信速度也会比较快。
通信协议

从上的得知使用的是4线SPI通信,查阅数据手册可以得到如下的通信时序图,以传输RGB556为例:
注:与传统的SPI协议不同的地方是:由于是只需要显示,故而将从机发往主机的数据线进行了隐藏。
RESX为复位,模块上电时拉低,通常情况下置1;
CSX为从机片选, 仅当CS为低电平时,芯片才会被使能。
D/CX为芯片的数据/命令控制引脚,当DC = 0时写命令,当DC = 1时写数据
SDA为传输的数据,即RGB数据;
SCL为SPI通信时钟。
对于SPI通信而言,数据是有传输时序的,即时钟相位(CPHA)与时钟极性(CPOL)的组合:
CPHA的高低决定串行同步时钟是在第一时钟跳变沿还是第二个时钟跳变沿数据被采集,当CPHL = 0,在第一个跳变沿进行数据采集;
CPOL的高低决定串行同步时钟的空闲状态电平,CPOL = 0,为低电平。
从图中可以看出,当SCLK第一个下降沿时开始传输数据,一个时钟周期传输8bit数据,使用SPI0,按位传输,高位在前,低位在后。
树莓派
提供C语言与python例程
开启SPI接口
sudo raspi-config
选择Interfacing Options -> SPI -> Yes 开启SPI接口

然后重启树莓派:
sudo reboot
请确保SPI没有被其他的设备占用,你可以在/boot/config.txt中间检查
安装库
- 安装BCM2835, 打开树莓派终端,并运行一下指令
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.60.tar.gz
tar zxvf bcm2835-1.60.tar.gz
cd bcm2835-1.60/
sudo ./configure
sudo make
sudo make check
sudo make install
# 更多的可以参考官网:http://www.airspayce.com/mikem/bcm2835/
sudo apt-get install wiringpi
#对于树莓派4B可能需要进行升级:
cd /tmp
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
gpio -v
# 运行gpio -v会出现2.52版本,如果没有出现说明安装出错
#Bullseye分支系统使用如下命令:
git clone https://github.com/WiringPi/WiringPi
cd WiringPi
./build
gpio -v
# 运行gpio -v会出现2.70版本,如果没有出现说明安装出错
sudo apt-get updata
sudo apt-get install python-pip
sudo pip install RPi.GPIO
sudo pip install spidev
sudo apt-get install python-imaging
sudo apt-get update
sudo apt-get install python3-pip
sudo pip3 install RPi.GPIO
sudo pip3 install spidev
sudo apt-get install python3-imaging
硬件连接

2inch LCD |
RPi引脚号 |
BCM
|
VCC |
5V |
5V
|
GND |
GND |
GND
|
DIN |
19 |
MOSI
|
CLK |
23 |
SCLK
|
CS |
24 |
CE0
|
DC |
22 |
P25
|
RST |
13 |
P27
|
BL |
12 |
P18
|
下载例程
在树莓派终端运行:
sudo apt-get install p7zip-full
wget http://www.waveshare.net/w/upload/1/19/2inch_LCD_Module_code.7z
7z x 2inch_LCD_Module_code.7z
sudo chmod 777 -R 2inch_LCD_Module_code
cd 2inch_LCD_Module_code/2inch_LCD_Module_code/RaspberryPi\&JetsonNano/
运行测试程序
cd c
make clean
make
sudo ./main
cd python/examples
sudo python main.py
预期效果
- 屏幕全部刷白
- 显示数字、英文和中文
- 画矩形框
- 画直线(对角线)
- 画5个空心圆
- 显示一张100X100的logo
- 显示一张240X320全屏图片
STM32
- 在产品百科界面下载程序,然后解压。STM32程序位于 ~/ STM32/…
- 打开STM32中的\XNUCLEO-F103RB\MDK-ARM\Demo.uvprojx,使用Keil uVision5打开。例程使用的是HAL库。测试使用的开发板为微雪XNUCLEO-F103RB,芯片为STM32F103RBT6,如需换芯片或者想使用标准库你只需要更改DEV_Config.c和.h即可,实现里面的函数和宏定义即可。换芯片也可以使用STM32CubeMX。
- 本例程使用的开发板为XNUCLEO-F103RB,程序是基于HAL库
硬件连接
2inch LCD |
XNUCLEO-F103RB
|
VCC |
5V
|
GND |
GND
|
DIN |
PA7
|
CLK |
PA5
|
CS |
PB6
|
DC |
PA8
|
RST |
PA9
|
BL |
PC7
|
预期效果
- 屏幕全部刷白
- 显示数字和英文
- 显示中文
- 画矩形框
- 画直线(对角线)
- 画5个空心圆
- 显示一张70X70的logo
Arduino
- 在产品百科界面下载程序,然后解压。Arduino程序位于 ~/Arduino UNO/…
- 把Arduino目录下的文件夹复制到Arduino安装目录的libraries下,一般是C:\Program Files (x86)\Arduino\libraries或者C:\Users\用户名\Documents\Arduino\libraries
- 打开Arduino IDE: 点击 File-> Example,查看是否有LCD_2inch选项,若有说明库导入成功,打开LCD_2inch
- 本例程使用的开发板为Arduino UNO
硬件连接
2inch LCD |
UNO PLUS
|
VCC |
5V
|
GND |
GND
|
DIN |
D11
|
CLK |
D13
|
CS |
D10
|
DC |
D7
|
RST |
D8
|
BL |
D9
|
预期效果
- 屏幕全部刷白
- 显示数字和英文
- 显示中文
- 画矩形框
- 画直线(对角线)
- 画5个空心圆
- 显示一张70X70的logo