树莓派SPI连接TFT屏幕
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
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
执行完毕后,可以查看日志,日志不能有错误:
dmesg
dmesg
1
2
3
4
5
6
7
8
9
10
11
12
13
| $ 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的电压以及使用情况。
可查看当前所有GPIO的电压以及使用情况。
git clone git://git.drogon.net/wiringPi
cd wiringPi
sudo ./build
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/
例如: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
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
New Hampshire casino launch: When will I be permitted to gamble on poker in
回复删除One of the casinos in 순천 출장안마 the state that was 김포 출장안마 recently legalized, 김제 출장안마 Unibet 부산광역 출장안마 will provide wagering 남원 출장마사지 on poker.