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

2023-11-15

关于树莓派的视频输出除了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 &"









本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

树莓派使用上spi tft!(fbtft的使用) 的相关文章

  • 树莓派使用pip安装cython

    树莓派使用pip安装cython 百度到的安装方法 pi raspberrypi pip3 install Cython Looking in indexes https pypi org simple https www piwheels
  • 树莓派4b: 初级使用(Ubuntu21.10,Windows11写入SSD,远程连接,软路由搭建,webmin安装,自建Dockerhub,远程管理, 百度云盘,阿里云盘同步等)

    虽然vps也便宜 但还是想买4b 树莓派4b显示器接线为 hdmini 买时没有附赠 所以以下均为mac系统下通过ssh操作 文章来自 http blog csdn net intbird 转载请说明出处 rasberrypi 4b 0 服
  • 树莓派Linux内核源码

    前期工作 配置好交叉编译工具链 交叉编译工具链详细教程 树莓派Linux内核源码下载 查看树莓派操作版本命令 uname r 源码下载 一 嵌入式裸机和带操作系统启动过程了解 C51 stm32启动过程 c直接操控底层寄存器实现相关业务 业
  • 关于树莓派的VNC连接

    在使用树莓派时 会经常由于条件限制 无法配置全套外设 如显示器 键盘 鼠标 而需要用到手机或者电脑进行远程连接 树莓派除了支持putty进行SSH连接外 还可以通过tightvnc进行VNC连接 下面介绍一下两种远程连接方式的使用方法 1
  • wiringPi引脚编号方式

    树莓派引出的20 2排针引脚 引脚定义使用gpio readall命令查看 如下 可以看到wiringpi库有三种引脚编号方式 分别为 BCM编号方式 就是使用芯片的GPIO引脚编号 wiringpi库编号方式 使用wiringpi库自己规
  • 简单上手Raspberry Pi Pico(Ubuntu+MicroPython)

    关于raspberry pi pico的信息我就不多介绍了 直接给几个关键词吧 售价4 微控制器 MicroPython C C 树莓派基金会自研RP2040芯片 两本官方推荐的书 MicroPython版 Get started with
  • 树莓派开启 wifi 热点

    树莓派小巧的体型当然不是为了固定放在桌子上 更是为了做成可移动的智能设备 例如智能小车 当树莓派不在室内的 wifi 下时 怎样方便地连接上它呢 于是想要把树莓派变成 wifi 热点 就能用我们的手机或者笔记本连接它了 一 修改 etc n
  • ROS启动仿真环境编译源码时候经常遇到的问题以及对策

    move base msgs https github com ros planning navigation msgs git Could not find a package configuration file provided by
  • 树莓派安装配置syncthing

    下载 从这里下载软件 下载后解压 把二进制文件放到 usr local bin 目录 在命令行输入syncthing version命令 能打印出版本即可 自动启动 Unit Description Syncthing Open Sourc
  • 树莓派Debian安装Node.js,centOS服务器安装简介

    树莓派的架构 uname a 树莓派4B是基于armv7架构 下载 wget https nodejs org dist v12 16 1 node v12 16 1 linux armv7l tar xz tar xf node v12
  • 制作ubuntu server启动盘

    Mac 查看磁盘列表 gt gt gt diskutil list 格式化磁盘 gt gt gt diskutil partitionDisk dev disk2 MBR FAT32 UNTITLED 0b 推出磁盘 gt gt gt di
  • Raspberry Pi Zero 单板配置手记(四)调整 TF 卡分区大小的不同方式

    RPi Zero 调整 TF 卡分区大小的不同方式 本文章为系列文章 Raspberry Pi Zero 单板配置手记 的第四篇 上一篇为 Raspberry Pi Zero 单板配置手记 三 使用 NetworkManager 管理网络连
  • 瞎玩物联网系列--Hello 树莓派

    条件 Raspberry Pi 3b 32G存储卡 mac 网线 面包板 led灯 杜邦线 传感器若干 系统安装 各种下载 官方镜像下载 树莓派实验室地址 刻录工具 etcher Microsoft Remote Desktop for M
  • 单片机串口控制树莓派3B播放HDMI视频,omxplayer,

    使用树莓派3B通过HDMI播放视频 并且使用串口去控制播放哪个视频 1 问题解耦 单片机串口控制树莓派3B播放视频 树莓派播放视频 单片机串口传参控制树莓派 树莓派播放视频 树莓派播放视频 并且能用串口这种简单的通信方式去控制 应该是需要安
  • 树莓派使用上spi tft!(fbtft的使用)

    关于树莓派的视频输出除了HDMI和 VNC基本上没有其他的方法 如果你手上刚好有一块TFT模块的话就可以当做系统显示屏 framebuff 虽然分辨率不高 但足以满足一些cmd的需求 github上项目 notro fbtft 很好的实现了
  • Linux系统下对树莓派镜像进行烧写操作。可搭建自己的迷你服务器

    烧写后可以当做搭建自己的迷你服务器或者可携带的计算机哦 我以linux系统下对内存卡进行烧写镜像 烧写的先以snappy ubuntu care为例 网上的资料大多都是win下操作的 步 1 购买嵌入式开发板 可选够集成度大的 可烧写系统的
  • 树莓派 mqtt

    Mosquitto是一款实现了消息推送协议 MQTT v3 1 的开源消息代理软件 sudo yum y install epel release sudo yum y install mosquitto 运行 sudo systemctl
  • 树莓派安装教程

    1 安装raspbian操作系统 下载安装工具 Win32DiskImager 0 9 5 binary 下载 img文件 使用上述工具即可 下载前首先需要格式化SD卡 再重新写入 之后插入SD卡 即可可以看到操作系统的界面 关于解决显示屏
  • 怎么把树莓派连接到电脑上(基于window10)

    我相信对于刚玩树莓派的新手来说 尤其是没有带显示屏的同学来说 四处碰壁 可能出现的原因有很多种 ssh登录不上 wifi连接不上 内存不足 很多问题 而对于更多新手来说 如何给树莓派连接网络更是关键 今天我给大家讲一下如何用树莓派连接电脑
  • GPIO的两种引脚规则:BCM与BOARD

    树莓派 raspberry 针脚在python中BCM与BOARD模式的区别 在python程序中定义的GPI针脚有两种模式 BCM模式 BOARD模式 BCM模式 例如 GPIO setmode GPIO BCM 测试结果如下 物理针脚1

