CM4-DISP-BASE-2.8A教程

资料


官方手册

CM4核心板数据手册

原理图

3D图

程序

软件

产品概述

我是专门为树莓派计算模块4代的设计2.8 寸 CM4 触摸屏扩展板,CM4-DISP-BASE-2.8A是一款可以搭配树莓派 Compute Module 4 使用的底板,使用 5V/ 2.5A USB Type C接口供电,可直接接入 CM4 核心板,搭载了 2.8 英寸 IPS 显示屏,可满足 CM4 各版本的运行,且支持摄像头和视频输出。

使用注意事项

1:显示不是HDMI接口,而是DPI接口,
2:模块工作对于电源要求比较高,建议使用5V/4A 或者更加高功率的电源

产品尺寸

CM4-DISP-BASE-2.8A

Compute_Module 4 核心板

板载资源

CM4-DISP-BASE-2.8A-details-intro1.jpg

标号名称说明
1CM4 连接器适用于 Compute Module 4 的所有版本
2CAM 接口22PIN MIPI CSI 摄像头接口
3供电/烧录接口5V/2.5A 供电,也可以作为 eMMC 烧录接口
4USB 2.0 接口USB 2.0 接口,支持各种 USB 设备插入
5HDMI1 接口Micro HDMI 接口,支持 4K 30fps 输出
6BOOTON:CM4 USB Type C 开机引导
OFF: eMMC或者SD 卡开机引导
7接口扩展包含千兆网口、PCIE、USB等接口

CM4-DISP-BASE-2.8A-details-intro2.jpg

标号名称说明
1USB 2.0 接口3路USB 2.0 接口,支持各种 USB 设备插入
2M.2 M KEY接口适用于NVIE固态硬盘,或者支持 PCIE M.2 接口的通信模块
3千兆网口RJ45 千兆网口,支持 10 / 100 / 1000M 网络接入
4M.2 LEDM.2 指示接口工作状态
5接口接入扩展接口接入


注意事项

禁止带电时拔插任何设备

镜像烧录

EMMC版本点击这里
LITE版本点击这里

USB2.0

USB接口在CM4上默认是被禁用的,以节省电源。如果需要启动,你需要在config.txt文件中添加以下内容:

dtoverlay=dwc2,dr_mode=host

重启之后即可

如果使用最新的树莓派OS(2021年10月30号之后的镜像)USB2.0是默认是OTG模式,CM4会报错:

config failed, hub doesn't have any ports! (err -19)

不过USB还是可以使用的,如果想移除这个错误,在config.txt的[cm4]中移除otg_mode=1,并且添加dtoverlay=dwc2,dr_mode=host(不添加是无法识别USB的)。
CM4 Burn EMMC 12.png


显示

用于Raspberry Pi OS Bullseye分支

1. config.txt文件,在config.txt末端加入以下代码并保存:
dtoverlay=vc4-kms-v3d
dtoverlay=vc4-kms-DPI-28inch
dtoverlay=waveshare-28dpi-3b-4b   
dtoverlay=waveshare-28dpi-3b
dtoverlay=waveshare-28dpi-4b
2. 下载2.8inch DPI LCD DTBO文件并解压复制到overlays目录(/boot/overlays/)
wget https://www.waveshare.net/w/upload/b/b5/28DPI-DTBO.zip
unzip -o 28DPI-DTBO.zip -d ./28DPI-DTBO
cd 28DPI-DTBO/28DPI-DTBO/
sudo cp vc4-kms-DPI-28inch.dtbo /boot/overlays/
sudo cp waveshare-28dpi-* /boot/overlays/




用于Raspberry Pi OS Buster分支和Ubuntu系统

1. 在config.txt修改如下:

注释dtoverlay=vc4-fkms-V3D。
添加如下:

