Difference between revisions of "Matrix - 2'8 SPI TFT/zh"
(30 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
− | [[Matrix - SPI TFT|English]] | + | [[Matrix - 2'8 SPI TFT|English]] |
==介绍== | ==介绍== | ||
− | [[File:Matrix- | + | [[File:Matrix-2'8_SPI_TFT.png|thumb|]] |
− | * | + | *Matrix - 2'8 SPI TFT模块是一款2.8英寸的TFT 触摸LCD,模块采用ST7789S驱动IC和XPT2046电阻式触摸IC,屏幕分辨率为320*240,采用SPI控制接口。 |
+ | *详细规格如下所示: | ||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | |LCD尺寸||2.8寸 | ||
+ | |- | ||
+ | |显示区域||57.6mm*43.2mm | ||
+ | |- | ||
+ | |驱动IC||ST7789S | ||
+ | |- | ||
+ | |分辨率||320*240(RGB) | ||
+ | |- | ||
+ | |接口方式||SPI | ||
+ | |- | ||
+ | |工作电压||5V | ||
+ | |- | ||
+ | |背光电压||5V | ||
+ | |- | ||
+ | |触摸屏类型||电阻式,钢化玻璃触摸屏 | ||
+ | |- | ||
+ | |} | ||
+ | |||
==特性== | ==特性== | ||
* PCB尺寸(mm): | * PCB尺寸(mm): | ||
− | [[File:Matrix- | + | [[File:Matrix-2'8_SPI_TFT_PCB.png|frameless|400px|]] |
* 引脚说明: | * 引脚说明: | ||
Line 13: | Line 34: | ||
|名称 || 描述 | |名称 || 描述 | ||
|- | |- | ||
− | | || | + | |GND || 地 |
|- | |- | ||
+ | |5V || 电源5V | ||
+ | |- | ||
+ | |LED_EN || 背光 | ||
+ | |- | ||
+ | |LCD_RESET || 复位 | ||
+ | |- | ||
+ | |LCD_D/C || LCD数据/命令选择 | ||
+ | |- | ||
+ | |LCD_CS || LCD片选 | ||
+ | |- | ||
+ | |SPICLK || SPI时钟 | ||
+ | |- | ||
+ | |SPIMOSI || SPI MOSI | ||
+ | |- | ||
+ | |SPIMISO || SPI MISO | ||
+ | |- | ||
+ | |T_CS || 触摸片选 | ||
+ | |- | ||
+ | |T_IRQ || 触摸中断 | ||
+ | |- | ||
|} | |} | ||
Line 20: | Line 61: | ||
==下载Matrix源码== | ==下载Matrix源码== | ||
− | + | Matrix配件相关的代码是完全开源的,统一由一个仓库进行管理:https://github.com/friendlyarm/matrix.git <br> | |
该仓库里不同的分支代表着Matrix配件所支持的不同开发板。<br> | 该仓库里不同的分支代表着Matrix配件所支持的不同开发板。<br> | ||
− | * | + | * nanopi分支用于支持NanoPi; |
− | * | + | * nanopi2分支用于支持NanoPi 2; |
− | * | + | * tiny4412分支用于支持Tiny4412; |
+ | * raspberrypi分支用于支持RaspberryPi; | ||
在主机PC上安装git,以Ubuntu14.04为例 | 在主机PC上安装git,以Ubuntu14.04为例 | ||
Line 33: | Line 75: | ||
克隆Matrix配件代码仓库 | 克隆Matrix配件代码仓库 | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | $ git clone | + | $ git clone https://github.com/friendlyarm/matrix.git |
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | 克隆完成后会得到一个名为matrix的目录,里面存放着所有Matrix配件的代码。 | |
+ | |||
+ | ==与NanoPi 2连接使用== | ||
+ | ===硬件连接=== | ||
+ | 参考下图连接模块Matrix-2'8_SPI_TFT和NanoPi 2:<br> | ||
+ | [[File:Matrix-2'8_SPI_TFT_nanopi2.jpg|frameless|600px|Matrix-2'8_SPI_TFT_nanopi2]] | ||
+ | |||
+ | 连接说明: | ||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | |Matrix-2'8_SPI_TFT || NanoPi 2 | ||
+ | |- | ||
+ | |GND || Pin6 | ||
+ | |- | ||
+ | |5V || Pin2 | ||
+ | |- | ||
+ | |LED_EN || Pin11 | ||
+ | |- | ||
+ | |LCD_RESET || Pin7 | ||
+ | |- | ||
+ | |LCD_D/C || Pin22 | ||
+ | |- | ||
+ | |LCD_CS || Pin24 | ||
+ | |- | ||
+ | |SPICLK || Pin23 | ||
+ | |- | ||
+ | |SPIMOSI || Pin19 | ||
+ | |- | ||
+ | |SPIMISO || Pin21 | ||
+ | |- | ||
+ | |T_CS || Pin26 | ||
+ | |- | ||
+ | |T_IRQ || Pin18 | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | ===编译测试程序=== | ||
+ | 进入Matrix代码仓库,切换到nanopi2分支 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | $ cd matrix | ||
+ | $ git checkout nanopi2 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 编译Matrix配件代码 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | $ make CROSS_COMPILE=arm-linux- clean | ||
+ | $ make CROSS_COMPILE=arm-linux- | ||
+ | $ make CROSS_COMPILE=arm-linux- install | ||
+ | </syntaxhighlight> | ||
+ | 注意:请确保你的主机PC当前使用的交叉编译器为NanoPi 2配套的arm-linux-gcc-4.9.3。<br> | ||
+ | 编译成功后库文件位于install/lib目录下,测试程序位于install/usr/bin目录下,硬件驱动模块位于modules目录。<br> | ||
+ | 硬件驱动模块位于modules目录下,对应的驱动源码都包含在在NanoPi 2的Linux内核仓库里:https://github.com/friendlyarm/linux-3.4.y.git <br> | ||
+ | |||
+ | ===加载驱动程序=== | ||
+ | 将带有Debian系统的SD卡插入一台运行Linux的电脑,可以挂载SD卡上的boot和rootfs分区。<br> | ||
+ | 假设rootfs分区的挂载路径为/media/rootfs,执行以下命令将Matrix的硬件驱动、库文件和测试程序拷贝到NanoPi 2的文件系统上。<br> | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | $ cp modules /media/rootfs/ -r | ||
+ | $ cp install/lib/* /media/rootfs/lib/ -d | ||
+ | $ cp install/usr/bin/* /media/rootfs/usr/bin/ | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 将SD卡重新插入NanoPi 2,上电启动,在Debian的shell终端中执行以下命令加载硬件驱动。<br> | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | $ cd /modules | ||
+ | $ insmod fbtft_device.ko name=matrix-st7789s gpios=dc:97,reset:60,cs:94 | ||
+ | $ insmod matrix_ads7846.ko | ||
+ | </syntaxhighlight> | ||
+ | fbtft_device是LCD驱动,成功加载驱动后,可以看到LCD被清屏,matrix_ads7846是触摸驱动。<br> | ||
+ | |||
+ | ===测试LCD显示=== | ||
+ | 切换到root账户,后续的操作都需要使用root账户。<br> | ||
+ | 执行以下命令选择模块Matrix-2'8_SPI_TFT作为桌面显示设备: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | $ FRAMEBUFFER=/dev/fb-st7789s startx & | ||
+ | </syntaxhighlight> | ||
+ | &表示让其在后台运行,稍等一会,可以看到类似下面的打印信息:<br> | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | Log file: "/var/log/Xorg.2.log" | ||
+ | </syntaxhighlight> | ||
+ | 表明X窗口进程的环境变量DISPLAY=2,请根据实际打印信息确定DISPLAY的值。<br> | ||
+ | |||
+ | ===触摸校准=== | ||
+ | 执行以下命令进行触摸校准: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | $ DISPLAY=:2.0 xinput_calibrator --device "ADS7846 Touchscreen" | ||
+ | </syntaxhighlight> | ||
+ | 用触摸笔在屏幕上点击4个点即可完成校准,完成校准后会有类似如下的打印信息: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | Section "InputClass" | ||
+ | Identifier "calibration" | ||
+ | MatchProduct "ADS7846 Touchscreen" | ||
+ | Option "Calibration" "196 3825 3887 358" | ||
+ | Option "SwapAxes" "0" | ||
+ | EndSection | ||
+ | </syntaxhighlight> | ||
+ | 将上述内容手动保存在/usr/share/X11/xorg.conf.d/99-calibration.conf中,以后就再也无需进行校准了。 | ||
==与NanoPi连接使用== | ==与NanoPi连接使用== | ||
Line 52: | Line 190: | ||
===硬件连接=== | ===硬件连接=== | ||
− | 参考下图连接模块Matrix- | + | 参考下图连接模块Matrix-2'8_SPI_TFT和NanoPi <br> |
− | [[File:Matrix- | + | [[File:Matrix-2'8_SPI_TFT_nanopi.jpg|frameless|600px|Matrix-2'8_SPI_TFT_nanopi]] |
连接说明: | 连接说明: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
− | |Matrix- | + | |Matrix-2'8_SPI_TFT || NanoPi |
+ | |- | ||
+ | |GND || Pin6 | ||
+ | |- | ||
+ | |5V || Pin2 | ||
+ | |- | ||
+ | |LED_EN || Pin1 | ||
+ | |- | ||
+ | |LCD_RESET || Pin7 | ||
+ | |- | ||
+ | |LCD_D/C || Pin11 | ||
+ | |- | ||
+ | |LCD_CS || Pin12 | ||
+ | |- | ||
+ | |SPICLK || Pin23 | ||
+ | |- | ||
+ | |SPIMOSI || Pin19 | ||
+ | |- | ||
+ | |SPIMISO || | ||
|- | |- | ||
− | | | + | |T_CS || |
|- | |- | ||
+ | |T_IRQ || | ||
+ | |- | ||
|} | |} | ||
Line 77: | Line 235: | ||
$ apt-get update | $ apt-get update | ||
$ apt-get install qtembedded | $ apt-get install qtembedded | ||
− | $ apt-get install matrix-tslib | + | $ apt-get install matrix-tslib |
</syntaxhighlight> | </syntaxhighlight> | ||
qtembedded是qt相关的库,matrix-tslib则用于触摸屏校准。 | qtembedded是qt相关的库,matrix-tslib则用于触摸屏校准。 |
Latest revision as of 08:20, 6 January 2016
Contents
1 介绍
- Matrix - 2'8 SPI TFT模块是一款2.8英寸的TFT 触摸LCD,模块采用ST7789S驱动IC和XPT2046电阻式触摸IC,屏幕分辨率为320*240,采用SPI控制接口。
- 详细规格如下所示:
LCD尺寸 | 2.8寸 |
显示区域 | 57.6mm*43.2mm |
驱动IC | ST7789S |
分辨率 | 320*240(RGB) |
接口方式 | SPI |
工作电压 | 5V |
背光电压 | 5V |
触摸屏类型 | 电阻式,钢化玻璃触摸屏 |
2 特性
- PCB尺寸(mm):
File:Matrix-2'8 SPI TFT PCB.png
- 引脚说明:
名称 | 描述 |
GND | 地 |
5V | 电源5V |
LED_EN | 背光 |
LCD_RESET | 复位 |
LCD_D/C | LCD数据/命令选择 |
LCD_CS | LCD片选 |
SPICLK | SPI时钟 |
SPIMOSI | SPI MOSI |
SPIMISO | SPI MISO |
T_CS | 触摸片选 |
T_IRQ | 触摸中断 |
3 工作原理
4 下载Matrix源码
Matrix配件相关的代码是完全开源的,统一由一个仓库进行管理:https://github.com/friendlyarm/matrix.git
该仓库里不同的分支代表着Matrix配件所支持的不同开发板。
- nanopi分支用于支持NanoPi;
- nanopi2分支用于支持NanoPi 2;
- tiny4412分支用于支持Tiny4412;
- raspberrypi分支用于支持RaspberryPi;
在主机PC上安装git,以Ubuntu14.04为例
$ sudo apt-get install git
克隆Matrix配件代码仓库
$ git clone https://github.com/friendlyarm/matrix.git
克隆完成后会得到一个名为matrix的目录,里面存放着所有Matrix配件的代码。
5 与NanoPi 2连接使用
5.1 硬件连接
参考下图连接模块Matrix-2'8_SPI_TFT和NanoPi 2:
Matrix-2'8_SPI_TFT_nanopi2
连接说明:
Matrix-2'8_SPI_TFT | NanoPi 2 |
GND | Pin6 |
5V | Pin2 |
LED_EN | Pin11 |
LCD_RESET | Pin7 |
LCD_D/C | Pin22 |
LCD_CS | Pin24 |
SPICLK | Pin23 |
SPIMOSI | Pin19 |
SPIMISO | Pin21 |
T_CS | Pin26 |
T_IRQ | Pin18 |
5.2 编译测试程序
进入Matrix代码仓库,切换到nanopi2分支
$ cd matrix $ git checkout nanopi2
编译Matrix配件代码
$ make CROSS_COMPILE=arm-linux- clean $ make CROSS_COMPILE=arm-linux- $ make CROSS_COMPILE=arm-linux- install
注意:请确保你的主机PC当前使用的交叉编译器为NanoPi 2配套的arm-linux-gcc-4.9.3。
编译成功后库文件位于install/lib目录下,测试程序位于install/usr/bin目录下,硬件驱动模块位于modules目录。
硬件驱动模块位于modules目录下,对应的驱动源码都包含在在NanoPi 2的Linux内核仓库里:https://github.com/friendlyarm/linux-3.4.y.git
5.3 加载驱动程序
将带有Debian系统的SD卡插入一台运行Linux的电脑,可以挂载SD卡上的boot和rootfs分区。
假设rootfs分区的挂载路径为/media/rootfs,执行以下命令将Matrix的硬件驱动、库文件和测试程序拷贝到NanoPi 2的文件系统上。
$ cp modules /media/rootfs/ -r $ cp install/lib/* /media/rootfs/lib/ -d $ cp install/usr/bin/* /media/rootfs/usr/bin/
将SD卡重新插入NanoPi 2,上电启动,在Debian的shell终端中执行以下命令加载硬件驱动。
$ cd /modules $ insmod fbtft_device.ko name=matrix-st7789s gpios=dc:97,reset:60,cs:94 $ insmod matrix_ads7846.ko
fbtft_device是LCD驱动,成功加载驱动后,可以看到LCD被清屏,matrix_ads7846是触摸驱动。
5.4 测试LCD显示
切换到root账户,后续的操作都需要使用root账户。
执行以下命令选择模块Matrix-2'8_SPI_TFT作为桌面显示设备:
$ FRAMEBUFFER=/dev/fb-st7789s startx &
&表示让其在后台运行,稍等一会,可以看到类似下面的打印信息:
Log file: "/var/log/Xorg.2.log"
表明X窗口进程的环境变量DISPLAY=2,请根据实际打印信息确定DISPLAY的值。
5.5 触摸校准
执行以下命令进行触摸校准:
$ DISPLAY=:2.0 xinput_calibrator --device "ADS7846 Touchscreen"
用触摸笔在屏幕上点击4个点即可完成校准,完成校准后会有类似如下的打印信息:
Section "InputClass" Identifier "calibration" MatchProduct "ADS7846 Touchscreen" Option "Calibration" "196 3825 3887 358" Option "SwapAxes" "0" EndSection
将上述内容手动保存在/usr/share/X11/xorg.conf.d/99-calibration.conf中,以后就再也无需进行校准了。
6 与NanoPi连接使用
6.1 准备工作
在NanoPi上运行Debian系统,然后在主机PC上安装并使用相应的编译器。参考wiki:NanoPi
注意:必须使用nanopi-v4.1.y-matrix分支编译出来的内核。
下载NanoPi内核源代码并编译
$ git clone https://github.com/friendlyarm/linux-4.x.y.git $ cd linux-4.x.y $ git checkout nanopi-v4.1.y-matrix $ make nanopi_defconfig $ touch .scmversion $ make
6.2 硬件连接
参考下图连接模块Matrix-2'8_SPI_TFT和NanoPi
Matrix-2'8_SPI_TFT_nanopi
连接说明:
Matrix-2'8_SPI_TFT | NanoPi |
GND | Pin6 |
5V | Pin2 |
LED_EN | Pin1 |
LCD_RESET | Pin7 |
LCD_D/C | Pin11 |
LCD_CS | Pin12 |
SPICLK | Pin23 |
SPIMOSI | Pin19 |
SPIMISO | |
T_CS | |
T_IRQ |
6.3 加载驱动模块
启动NanoPi,在其Debian的shell终端上加载芯片对应的驱动模块
$ modprobe fbtft_device name=matrix-spi_tft gpios=dc:161,reset:162,cs:163 $ modprobe matrix_ads7846
模块fbtft_device是芯片ili9341的驱动,模块matrix_ads7846是芯片xpt2046的驱动
6.4 安装软件包
在NanoPi的shell终端上安装软件包qtembedded和matrix-tslib
$ apt-get update $ apt-get install qtembedded $ apt-get install matrix-tslib
qtembedded是qt相关的库,matrix-tslib则用于触摸屏校准。
6.5 运行测试程序
启动Qt应用程序
$ . /usr/bin/matrix-setqt4env $ /usr/local/Trolltech/QtEmbedded-4.8.5-arm/examples/tetrix -qws
matrix-setqt4env用于设置环境变量,第一次运行该脚本时,会出现触摸校准的界面,根据提示点击5个点后完成校准。 tetrix是一个qt4编写俄罗斯方块小游戏,点击start按钮后就可以开始娱乐了。