随机推荐

  • 微信公众平台开发调试方法

    在这篇微信公众平台开发教程中 我们将介绍如何进行微信公众平台上的开发调试方法 一 方倍微信调试器 微信调试器是方倍工作室开发的用于微信公众平台接口开发调试的工具 具有Token校验 模拟关注及取消关注 发送文本 图片 语音 视频 位置 链接
  • oracle 基础:表操作

    创建表 示例 CREATE TABLE 表名称 字段名 类型 长度 primary key 字段名 类型 长度 修改表 增加字段 ALTER TABLE 表名称 ADD 列名 1 类型 DEFAULT 默认值 列名 2 类型 DEFAULT
  • MYSQL--基础--05--binlog日志文件过大

    MYSQL 基础 05 binlog日志文件过大 1 Mysql binlog 介绍 mysql binlog是MySQL数据库的二进制日志 用于记录用户对数据库操作的SQL语句 除了数据查询语句 信息 如果mysql 运行很长一段时间 日
  • 汇编语言aaa指令解析,aas指令解析

    aaa指令本质上是将相加后的结果拆成两个部分 拆成非压缩BCD码的形式 下面进行举例介绍 1 ah 0 al 06h bl 09h 执行指令add al bl得ah 01h al 05h aaa的作用就是将相加后al中的结果15拆分成两部分
  • python-opencv对极几何 StereoRectify

    OpenCV如何正确使用stereoRectify函数 函数介绍 用于双目相机的立体校正环节中 这里只谈谈这个函数怎么使用 参数具体指哪些 函数参数 随便去网上一搜或者看官方手册就能得到参数信息 但是 相对关系非常容易出错 这里详细解释一下
  • 电脑提示vcruntime140_1.dll缺少怎么办?

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或者损坏了 这时你只需下载这个vcruntime140 1 dll文件进行安装
  • Alpaca构建方式探秘:低成本构造指令数据增强LLM

    官方介绍 Alpaca A Strong Replicable Instruction Following Model github地址 https github com tatsu lab stanford alpaca Alpaca简介
  • 【STL】list容器的插入与删除

    STL list容器插入与删除 添加或插入新元素 list成员方法 push front 向 list 容器首个元素前添加新元素 push back 向 list 容器最后一个元素后添加新元素 emplace front 在容器首个元素前直
  • 基于LSTM、BP神经网络实现电力系统负荷预测(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 LSTM 2 2 BP 3 Python代码及数据 4 参考文献 1 概述 前馈神经
  • JavaSE加强知识

    tips 在Java中 万物皆对象 不然我们的Java就白学了 本栏文章我们将会陆续上传以下知识 static 单例 代码块 继承 面向对象五大金刚 成员变量 方法 代码块 构造器 内部类 权限修饰符 抽象类 接口 多态 内部类 常用API
  • DDR3 终端参考电阻 rzq

    https blog csdn net chenzhen1080 article details 82951214 问题1 ddr3侧 的参考电阻和 FPGA侧 的参考电阻是不是同一个功能 同一个阻值 DDR3 器件上 要标配 240 参考
  • SGMD辛几何模态分解

    将时间序列分解为一组独立的模态分量 模态混叠情况大幅度降低 SGMD利用辛几何相似度变换来求解哈密顿矩阵的特征值 并利用其 相应的特征向量来重构单分量信号 同时 SGMD可以在没有任何用户定义参数的情况下 有效地重构现有的模式 去除噪声 该
  • Halcon中数据的四舍五入、取整、有效数字以及和字符串之间的转换

    a 3 456 取整 取最近的整数 int a int a 取整数部分 结果是3 round a round a 将输入元组转换为最接近的整数元组 结果是3 四舍五入 结果是字符串 g0 a 0f 保留0位 结果是 3 g1 a 1f 保留
  • js延迟操作

    在写前端代码的时候需要实现某些交互操作 有些效果需要停顿几秒再实现 这时可以用到下面的方法 setTimeout function 5秒后实现的方法写在这个方法里面 5 1000 延迟5000毫秒
  • 第15届全国大学生知识竞赛 2022ciscn初赛 部分wp

    Misc ez usb 1 键盘流量 USB协议数据部分在Leftover Capture Data域中 数据长度为八个字节 其中键盘击键信息集中在第三个字节中 如图 发现击键信息为0x06 即对应的按键为C 2 鼠标流量 USB协议鼠标数
  • 并发编程-Linux环境下C语言并发理解-一

    在centos7上安装gcc 使用yum命令安装还是非常easy的 yum y install gcc gcc c kernel devel 安装gcc c 编译器以及内核文件 使用VI工具编写如下代码 include
  • openssl命令基础用法:哈希

    单向加密需要使用的标准命令为 dgst 用法如下 openssl dgst md5 md4 md2 sha1 sha mdc2 ripemd160 dss1 c d hex binary out filename sign filename
  • 微信小程序项目:粤语教学平台-粤言粤语

    文章目录 1 项目简介 1 1 创意来源 1 2选题意义 2 总体设计 2 1 系统功能 2 1 1 功能概述 2 1 2 功能说明 2 2 系统软硬件平台 2 3 关键接口技术 2 4 作品特色 3 详细设计 3 1 系统结构设计 3 1
  • error C2666: “QByteRef::operator ==”: 2 个重载有相似的转换

    出现这样的问题 就是语法出现问题 以下写就是错的 以下写的就是解决了问题
  • 树莓派使用上spi tft!(fbtft的使用)

    关于树莓派的视频输出除了HDMI和 VNC基本上没有其他的方法 如果你手上刚好有一块TFT模块的话就可以当做系统显示屏 framebuff 虽然分辨率不高 但足以满足一些cmd的需求 github上项目 notro fbtft 很好的实现了