玩转树莓派屏幕之一:LCD屏幕显示

最近在淘宝上购买的3.5寸 MHS屏幕,准备用于展示树莓派运行时的状态。但是随着不断的对树莓派屏幕折腾,坑越踩越多,涉及的内容也是越来越多,需要记录一下防止自己忘记了。

屏幕介绍

屏幕图片:

image

产品介绍

  • 物理分辨率320×480,带电阻式触摸控制
  • 支持125MHz SPI信号输入,显示稳定无花屏无闪烁
  • 配合树莓派使用刷新率约50FPS,播放视频玩游戏无压力
  • 支持FBCP软件驱动,支持双屏显示,可通过软件调整分辨率进行缩放
  • 大小与树莓派相同,完美兼容并可直接插入任何版本树莓派(Raspberry Pi ZeroW,A, A+, B, B+, 2B, 3B, 3B+,4B)
  • 支持Raspbian/Ubuntu/Kali/Retropie系统,提供驱动和镜像
  • 本产品通过CE、RoHS认证

引脚说明:

屏幕引脚:
image

树莓派引脚图:
image

屏幕引脚与树莓派对应关系:

引脚号 标识 描述 树莓派引脚
1, 17 3.3V 电源正(3.3V电源输入)
2, 4 5V 电源正(5V电源输入)
3, 5, 7, 8, 10, 12, 13, 15, 16 NC NC悬空
6, 9, 14, 20, 25 GND 电源地
11 TP_IRQ 触摸面板中断,检测到触摸面板有按下则为低电平 GPIO17
18 LCD_RS 指令/数据 寄存器选择,低电平为指令,高电平为数据 GPIO24
19 LCD_SI / TP_SI LCD显示/ 触摸面板的SPI数据输入 SPI0 MOSI
21 TP_SO 触摸面板的SPI数据输出 SPI0 MISO
22 RST 复位信号,低电平复位 GPIO 25
23 LCD_SCK / TP_SCK LCD显示/ 触摸面板的SPI时钟信号 SPI0 SCLK
24 LCD_CS LCD片选信号,低电平使能 SPI0 CS0
26 TP_CS 触摸面板片选信号,低电平使能 SPI0 CS1

屏幕驱动安装

有两种方式,一种是使用卖家直接提供的已经安装好驱动的镜像,另外是自己根据驱动进行安装。
这里仅展示驱动安装方式,安装好的驱动的镜像可以按照MHS-3.5inch RPi Display中的内容进行查看。

sudo rm -rf LCD-show
git clone https://github.com/goodtft/LCD-show.git
chmod -R 755 LCD-show
cd LCD-show/
sudo ./MHS35-show

安装过程中需要进行联网,并且需要安装依赖,请提前更换国内镜像源和保持网络问题。安装完成之后会自动进行重启,重启之后就可以在屏幕上看到输出了。

校准触摸屏

方式一:如果有安装桌面使用以下方法:

校准触摸屏以及调整角度可以在MHS-3.5inch RPi Display中找到解决方法。

方式二:没有安装桌面:

1、安装依赖

sudo apt update
sudo apt install libts-bin evtest

2、测试event_test测试哪个是触摸屏:

sudo evtest

结果中显示/dev/input/event0为触摸屏

root@raspberrypi:~# evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:  ADS7846 Touchscreen

3、设置环境变量:

export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/lib/aarch64-linux-gnu/ts0
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0

💡 注意:TSLIB_PLUGINDIR=/usr/lib/aarch64-linux-gnu/ts0 路径可能因系统版本略有不同,可用 find /usr -name "ts" -type d 查找。

4、测试:

sudo ts_calibrate

此时屏幕(即使无桌面)会显示 五个十字光标,用触摸笔或手指依次点击即可完成校准。
校准数据会保存到 /etc/pointercal。
依次点击完后显示:

root@raspberrypi:~# ts_calibrate
xres = 480, yres = 320
Took 21 samples...
Top left : X =  822 Y = 3594
Took 18 samples...
Top right : X =  779 Y =  642
Took 21 samples...
Bot right : X = 3315 Y =  626
Took 19 samples...
Bot left : X = 3347 Y = 3567
Took 12 samples...
Center : X = 2077 Y = 2117
514.244507 -0.001093 -0.128951
-17.431484 0.086928 -0.001107
Calibration constants: 33701528 -71 -8450 -1142389 5696 -72 65536

5、测试:(先设置环境变量才能校准,否则报错)

ts_test

参考文档