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驅動支持列表
php
好比這種:
linux
1.按照以下圖的鏈接線鏈接。ios
2. 先激活樹莓派配置git
sudo raspi-configgithub
找到Interfacing Optionswindows
而後找到P4 SPI而後 enable SPI interfacesession
3. 更新後重啓,必定要看到更新成功,若是出現文件錯誤,能夠嘗試參考我前面的文章更換鏡像地址後從新嘗試。ide
sudo rpi-update
sudo reboot工具
4.執行如下命令就能夠發現TFT屏幕能夠顯示了:ui
執行命令 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/orangehttp://www.instructables.com/id/Orange-Pi-Zero-Connect-TFT-SPI-ST7735/https://kaspars.net/blog/linux/spi-display-orange-pi-zero