去年给工作室配了台树莓派做自动化测试机,结果发现每次调试都要接显示器实在太麻烦。正好手头有个闲置的3.5寸小屏幕,但插上去不是花屏就是没信号。查了三天资料才发现,这种第三方屏幕需要单独配置驱动和分辨率参数。今天就把这套完整的驱动方案整理出来,帮大家避开我踩过的坑。
这种小屏幕在树莓派生态里很常见,主要分三种情况:
我们重点解决最麻烦的第三种情况。这类屏幕通常需要:
重要提示:先确认屏幕型号!不同厂商的驱动差异很大,我的方案适用于WaveShare的3.5B型号,其他品牌可能需要调整驱动文件。
bash复制sudo apt update && sudo apt full-upgrade -y
sudo raspi-config
编辑/boot/config.txt:
bash复制sudo nano /boot/config.txt
在文件末尾添加:
code复制dtparam=spi=on
dtoverlay=waveshare35b:rotate=270
hdmi_force_hotplug=1
hdmi_group=2
hdmi_mode=87
hdmi_cvt 480 320 60
参数说明:
克隆驱动仓库并安装:
bash复制git clone https://github.com/waveshare/LCD-show.git
cd LCD-show/
sudo ./LCD35B-show
安装完成后会提示重启,此时屏幕应该能正常显示但触摸可能还不准。
执行校准工具:
bash复制sudo apt install xinput-calibrator
xinput_calibrator
按照屏幕提示依次点击四个角的光标,完成后会生成校准参数。将这些参数添加到/usr/share/X11/xorg.conf.d/99-calibration.conf:
code复制Section "InputClass"
Identifier "calibration"
MatchProduct "ADS7846 Touchscreen"
Option "Calibration" "160 3903 3896 160"
Option "SwapAxes" "1"
EndSection
具体数值以你的校准结果为准。
code复制core_freq=250
core_freq_min=100
SPI屏幕会占用较多资源,建议:
bash复制sudo nano /etc/rc.local
在exit 0前添加:
code复制/usr/bin/tvservice -o
关闭HDMI输出以节省资源。
bash复制sudo apt install fbi
bash复制sudo nano /etc/systemd/system/splashscreen.service
内容为:
code复制[Unit]
Description=Splash Screen
[Service]
ExecStart=/usr/bin/fbi -d /dev/fb0 --noverbose -a /home/pi/splash.bmp
StandardOutput=null
[Install]
WantedBy=multi-user.target
对于电池供电场景:
bash复制sudo nano /boot/config.txt
添加:
code复制# 降低GPU内存
gpu_mem=16
# 关闭蓝牙/WiFi(根据需要)
dtoverlay=disable-bt
dtoverlay=disable-wifi
这套方案在工作室的10台树莓派上稳定运行了半年多,关键是三点:选对驱动版本、做好电源滤波、校准文件别放错位置。如果遇到黑屏别慌,按住Shift键启动可以跳过加载驱动进入安全模式。