HDMI连接和树莓派专用连接的接口的屏幕都太贵了,为了节约成本,现在国内大多数还是TFT屏幕。 树莓派可以激活SPI接口,通过代码驱动TFT屏幕的显示。这样利用树莓派zero 打造小型的游戏平台可以大大节约成本。淘宝网上的TFT屏幕很便宜,但是一定要记得别买错了,一定要看说明需要支持SPI接口的才行。各种屏幕的驱动也不一样,国内多半是fb_ili9431的驱动。购买之前先看仔细各种参数。https://github.com/notro/fbtft/wiki/fbtft_device https://github.com/notro/fbtft/wiki/LCD-Modules FBTFT驱动支持列表

比如这种:

1.按照如下图的连接线连接。

2. 先激活树莓派配置

sudo raspi-config

找到Interfacing Options

然后找到P4 SPI然后 enable SPI interface

3. 更新后重启,一定要看到更新成功,如果出现文件错误,可以尝试参考我前面的文章更换镜像地址后重新尝试。

sudo rpi-update
sudo reboot

4.执行以下命令就可以发现TFT屏幕可以显示了:

执行命令 sudo modprobe fbtft_device name=rpi-display gpios=reset:25,dc:24,led:18 rotate=90 fps=50 speed=65000000

或者执行  sudo modprobe fbtft_device custom name=fb_ili9431 buswidth=8 gpios=reset:25,dc:24,led:18 rotate=90 fps=50 speed=65000000

参考文献:https://www.raspberrypi.org/forums/viewtopic.php?t=157618

执行完毕后,可以查看日志,日志不能有错误:
dmesg

$ dmesg
...
...
[ 703.864352] fbtft_device: module is from the staging directory, the quality is unknown, you have been warned.
[ 703.870840] spidev spi0.1: spidev spi0.1 500kHz 8 bits mode=0x00
[ 703.870917] bcm2708_fb soc:fb: soc:fb id=-1 pdata? no
[ 704.184479] graphics fb1: fb_ili9341 frame buffer, 320x240, 150 KiB video memory, 16 KiB DMA buffer memory, fps=20, spi0.0 at 32 MHz
[ 704.184566] fbtft_device: GPIOS used by 'rpi-display':
[ 704.184581] fbtft_device: 'reset' = GPIO25
[ 704.184591] fbtft_device: 'dc' = GPIO24
[ 704.184599] fbtft_device: 'led' = GPIO18
[ 704.184618] spidev spi0.1: spidev spi0.1 500kHz 8 bits mode=0x00
[ 704.184633] fb_ili9341 spi0.0: fb_ili9341 spi0.0 32000kHz 8 bits mode=0x00

通过检查背景灯光是否亮了,如果亮了,说明就成功了。

5. 不知道什么原因,执行强制使用以下命令的时候总是报Policykit Authentication Agent的错误,即使在windows session中关闭也不行。

FRAMEBUFFER=/dev/fb1 startx

经过长时间的研究发现可以直接修改下面这个文件。 然后再sudo raspi-config 设置boot options 启动选项为Console 项目,不启动桌面。重启后,使用startx命令就可以看到tft屏幕显示了。

Create file: /usr/share/X11/xorg.conf.d/99-fbdev.conf

Section "Device"
Identifier "myfb"
Driver "fbdev"
Option "fbdev" "/dev/fb1"
EndSection

6. 调试命令/工具

sudo modprobe fbtft_device -r 删除设备

查看设备 ls /dev/fb* -l

好用的工具:wiringPi
可查看当前所有GPIO的电压以及使用情况。

git clone git://git.drogon.net/wiringPi
cd wiringPi
sudo ./build

gpio readall

7. Orange Pi  相关

好用的工具:wiringOP

一定要注意,使用orange pi有一个大坑,网上找到的图和实际的GPIO不符合。一定要使用wiringOP这个工具查看当前的端口。这个问题导致我卡了N天,花费了N个小时。

BCM列就是gpio 端口号。而wPi是指实际的标准端口,如果用wiringop的时候需要操作wPi的标准端口号。而在一般使用情况下则使用BCM端口号。

比如,在orangepi 下,我们可以执行命令

sudo modprobe fbtft_device custom name=fb_ili9431 buswidth=8 gpios=reset:8,dc:9,led:7 rotate=90 speed=48000000 busnum=0 fps=50 (如果是orangepi zero的 spi0 会被占用。不成功就尝试修改busnum等于1)

然而,大部分系统会提示 cannot find fbtft_device module,或者fbtft_device 参数错误之类。因为大部分orangepi的系统都没有自带fbtft_device module啊。或者是应为SPI service 没有开通啊。全都是坑。最终我找到一个可以直接执行上述命令的操作系统:

Armbian
例如:orangelite版本: (不能保证未来的新版本会去掉驱动,本文写于2018-02-18,可以下载这个时间点附近的release的版本)
https://www.armbian.com/orange-pi-lite/

Armbian Ubuntu desktop – legacy kernel

屏幕转移功能依然不好使,可以参考下面文献设置为自启动
con2fbmap 1 8(Armbian安装好后,发现新增的驱动为fb8,所以这里是8的映射)

