ST7789(spi)平替树莓派桌面显示屏幕

ST7789(spi)平替树莓派桌面显示屏幕


效果展示

alt text

环境:

  1. 硬件:
    树莓派4B , ST7789屏幕spi驱动
    树莓派4B的GPIO引脚接线图

alt text

  1. 软件:
    2024-03-12-raspios-bullseye-arm64 (要是bullsys,试过bookworm的,没成功)
    BCM2835库
    lgpio库
    LCD_Module_RPI_code测试文件
    Waveshare_fbcp.zip

提示

为了后续的操作方便性,最好把用户名设置为pi,主机名设置raspberry,且下载的文件放置在/home/pi下,也就是~,这样后续的编译安装等操作都会比较方便。

操作

0.安装镜像

  1. 克隆仓库至本地
  2. git clone https://gitee.com/zxz_FINE/raspberry4-b_-spi_-display_-desktop.git
  3. 使用2024-03-12-raspios-bullseye-arm64镜像,或其他的bullsys镜像也可以,下载地址:https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-desktop
  4. 使用树莓派烧录工具,烧录下载的镜像到SD卡中

alt text

  1. 把配置文件改改,支持SSH,WIFI什么的

alt text

  1. 把SD卡插入树莓派,接通电源,等待树莓派启动

1.编译安装库

安装库文件:

sudo apt install libraspberrypi-dev

编译安装BCM2835

tar zxvf bcm2835-1.71.tar.gz 
cd bcm2835-1.71
sudo ./configure && sudo make && sudo make check && sudo make install

编译安装lgpio

unzip lg-master.zip
cd lg-master
sudo make install

编译测试程序
在测试前要打开树莓派的SPI功能

sudo raspi-config
#选择Interfacing Options -> SPI -> Yes 开启SPI接口
#开启后重启一下树莓派
sudo reboot

编译测试程序

sudo unzip ./LCD_Module_RPI_code.zip
cd LCD_Module_RPI_code/RaspberryPi/c
sudo make clean
sudo make -j 8
sudo ./main 屏幕尺寸
##示例启动方法
#0.96inch LCD Module       
sudo ./main 0.96        
#1.14inch LCD Module        
sudo ./main 1.14        
#1.28inch LCD Module        
sudo ./main 1.28        
#1.3inch LCD Module     
sudo ./main 1.3     
#1.47inch LCD Module
sudo ./main 1.47
#1.54inch LCD Module
sudo ./main 1.54
#1.8inch LCD Module
sudo ./main 1.8
#2inch LCD Module
sudo ./main 2
#2.4inch LCD Module
sudo ./main 2.4

如果测试程序没问题就可以进行下一步了:
FBCP移植:Framebuffer 是用一个视频输出设备从包含完整的帧数据的一个内存缓冲区中来驱动一个视频显示设备。简单的来说,就是使用一个内存区来存储显示内容,改变内存的数据就可以改变显示的内容。在 github 上有一个开源工程:fbcp-ili9341,该工程相比其他类fbcp工程,利用了局部刷新和DMA实现高达60fps的速度

unzip Waveshare_fbcp.zip
cd Waveshare_fbcp/
sudo chmod +x ./shell/* 

启动

第一种方法 .使用脚本启动 :
:脚本会替换对应/boot/config.txt和/etc/rc.local并重启,如果用户如有需,请提前备份有关文件

#0.96inch LCD Module
sudo ./shell/waveshare-0inch96
#1.14inch LCD Module
sudo ./shell/waveshare-1inch14
#1.3inch LCD Module
sudo ./shell/waveshare-1inch3
#1.44inch LCD Module
sudo ./shell/waveshare-1inch44
#1.54inch LCD Module
sudo ./shell/waveshare-1inch54
#1.8inch LCD Module
sudo ./shell/waveshare-1inch8
#2inch LCD Module
sudo ./shell/waveshare-2inch
#2.4inch LCD Module
sudo ./shell/waveshare-2inch4

第二种方法,手动配置
树莓派的vc4-kms-v3d会导致fbcp失效,所以我们需要在安装在fbcp之前关闭vc4-kms-v3d

sudo nano /boot/config.txt

屏蔽下图对应的语句即可

alt text

随后需要进行重启

sudo reboot

编译与运行

mkdir build
cd build
cmake [options] ..
sudo make -j
sudo ./fbcp

根据你使用的LCD Module自行替换,上文中cmake [options] …

#0.96inch LCD Module
sudo cmake -DSPI_BUS_CLOCK_DIVISOR=20 -DWAVESHARE_0INCH96_LCD=ON -DBACKLIGHT_CONTROL=ON -DSTATISTICS=0 ..
#1.14inch LCD Module
sudo cmake -DSPI_BUS_CLOCK_DIVISOR=20 -DWAVESHARE_1INCH14_LCD=ON -DBACKLIGHT_CONTROL=ON -DSTATISTICS=0 ..
#1.3inch LCD Module
sudo cmake -DSPI_BUS_CLOCK_DIVISOR=20 -DWAVESHARE_1INCH3_LCD=ON -DBACKLIGHT_CONTROL=ON -DSTATISTICS=0 ..
#1.54inch LCD Module
sudo cmake -DSPI_BUS_CLOCK_DIVISOR=20 -DWAVESHARE_1INCH54_LCD=ON -DBACKLIGHT_CONTROL=ON -DSTATISTICS=0 ..
#1.8inch LCD Module
sudo cmake -DSPI_BUS_CLOCK_DIVISOR=20 -DWAVESHARE_1INCH8_LCD=ON -DBACKLIGHT_CONTROL=ON -DSTATISTICS=0 ..
#2inch LCD Module
sudo cmake -DSPI_BUS_CLOCK_DIVISOR=20 -DWAVESHARE_2INCH_LCD=ON -DBACKLIGHT_CONTROL=ON -DSTATISTICS=0 ..
#2.4inch LCD Module
sudo cmake -DSPI_BUS_CLOCK_DIVISOR=20 -DWAVESHARE_2INCH4_LCD=ON -DBACKLIGHT_CONTROL=ON -DSTATISTICS=0 ..

设置开机自启动

sudo cp ~/Waveshare_fbcp/build/fbcp /usr/local/bin/fbcp
sudo nano /etc/rc.local

在 exit 0 前面添加 fbcp&。注意一定要添加"&" 后台运行,否则可能会出现系统不能启动的情况。

alt text

设置用户界面显示尺寸在/boot/config.txt 文件中设置用户界面显示尺寸。

sudo nano /boot/config.txt

在config.txt文件中添加分辨率的配置语句。

hdmi_force_hotplug=1
hdmi_cvt=[options] 
hdmi_group=2
hdmi_mode=1
hdmi_mode=87
display_rotate=0

根据你使用的LCD,自行替换上文中的hdmi_cvt=[options]

#2.4inchinch LCD Module & 2inchinch LCD Module
hdmi_cvt=640 480 60 1 0 0 0
#1.8inch LCD Module
hdmi_cvt=400 300 60 1 0 0 0
#1.3inch LCD Module & 1.54inch LCD Module
hdmi_cvt=300 300 60 1 0 0 0
#1.14inch LCD Module
hdmi_cvt=300 170 60 1 0 0 0
#0.96inch LCD Module
hdmi_cvt=300 150 60 1 0 0 0

重启设备即可

sudo reboot
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想和我重名?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值