树莓派使用上spi tft!(fbtft的使用)
来源:互联网 发布:香港量健集团知乎 编辑:程序博客网 时间:2024/06/06 08:37
关于树莓派的视频输出除了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 wlan0iface wlan0 inet dhcpwpa-ssid "路由器名称"wpa_psk "路由器密码"
3:下载和安装驱动
依次在终端输入cmd指令
sudo wget https://raw.github.com/Hexxeh/rpi-update/master/rpi-update -O /usr/bin/rpi-updatesudo chmod +x /usr/bin/rpi-updatesudo REPO_URI=https://github.com/notro/rpi-firmwaresudo rpi-update4:硬件连线
如果安装了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-fbcpcd rpi-fbcp/mkdir buildcd build/cmake ..makesudo install fbcp /usr/local/bin/fbcp
启动: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=16000000su -l pi -c "env FRAMEBUFFER=/dev/fb1 startx &"或者su -l pi -c "env con2fbmap 1 1 &"
- 树莓派使用上spi tft!(fbtft的使用)
- 树莓派spi液晶屏支持(fbtft)nt35510
- 对于STM32使用FSMC驱动传统8080并口器件方式(TFT)的理解(上)
- 基于MT7688 原厂SDK 使用SPI控制器驱动TFT屏幕ILI9225驱动器(spi接口)
- TFT液晶屏使用自建的英文字库
- 27 在H5上实现spi-tft屏的简单驱动
- 基于openwrt的SPI TFT触摸屏程序
- 基于openwrt的SPI TFT触摸屏程序
- 一个SPI接口的TFT屏ILI9341
- TFT LCD使用心得
- 【程序】STM32使用SPI接口读取93C46存储器上的数据(非软件模拟SPI时序)
- stm8s开发(七) SPI的使用:SPI主机通信!
- SPI DMA 的使用
- LPC2478的SPI使用
- DSP28335 SPI的使用
- SPI的使用场景
- 移植树莓派中的fbtft显示驱动到Linux开发板下(四)-fbtft中的数据结构
- 树莓派开发系列教程10——树莓派spi液晶屏支持(fbtft)
- 与第三方ERP系统同步数据总结
- 无限极下拉列表数据库和代码
- 多态
- C++11之智能指针
- 《一斛珠·元夜月蚀》
- 树莓派使用上spi tft!(fbtft的使用)
- j2ee规范-jdbc-存储过程调用(oracle为例)
- JavaSwing_1.1: FlowLayout(流式布局)
- C++之消除头文件嵌套包含
- linux shell 条件判断if else, if elif else....
- struts2
- 【C语言】冒泡法排序的三种实现方法
- JavaSwing_1.2: GridLayout(网格布局)
- 使用spring实现邮件的发送(含测试,源码,注释)