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. flash、js 函数 互相调用

    js调用flex函数 flex 利用ExternalInterface.addCallback(“注册的方法名”,As中的函数名)进行注册 js中,用document.getElementById(“ ...

  2. UVA - 1252 Twenty Questions (状压dp+vis数组加速)

    有n个物品,每个物品有m个特征.随机选择一个物品让你去猜,你每次可以询问一个特征的答案,问在采取最优策略时,最坏情况下需要猜的次数是多少. 设siz[S]为满足特征性质集合S的特征的物品总数,dp[S ...

  3. CodeForces - 961D:Pair Of Lines (几何,问两条直线是否可以覆盖所有点)

    You are given n points on Cartesian plane. Every point is a lattice point (i. e. both of its coordin ...

  4. 隐藏select中的“请选择”项

    <select> <option value="" style="display: none">请选择</option> & ...

  5. http协议及原理分析 1

    1:200与304的区别 浏览器第一次加载成功返回200状态,并会在浏览器的缓存中记录下 max-age 这个值.第二次发起服务器的访问时 会先看缓存中有没有要加载的资源 如果有 再去看有没有超出 m ...

  6. 解决方案: the selected file is a solution file but was created by a newer version of this application and cannot be opened

    最近在用IronGithub访问Github api时遇到一个问题: the selected file is a solution file but was created by a newer v ...

  7. 刷题常用的STL容器总结

    本文归纳总结刷题常用到STL容器以及一些标准算法,主要包括: string.vector.map.pair.unordered_map.set.queue.priority_queue.stack,以 ...

  8. 环境搭建:Vue环境搭建和项目初始化(windows)

    1.    安装node.js 官网下载安装:https://nodejs.org/en/ 版本查看:node -v 注意:node版本最好新一点好,推荐6.0以上. 2.    npm安装webpa ...

  9. SpringMVC---依赖注入与面向切面

    1.依赖注入与面向切面 1.1.出现背景 ——如何简化java开发? 其中很重要的一点是“组件化”. ——如何更好的“组件化”? 松耦合,以及尽可能的让组件专注于本身. ——Spring框架的目的也只 ...

  10. Celery-4.1 用户指南: Application(应用)

    Application Celery 库在使用之前必须初始化,一个celery实例被称为一个应用(或者缩写 app). Celery 应用是线程安全的,所以多个不同配置.不同组件.不同任务的 应用可以 ...