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. 使用sort&awk实现文件内容块排序

    源文件为: [root@luo5 wangxx]# cat -v luo.txt J LuoSoutth jfsaNanjing,china Y ZhangVictory UniversityNejf ...

  2. eclipse Git & maven 安装

    JDK安装请自行百度. Maven是免安装的.压缩包解压完成后.如解压后放在D:\Server\maven下.接下来配置maven的环境变量: 系统变量:MAVEN_HOME = D:\Server\ ...

  3. Js中的prototype的用法二

    用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访问,其它的就不清楚了, ...

  4. [转]HTTP详解(1)-工作原理

    1. HTTP简介 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议.它可以使浏览器更加高效,使网络传输减少. ...

  5. linux find 实例 ***

    使用选项:find [路径] <表达式> [操作] 1.name选项,按名称查找查找当前目录下的manage.py 文件:find . -name ‘manage.py’ 2.atime/ ...

  6. MySQL 查询数据表里面时间字段为今天添加的计数

    一: 下面这条语句查出来的count值 .  查询类型ID(category_id)为18的,今天插入的数据数, created_on: 为数据表中一字段 datetime类型, 记录此条数据添加的时 ...

  7. 用反射封装HttpHandler,实现通过action方法名调用方法

    using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using Sy ...

  8. rails的respond to format

    Here are all the default Rails Mime Types: "*/*" => :all "text/plain" => : ...

  9. Don’t panic, it’s just a kernel panic (ZT)

    http://blog.kreyolys.com/2011/03/17/no-panic-its-just-a-kernel-panic/ One of the main young sysadmin ...

  10. Struts2 全局结果集-全局result节点设置,package设置abstract=true的实现

    转自:https://blog.csdn.net/u013161278/article/details/41855273 如果我们所有的action均有可能跳到相同的页面,则不妨使用全局result. ...