参考文献
https://www.mysensors.org/build/orange
http://www.instructables.com/id/Orange-Pi-Zero-Connect-TFT-SPI-ST7735/
https://kaspars.net/blog/linux/spi-display-orange-pi-zero

树莓派研究笔记(9)-- 树莓派SPI连接TFT屏幕的更多相关文章

  1. 树莓派研究笔记(10)-- Retropie 模拟器

    前面介绍过lakka模拟器,小巧,轻便,支持中文.其实最著名的游戏系统还是要属于Retropie啊.虽然笨重了一点,但是很多树莓派系统的原汁原味还是保留的很好.这样就不需要我们自己还要对lakka的源 ...

  2. 【树莓派】使用树莓派制作img镜像(一)

    最近一直在折腾树莓派,前几天装了10台设备,最近又来了15台开发板子.基本每台设备都需要进行如下操作: 1.安装树莓派OS,并配置键盘.时区.语言编码格式等: 2.新增组.用户.配置静态IP地址: 3 ...

  3. 【树莓派】制作树莓派最小镜像:img裁剪瘦身

    制作树莓派镜像,可以参考这篇文章:http://blog.csdn.net/talkxin/article/details/50456282 摘录部分要点内容如下(如果作者不允许转载,请联系即删除): ...

  4. 【树莓派】制作树莓派所使用的img镜像(一)

    最近一直在折腾树莓派,前几天装了10台设备,最近又来了15台开发板子.基本每台设备都需要进行如下操作: 1.安装树莓派OS,并配置键盘.时区.语言编码格式等: 2.新增组.用户.配置静态IP地址: 3 ...

  5. 小白自制Linux开发板 六. SPI TFT屏幕修改与移植

    本文章参考:https://www.bilibili.com/read/cv9947785?spm_id_from=333.999.0.0 本篇通过SPI接口,使用ST7789V TFT焊接屏(13p ...

  6. 树莓派系统安装(ubuntu版本)无需屏幕

    0.前提 所需物品:一个手机.一台电脑.一个树莓派.一张tf卡和一个读卡器.所需软件:Win32DiskImager.putty还需要ubuntu系统镜像源.这些我都放在百度网盘上了链接:https: ...

  7. 树莓派上安装2.8寸TFT触摸屏

    在某宝的这里买了一个2.8寸的TFT触摸屏,其实就是中国版的ADAFRUIT 结合店家的帮助文档做了一下,一次点亮,这里也记录一下自己的安装过程(话说会硬件是会比会软件有不同的乐趣~~~) 由于店家推 ...

  8. 最新发布树莓派2代Wi-Fi自动连接实战(适合初学者)

    话说天地会珠海分舵在上几天才刚给大家分享了个海外资讯说树莓派2已经发布且Windows10加盟之类的资讯,具体请查看<海外优秀资讯抢先看8 - Windows 10 for Raspberry ...

  9. 树莓派研究笔记(6)-- Lakka模拟游戏机

    我发现lakka的支持的游戏平台特别多,包括国产的OrangePI,真是太棒了.我们可以用这个来打造一个全功能模拟器平台.(删除线部分为Orange PI 测试成功内容,但在树莓派上无需那些操作) 访 ...

随机推荐

  1. git教程3-添加远程库与从远程库拷贝

    一.添加到github 1.github上创建新的库learngit.git 2.git remote add origin git@github.com:moisiet/learngit.git  ...

  2. PKUSC2018 Slay The Spire

    有攻击牌和强化牌各 $n$ 张,强化牌可以让之后所有攻击牌攻击力乘一个大于 $1$ 的系数,攻击牌可以造成伤害 求所有“抽出 $m$ 张然后打 $k$ 张”能造成的伤害之和 $k,m,2n \leq ...

  3. python_广州房价热力图

    调用百度地图api,获取经纬度数据,然后在调用百度地图api,生成热力图 import pandas as pd import numpy as np data = pd.read_excel(r'D ...

  4. scrapy入门实践1

    Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 这就是整个Scrapy的架构图了: 各部件职能: Scrapy ...

  5. LCD升压反压驱动电路

    在嵌入式系统里,较多场合需要LCD人机界面.分析以下LCD驱动电路. LCD_VIN是3.6~5V,经过DC/DC burst升压得到LCD_AVDD,LCD_AVDD为LCD需要的模拟电压,根据LC ...

  6. (C#)Windows Shell 外壳编程系列2 - 解释,从“桌面”开始展开

    (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一篇:(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 让我们详细解释一下 Shell 编程中最基本 ...

  7. POJ1456:Supermarket(并查集版)

    浅谈并查集:https://www.cnblogs.com/AKMer/p/10360090.html 题目传送门:http://poj.org/problem?id=1456 堆作法:https:/ ...

  8. maven工程编译成jar包

    在pom文件的project节点下增加build节点,mvn package即可 <build> <plugins> <plugin> <artifactId ...

  9. SVN 命令使用-***

    1.检出到某一版本: svn checkout -r 974  svn://220.231.xx.xx/仓库名 svn checkout  svn://220.231.xx.xx/仓库名 svn ex ...

  10. U盘操作

    一.8G的U盘被设置为2G,如何恢复 1.下载usboot 1.7 打开以后,选中U盘,点击[点击此处选择工作模式],选择[用0重置参数] ,然后点[开始].2.完成后它会提示拔下U盘,此时拔下U盘, ...