ST7789(spi)平替树莓派桌面显示屏幕
效果展示
环境:
- 硬件:
树莓派4B , ST7789屏幕spi驱动
树莓派4B的GPIO引脚接线图
- 软件:
2024-03-12-raspios-bullseye-arm64 (要是bullsys,试过bookworm的,没成功)
BCM2835库
lgpio库
LCD_Module_RPI_code测试文件
Waveshare_fbcp.zip
提示
为了后续的操作方便性,最好把用户名设置为pi
,主机名设置raspberry
,且下载的文件放置在/home/pi
下,也就是~
,这样后续的编译安装等操作都会比较方便。
操作
0.安装镜像
- 克隆仓库至本地
git clone https://gitee.com/zxz_FINE/raspberry4-b_-spi_-display_-desktop.git
- 使用
2024-03-12-raspios-bullseye-arm64
镜像,或其他的bullsys镜像也可以,下载地址:https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-desktop - 使用树莓派烧录工具,烧录下载的镜像到SD卡中
- 把配置文件改改,支持SSH,WIFI什么的
- 把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
屏蔽下图对应的语句即可
随后需要进行重启
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&。注意一定要添加"&" 后台运行,否则可能会出现系统不能启动的情况。
设置用户界面显示尺寸在/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