|
|
Line 63: |
Line 63: |
| |} | | |} |
| | | |
− | ==工作原理==
| |
| | | |
− | ==下载Matrix源码== | + | ==硬件连接== |
− | Matrix配件相关的代码是完全开源的,统一由一个仓库进行管理:https://github.com/friendlyarm/matrix.git <br>
| + | ===连接NanoPi M1=== |
− | 该仓库里不同的分支代表着Matrix配件所支持的不同开发板。<br>
| + | 参考下图连接模块:<br> |
− | * nanopi分支用于支持NanoPi;
| + | [[File:Matrix-2'8_SPI_Key_TFT_nanopi_m1.jpg|frameless|600px|Matrix-2'8_SPI_Key_TFT_nanopi_m1]] |
− | * nanopi2分支用于支持NanoPi 2;
| + | |
− | * tiny4412分支用于支持Tiny4412;
| + | |
− | * raspberrypi分支用于支持RaspberryPi;
| + | |
| | | |
− | 在主机PC上安装git,以Ubuntu14.04为例
| + | ===连接NanoPi 2=== |
− | <syntaxhighlight lang="bash"> | + | 参考下图连接模块:<br> |
− | $ sudo apt-get install git
| + | [[File:Matrix-2'8_SPI_Key_TFT_nanopi2.jpg|frameless|600px|Matrix-2'8_SPI_Key_TFT_nanopi2]] |
− | </syntaxhighlight>
| + | |
| + | ===连接NanoPi M2 / NanoPi 2 Fire=== |
| + | NanoPi M2和NanoPi 2 Fire的40 Pin引脚定义是一模一样的,所以它们操作Matrix配件的步骤是一样的,这里仅以NanoPi M2为例。<br> |
| + | 参考下图连接模块:<br> |
| + | [[File:Matrix-2'8_SPI_Key_TFT_nanopi_m2.jpg|frameless|600px|Matrix-2'8_SPI_Key_TFT_nanopi_m2]] |
| | | |
− | 克隆Matrix配件代码仓库
| + | ==编译运行测试程序== |
| + | 启动开发板并运行Debian系统,进入系统后克隆Matrix代码仓库: |
| <syntaxhighlight lang="bash"> | | <syntaxhighlight lang="bash"> |
| + | $ apt-get update && apt-get install git |
| $ git clone https://github.com/friendlyarm/matrix.git | | $ git clone https://github.com/friendlyarm/matrix.git |
| </syntaxhighlight> | | </syntaxhighlight> |
− | 克隆完成后会得到一个名为matrix的目录,里面存放着所有Matrix配件的代码。
| + | 克隆完成后会得到一个名为matrix的目录。 |
| | | |
− | ==与NanoPi 2连接使用==
| + | 编译并安装Matrix: |
− | ===硬件连接===
| + | |
− | 参考下图连接模块Matrix-2'8_SPI_Key_TFT和NanoPi 2:<br>
| + | |
− | [[File:Matrix-2'8_SPI_Key_TFT_nanopi2.jpg|frameless|600px|Matrix-2'8_SPI_Key_TFT_nanopi2]]
| + | |
− | | + | |
− | 连接说明:
| + | |
− | {| class="wikitable"
| + | |
− | |-
| + | |
− | |Matrix-2'8_SPI_Key_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"> | | <syntaxhighlight lang="bash"> |
| $ cd matrix | | $ cd matrix |
− | $ git checkout nanopi2 | + | $ make && make install |
| </syntaxhighlight> | | </syntaxhighlight> |
| | | |
− | 编译Matrix配件代码
| + | 运行测试程序: |
| <syntaxhighlight lang="bash"> | | <syntaxhighlight lang="bash"> |
− | $ make CROSS_COMPILE=arm-linux- clean
| + | cd matrix/demo/nanopi-status |
− | $ make CROSS_COMPILE=arm-linux-
| + | ./build.sh |
− | $ make CROSS_COMPILE=arm-linux- install
| + | ./run.sh /dev/fb-st7789s |
| </syntaxhighlight> | | </syntaxhighlight> |
− | 注意:请确保你的主机PC当前使用的交叉编译器为NanoPi 2配套的arm-linux-gcc-4.9.3。<br>
| + | 程序会显示出系统的基本信息,效果如下:<br> |
− | 编译成功后库文件位于install/lib目录下,测试程序位于install/usr/bin目录下,硬件驱动模块位于modules目录。<br>
| + | [[File:st7789s-status.pnc|frameless|600px|st7789s-status]] |
− | 硬件驱动模块位于modules目录下,对应的驱动源码都包含在在NanoPi 2的Linux内核仓库里:https://github.com/friendlyarm/linux-3.4.y.git <br>
| + | |
| | | |
| + | ==使用2.8寸屏显示Debian桌面== |
| ===加载驱动程序=== | | ===加载驱动程序=== |
− | 将带有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> | | 将SD卡重新插入NanoPi 2,上电启动,在Debian的shell终端中执行以下命令加载硬件驱动。<br> |
| <syntaxhighlight lang="bash"> | | <syntaxhighlight lang="bash"> |
Line 179: |
Line 138: |
| </syntaxhighlight> | | </syntaxhighlight> |
| 将上述内容手动保存在/usr/share/X11/xorg.conf.d/99-calibration.conf中,以后就再也无需进行校准了。 | | 将上述内容手动保存在/usr/share/X11/xorg.conf.d/99-calibration.conf中,以后就再也无需进行校准了。 |
− |
| |
− | ==与NanoPi 2 Fire连接使用==
| |
− | ===硬件连接===
| |
− | 参考下图连接模块Matrix-2'8_SPI_Key_TFT和NanoPi 2 Fire:<br>
| |
− | [[File:Matrix-2'8_SPI_Key_TFT_nanopi2.jpg|frameless|600px|Matrix-2'8_SPI_Key_TFT_nanopi2_Fire]]
| |
− |
| |
− | 连接说明:
| |
− | {| class="wikitable"
| |
− | |-
| |
− | |Matrix-2'8_SPI_Key_TFT || NanoPi 2 Fire
| |
− | |-
| |
− | |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 Fire分支
| |
− | <syntaxhighlight lang="bash">
| |
− | $ cd matrix
| |
− | $ git checkout nanopi2_Fire
| |
− | </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_Fire_的文件系统上。<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_Fire,上电启动,在Debian的shell终端中执行以下命令加载硬件驱动。<br>
| |
− | <syntaxhighlight lang="bash">
| |
− | $ cd /modules
| |
− | $ insmod fbtft_device.ko name=matrix-st7789s gpios=dc:60,reset:104,cs:58
| |
− | $ insmod matrix_ads7846.ko
| |
− | </syntaxhighlight>
| |
− | fbtft_device是LCD驱动,成功加载驱动后,可以看到LCD被清屏,matrix_ads7846是触摸驱动。<br>
| |
− |
| |
− | ===测试LCD显示===
| |
− | 切换到root账户,后续的操作都需要使用root账户。<br>
| |
− | 执行以下命令选择模块Matrix-2'8_SPI_Key_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 M2连接使用==
| |
− | ===硬件连接===
| |
− | 参考下图连接模块Matrix-2'8_SPI_Key_TFT和NanoPi M2:<br>
| |
− | [[File:Matrix-2'8_SPI_Key_TFT_nanopi2.jpg|frameless|600px|Matrix-2'8_SPI_Key_TFT_nanopi2_Fire]]
| |
− |
| |
− | 连接说明:
| |
− | {| class="wikitable"
| |
− | |-
| |
− | |Matrix-2'8_SPI_Key_TFT || NanoPi M2
| |
− | |-
| |
− | |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代码仓库,切换到nanopi M2分支
| |
− | <syntaxhighlight lang="bash">
| |
− | $ cd matrix
| |
− | $ git checkout nanopi_M2
| |
− | </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_M2的文件系统上。<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_M2,上电启动,在Debian的shell终端中执行以下命令加载硬件驱动。<br>
| |
− | <syntaxhighlight lang="bash">
| |
− | $ cd /modules
| |
− | $ insmod fbtft_device.ko name=matrix-st7789s gpios=dc:60,reset:104,cs:58
| |
− | $ insmod matrix_ads7846.ko
| |
− | </syntaxhighlight>
| |
− | fbtft_device是LCD驱动,成功加载驱动后,可以看到LCD被清屏,matrix_ads7846是触摸驱动。<br>
| |
− |
| |
− | ===测试LCD显示===
| |
− | 切换到root账户,后续的操作都需要使用root账户。<br>
| |
− | 执行以下命令选择模块Matrix-2'8_SPI_Key_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上运行Debian系统,然后在主机PC上安装并使用相应的编译器。参考wiki:[[NanoPi/zh|NanoPi]] <br>
| |
− | 注意:必须使用nanopi-v4.1.y-matrix分支编译出来的内核。<br>
| |
− | 下载NanoPi内核源代码并编译
| |
− | <syntaxhighlight lang="bash">
| |
− | $ 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
| |
− | </syntaxhighlight>
| |
− |
| |
− | ===硬件连接===
| |
− | 参考下图连接模块Matrix-2'8_SPI_Key_TFT和NanoPi <br>
| |
− | [[File:Matrix-2'8_SPI_Key_TFT_nanopi.jpg|frameless|600px|Matrix-2'8_SPI_Key_TFT_nanopi]]
| |
− |
| |
− | 连接说明:
| |
− | {| class="wikitable"
| |
− | |-
| |
− | |Matrix-2'8_SPI_Key_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 ||
| |
− | |-
| |
− | |}
| |
− |
| |
− | ===加载驱动模块===
| |
− | 启动NanoPi,在其Debian的shell终端上加载芯片对应的驱动模块
| |
− | <syntaxhighlight lang="bash">
| |
− | $ modprobe fbtft_device name=matrix-spi_tft gpios=dc:161,reset:162,cs:163
| |
− | $ modprobe matrix_ads7846
| |
− | </syntaxhighlight>
| |
− | 模块fbtft_device是芯片ili9341的驱动,模块matrix_ads7846是芯片xpt2046的驱动
| |
− |
| |
− | ===安装软件包===
| |
− | 在NanoPi的shell终端上安装软件包qtembedded和matrix-tslib
| |
− | <syntaxhighlight lang="bash">
| |
− | $ apt-get update
| |
− | $ apt-get install qtembedded
| |
− | $ apt-get install matrix-tslib
| |
− | </syntaxhighlight>
| |
− | qtembedded是qt相关的库,matrix-tslib则用于触摸屏校准。
| |
− |
| |
− | ===运行测试程序===
| |
− | 启动Qt应用程序
| |
− | <syntaxhighlight lang="bash">
| |
− | $ . /usr/bin/matrix-setqt4env
| |
− | $ /usr/local/Trolltech/QtEmbedded-4.8.5-arm/examples/tetrix -qws
| |
− | </syntaxhighlight>
| |
− | matrix-setqt4env用于设置环境变量,第一次运行该脚本时,会出现触摸校准的界面,根据提示点击5个点后完成校准。
| |
− | tetrix是一个qt4编写俄罗斯方块小游戏,点击start按钮后就可以开始娱乐了。
| |
− |
| |
− | ==与Tiny4412连接使用==
| |
− |
| |
− | ==与RaspberryPi连接使用==
| |
− |
| |
− | ==与Arduino连接使用==
| |
| | | |
| ==相关资料== | | ==相关资料== |
| *[Schematic]([http://wiki.friendlyarm.com/wiki/images/1/1c/SCHEMATIC1_W28-02.pdf Matrix - 2'8 SPI Key TFT-Schematic.pdf]) | | *[Schematic]([http://wiki.friendlyarm.com/wiki/images/1/1c/SCHEMATIC1_W28-02.pdf Matrix - 2'8 SPI Key TFT-Schematic.pdf]) |