gpio=0-9=a2
gpio=12-17=a2
gpio=20-25=a2
dtoverlay=dpi24
enable_dpi_lcd=1
display_default_lcd=1
extra_transpose_buffer=2
dpi_group=2
dpi_mode=87
dpi_output_format=0x7F016
hdmi_timings=480 0 26 16 10 640 0 25 10 15 0 0 0 60 0 32000000 1
dtoverlay=waveshare-28dpi-3b-4b
dtoverlay=waveshare-28dpi-3b
dtoverlay=waveshare-28dpi-4b
2 保存并安全弹出TF卡,将TF卡插入树莓派。
3 给树莓派上电,正常等待约三十秒后可正常显示。

Raspberry Pi OS和Kali显示旋转

先检查使用的系统是否有加载KMS或FKMS驱动。

查看方法:在/boot/config.txt中,看对应的主板是否有打开了dtoverlay=vc4-kms-v3d或dtoverlay=vc4-fkms-v3d。

有加载KMS或FKMS驱动

使用以下命令进行显示旋转:

sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
#在autostart文件末端输入对应显示旋转角度的指令,重启后生效
#0: 旋转0度; 1:旋转270度;2: 旋转180度; 3: 旋转90度
xrandr -o 1
没有加载KMS或FKMS驱动

使用以下命令进行显示旋转:

sudo nano /boot/config.txt
#在config.txt文件末端输入对应显示旋转角度的指令,重启后生效
#0: 旋转0度; 1:旋转90度;2: 旋转180度; 3: 旋转270度
display_rotate=3


触摸旋转

在进行显示旋转后,由于触摸并没有随着显示角度做出更改,导致触摸位置不对。所以需要对触摸做出修改。

1. 安装libinput

sudo apt-get install xserver-xorg-input-libinput
如果你安装的是Ubuntu系统。安装指令为
sudo apt install xserver-xorg-input-synaptics

2. 在/etc/X11/下创建xorg.conf.d目录 (如果该目录已存在,这直接进行第3步)

sudo mkdir /etc/X11/xorg.conf.d

3. 复制40-libinput-conf 文件到刚刚创建的目录下

sudo cp /usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/

4. 编辑该文件

sudo nano /etc/X11/xorg.conf.d/40-libinput.conf 

找到 touchscreen的部分,在里面添加以下语句,然后保存即可

Option "CalibrationMatrix" "0 1 0 -1 0 1 0 0 1"

类似下图位置:
Touch roate.jpg
5. 重启树莓派

sudo reboot

完成以上步骤即可进行90度旋转。

注:
90 度旋转: Option "CalibrationMatrix" "0 1 0 -1 0 1 0 0 1"

180度旋转: Option "CalibrationMatrix" "-1 0 1 0 -1 1 0 0 1"

270度旋转: Option "CalibrationMatrix" "0 -1 1 1 0 0 0 0 1"

M.2

M.2 接口类型为M KEY, 只支持PCIE通道的设备(包括NVME固态等等),不支持SATA硬盘。
CM4-DISP-BASE-2.8A-M-2.png
支持部分转接卡,走PCIE通道, 部分设备树莓派官方镜像无法驱动,需要重新编译内核。

开启摄像头

执行如下:

wget https://www.waveshare.net/w/upload/a/a2/Dts-2.8A.zip
 unzip -o  Dts-2.8A.zip -d ./Dts-2.8A
 sudo chmod 777 -R Dts-2.8A
 cd Dts-2.8A/
 sudo  dtc -I dts -O dtb -o /boot/dt-blob.bin dt-blob-cm4-singlecam-dpi28.dts


旧版本(Buster)

注:在2021年12月2日,树莓派的Raspberry Pi OS分成了两个分支,分别是Buster分支和Bullseye分支。

其中Buster分支是老系统的延续,更为稳定。Bullseye分支则添加了一些新的功能,使用了开源的库和新的接口。

摄像头需要运行raspi-config,选择Interfacing Options->Camera->Yes->Finish-Yes,reboot系统,打开enable camera,然后重启即可保存修改。

如果你使用的Buster分支的系统,镜像无需任何改何修改即可正常使用。 摄像头画面:

sudo raspivid -t 0 -cs 0

新版本(Bullseye)

#检查摄像头是否被检测到
libcamera-hello --list-cameras

#打开的摄像头
libcamera-hello  --camera 0

#拍摄照片
libcamera-jpeg -o test.jpg