樹莓派使用上spi tft!(fbtft的使用)

關於樹莓派的視頻輸出除了HDMI和 VNC基本上沒有其他的方法,如果你手上剛好有一塊TFT模塊的話就可以當做系統顯示屏(framebuff),雖然分辨率不高,但足以滿足一些cmd的需求。

github上項目:notro/fbtft,很好的實現了spi的tft屏幕顯示framebuff。github地址:https://github.com/notro

老徐拉燈(另一個博主)早在2014年發了一篇博文講述了直接編譯進內核的方法http://blog.csdn.net/xdw1985829/article/details/39583239

PokeBox(另一個博主)也分享了另一種在線模塊化的安裝的方法:http://jingyan.eeboard.com/article/73720


博主也是參考了這兩個前輩的博文才完成了這次實驗的,本文也是根據這兩篇博文重新排版編寫的。雖然兩篇博文使用的是早些年的RPI一代,但是經過博主的實驗,對於現在的RPI3和(無論是完整版還是lite版)最新的系統(內核4.9)也是通用的,博主有兩塊RPI(RPIA+和RPI3)都可以用一樣的辦法將notro的fbtft使用起來。

    

 1.打開SPI

最新系統的SPI默認還是關閉的,需要在raspi-config中打開,在終端輸入 :

sudo raspi-config

將spi接口enable就好了。


2:連接wifi或者你的以太網

這個有很多種方法,關於wifi連接這裏給出一個簡單的方法:

sudo nano /etc/network/interfaces

修改wlan0的配置,保存退出。

allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-ssid "路由器名稱"
wpa_psk "路由器密碼"


3:下載和安裝驅動

依次在終端輸入cmd指令

sudo wget https://raw.github.com/Hexxeh/rpi-update/master/rpi-update -O /usr/bin/rpi-update
sudo chmod +x /usr/bin/rpi-update
sudo REPO_URI=https://github.com/notro/rpi-firmware
sudo rpi-update

4:硬件連線

如果安裝了wiringPi的話可以使用指令:

gpio readall
查看GPIO口,這裏我們使用的是BCM的編號(最邊兩列的編號)

對應的TFT接口:

接口分別有:

VCC-> 接電源(3.3V 有些可以接5V)

GND-> 接地線(0V)

NC-> 不接(無意義)

CLK-> SPI時鐘,接SCLK(BCM11引腳)

SDA-> SPI數據,接MOSI(BCM10引腳)

RS-> 指令控制口,可以隨便接一個GPIO口(我這裏接BCM24引腳)

RST-> 復位,可以隨便接一個GPIO口,也可以直接接VCC(3.3V)(我這裏接BCM23引腳)

CS-> 片選口,可以隨便接一個GPIO口,也可以直接接GND(0V)(我這裏接0V)


當然,你手上的屏幕引腳絲印也有可能對不上號,不過基本都是一致的,比如有:DC(也就是RS),SDA(也就是SDO),SCL(也就是CLK),CE(也就是CS),也有可能有LED、BL這樣的背光接口,直接接VCC,也就是3.3V好了。


5:屏幕初始化

初始化也就是加載驅動,驅動名字叫做 fbtft_device

sudo modprobe fbtft_device name=adafruit18 gpios=reset:23,dc:24 speed=16000000


參數name指的是屏幕驅動IC的型號,博主使用的驅動的是型號是st7735r,對應的name就是afruit18,其他型號的別稱請對照https://github.com/notro/fbtft/blob/master/fbtft_device.c

參數gpios是用於設置其他IO的,硬件上reset連接了BCM23,所以這裏就填寫gpios=reset:23,同理還可以設置dc和led(背光)接口,speed設置的是spi總線速度,一般不要超過32M就行。

還有其他參數eg:rotate 翻轉,fps 刷屏率,可以參考https://github.com/notro/fbtft/wiki/fbtft_device

如果輸入指令後屏幕變黑了,那麼恭喜你,這就代表屏幕被成功的驅動了,已經完成了80%的進度了!(最怕就是沒有驅動或者初始化不成功)

如果沒有你的IC驅動可以嘗試使用init參數手動初始化。

輸入:

con2fbmap 1 1
顯示終端(lite系統)

FRAMEBUFFER=/dev/fb1 startx
顯示圖形界面(完整版系統)
效果如圖,這是fb1的圖像。



如果需要卸載驅動,指令:

rmmod fbtft_device

(下面操作可有可無)

6:複製fb0的內容到fb1上

新系統沒有git和cmake,所以先需要安裝一下:

sudo apt-get install git cmake
然後依次下載安裝項目  https://github.com/notro/fbtft/wiki/Framebuffer-use#framebuffer-mirroring
git clone https://github.com/tasanakorn/rpi-fbcp
cd rpi-fbcp/
mkdir build
cd build/
cmake ..
make
sudo install fbcp /usr/local/bin/fbcp

啓動:fbcp &

關閉fbcp:killall fbcp


7:添加啓動腳本

關於添加啓動腳本的方法有很多,比如在/etc/rc.local 添加,這個是啓動系統和自動加載腳本,這裏提供一種登錄後加載腳本的方法 ~/.bash_login,兩種方法應用場合有所不同。博主更加推薦使用.bash_login 腳本+自動登錄的方法。

同理,進入設置自動登錄,博主用的是lite版本,只能自動登錄並進入終端。

sudo raspi-config


然後編寫腳本

sudo nano ~/.bash_login
編寫cmd指令即可:
sudo modprobe fbtft_device name=adafruit18 gpios=reset:23,dc:24 speed=16000000
su -l pi -c "env FRAMEBUFFER=/dev/fb1 startx &"
或者
su -l pi -c "env con2fbmap 1 1 &"









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章