Hardware

Raspberry Pi

What is Raspberry Pi?

The Raspberry Pi is a series of small single-board computers developed by the Raspberry Pi Foundation. The Raspberry Pi is designed to be a low-cost, credit-card-sized computer that can be used for a wide range of applications, including education, hobby projects, and industrial applications. The Raspberry Pi runs a variety of operating systems, including Linux-based distributions like Raspbian and Ubuntu, as well as Windows 10 IoT Core.

Raspberry Pi


Raspberry Pi 5

Raspberry Pi 5 Photo

Raspberry Pi 5 Photo

Raspberry Pi 5 Photo

Raspberry Pi 5 Photo

Power

  • USB-C Power Supply: 5V/3A

Check the current power supply status:

> vcgencmd get_config usb_max_current_enable

Startup

当你第一次将树莓派插入电源时,它会自动开机并启动操作系统,无需按动电源按钮。

如果你运行的是树莓派桌面系统,你可以通过短暂按下电源按钮来启动一次安全关机。屏幕上会出现一个菜单,询问你是否要关机、重启或注销。从菜单中选择一个选项,或再次按下电源按钮来启动一次安全关机。

如果你运行的是树莓派桌面系统,你可以快速连续按两次电源按钮来进行关机。如果你运行的是没有桌面的树莓派OS Lite系统,只需按一次电源按钮即可启动关机。

要强制进行硬关机,请长按电源按钮。

如果树莓派主板已经关机但仍然通电,按下电源按钮将重启主板。

默认的关机功率大约在1到 1.4 瓦之间。但可以通过手动编辑EEPROM 配置来降低这个数值,使用命令 sudo rpi-eeprom-config -e 进行编辑。将设置更改为以下内容:

POWER_OFF_ON_HALT=1

这应该会将关机时的功耗降低到大约0.01瓦。

添加额外的电源开关

Raspberry Pi 5 Power Button

J2 跳线位于 RTC 电池连接器和主板边缘之间。通过在两个焊盘之间添加一个常开(NO)的瞬时开关,这个接口允许你为 Raspberry Pi 5 添加自己的电源按钮。短暂地闭合这个开关将执行与板载电源按钮相同的操作。

USB 启动和供电

默认情况下,使用 3A 电源时不启用USB启动。然而,在 /boot/firmware/config.txt 文件中设置 usb_max_current_enable=1 将覆盖这一设置,并允许使用较低瓦数的电源进行 USB 启动。

在不在 config.txt 中加入这条语句的情况下使用3安培电源启动时,引导程序的 HDMI 诊断屏幕上会显示一个警告信息,并且引导程序将跳过到下一个启动模式,例如:

Trying partition: 0
type: 32 lba: 8192 'mkfs.fat' ' bootfs     ' clusters 130554 (4)
rsc 32 fat-sectors 1020 root dir cluster 2 sectors 0 entries 0
FAT32 clusters 130554
[MSD [01:00] 2.00 000000:02] autoboot.txt not found
Trying partition: 0
type: 32 lba: 8192 'mkfs.fat' ' bootfs     ' clusters 130554 (4)
rsc 32 fat-sectors 1020 root dir cluster 2 sectors 0 entries 0
FAT32 clusters 130554
Read config.txt bytes     2109 hnd 0x10a
[MSD [01:00] 2.00 000000:02] pieeprom.upd not found
usb_max_current_enable default 0 max-current 900
Read bcm2712-rpi-5-b.dtb bytes    71862 hnd 0x5101
dt-match: compatible: raspberrypi,5-model-b match: brcm,bcm2712
dt-match: compatible: brcm,bcm2712 match: brcm,bcm2712
***
USB boot requires a high current (5V 5A) power supply.
To disable this check set usb_max_current_enable=1 in config.txt
or press the power button to temporarily enable usb_max_current_enable
and continue booting.
See https://rptl.io/rp5-power_supply for more information

引导程序会提示你按下电源按钮以继续,这实际上会临时为当前启动设置 usb_max_current_enable=1,以允许你从USB启动。除非你的磁盘有自己的外部电源,否则可能无法为你的树莓派提供足够的电流。

电源适配器和树莓派操作系统

引导程序通过设备树 /proc/device-tree/chosen/power 将有关电源的信息传递给操作系统。用户通常不会直接读取这些信息。

  • max_current 最大电流,以毫安表示
  • uspd_power_data_objects PDO(电源数据对象)的转储 - 供高级用户调试
  • usb_max_current_enable 电流限制器是设置为高还是低
  • usb_over_current_detected 在控制权转移给操作系统之前,在启动过程中是否检测到任何USB过电流
  • reset_event PMIC复位原因,例如看门狗、过电压或欠电压、过温

PMIC 内置的 ADC(模拟数字转换器)可以测量供电电压 EXT5V_V 等。

> vcgencmd pmic_read_adc

你无法看到 USB 电流或任何其他直接连接到5伏的设备,因为这绕过了PMIC(电源管理集成电路)。你不能把这些加起来等于源电源的总功耗瓦数。然而,监控像核心电压这样的事物可能是有用的。

Fan Pins

Pin定义
1+5V
2PWM
3GND
4Tach

MIPI CSI/DSI

在之前型号的树莓派上的 CSI 和 DSI 端口已经合并为两个双功能的 CSI/DSI(MIPI)端口。为了适应主板,这些端口现在使用了更密集的连接器排列,之前仅在树莓派 Zero 和 CM4IO 板上见到。你可以将两个显示器、两个相机,或一个相机和一个显示器连接到这些端口。

对于像相机这样的树莓派设备,不需要进行任何配置。如果你将相机插入任一 MIPI 连接器,你将获得适当的 CSI 连接,而且你的相机将可供操作系统使用。

连接显示器

如果你在 Raspberry Pi 5 上使用官方的7英寸触摸显示屏,它不会自动配置。你需要在你的 /boot/firmware/config.txt 文件中添加以下两行中的一行。如果将显示屏连接到 CAM/DISP 1连接器,你应该添加:

dtoverlay=vc4-kms-dsi-7inch

或者,如果将其连接到CAM/DISP 0连接器,你可以添加以下这行:

dtoverlay=vc4-kms-dsi-7inch,dsi0

RTC

Raspberry Pi 5 包括一个RTC(实时时钟)模块。这个模块可以通过位于 USB-C 电源连接器右侧的主板上的 J5(BAT)连接器使用电池供电。

你可以设置一个唤醒闹钟,它会将主板切换到低功耗状态(大约3mA)。当到达闹钟时间时,主板将重新通电。这对于定时任务(如延时摄影)非常有用。

为了支持唤醒闹钟的低功耗模式,你应该编辑引导加载程序配置:

> sudo -E rpi-eeprom-config --edit

添加:

POWER_OFF_ON_HALT=1
WAKE_ON_GPIO=0

通过以下命令测试:

> echo +600 | sudo tee /sys/class/rtc/rtc0/wakealarm
> sudo halt

这将使主板进入非常低功耗状态,然后在10分钟后唤醒并重新启动。

RTC还在启动时提供时间,例如在 dmesg 中:

[1.295799] rpi-rtc soc:rpi_rtc: setting system clock to 2023-08-16T15:58:50 UTC (1692201530)

RTC 功能在没有互联网连接以通过 NTP 获取时间的情况下可能会有用。

安装备用电池

不建议为 RTC 使用主锂电池,因为它有一个涓流充电电路,默认情况下是禁用的。如果启用,这将迅速消耗电池。

电池部件是一个可充电的锂锰纽扣电池,配有预装的两针JST插头和粘性安装垫。当主板的主电源断开时,它适合为树莓派5的RTC供电,其断电电流在微安级的个位数,保持时间可达数月之久。

UART

Raspberry Pi 5 有一个专用的调试串口(UART)连接器。它的最大波特率为 921,600bps,可以通过 EEPROM 参数配置。它始终处于活动状态并已启用,提供对早期启动和固件信息的直接访问;以及在启动后的 Linux 控制台。

Raspberry Pi 5 UART

UART 连接器是一个与树莓派调试连接器规范兼容的三针头。随调试探针提供的一根电缆终端是合适的 JST 连接器,允许你连接到 UART。

默认情况下,它在 /dev/ttyAMA0(别名为 /dev/serial0)上提供 115,200 波特率的 8N1 连接。

创建一个串口控制台

之前的树莓派型号不同,在那些型号上你可以在 GPIO14 和 GPIO15 上启用串行控制台,而在 Raspberry Pi 5 上,通过 raspi-config 启用串行控制台将会在新的 UART 连接器上的 /dev/ttyAMA0 上启用串行控制台。

PCIE

Raspberry Pi 5 包括一个 PCIe Gen2 x1 插槽,可以用于连接外部设备,如 NVMe SSD 或其他 PCIe 设备。规格书

连接器型号:Würth 687316124422

原理图:Raspberry Pi 5 PCIe Schematic

PCIE_PWR_EN 引脚

这个引脚是 Raspberry PI 5 向 Hat 输出的 3.3V 信号,用来通知 Hat 通电。例如,对于 Raspberry PI 5 M.2 M Key HAT+,这可以启用由进入的 5V 生成的 M.2 3.3V 电源。 在PIP上对这个引脚提供 100K 的低电平拉动电阻。

PCIE_DET_WAKE 引脚

这个引脚是输入到 Raspberry Pi 5 的 3.3V 信号。通过从 5V 的电阻分压器(3.6K / 6.8K,产生 2.35K 的输出阻抗)或从永久启用的 3.3V(使用2.2K电阻)将其拉高到3.3V。Raspberry Pi 5 在启动时会检测到这个高电平,并自动探测 PCIe 总线。 使用 PCIe WAKE# 将其拉低。

PCIE_CLKREQ 引脚

CLKREQ_N 的主要功能是请求或指示时钟资源。当 M.2设备(如SSD或无线网卡)不需要时钟信号或正在低功耗模式下运行时,它可以通过CLKREQ_N引脚向主机(比如主板或处理器)发送信号,请求关闭时钟信号。这有助于降低整体的能耗,因为在不需要时钟信号的时候关闭它可以减少功耗。

在电脑的功耗管理和优化方面,尤其是在移动设备或节能设备中,CLKREQ_N是一个关键的功能。通过使用这样的信号,设备可以根据需要动态地调节其电源使用,从而提高能效和延长电池寿命。

FFC

PCIE 连接器是一个 16 脚 0.5 毫米间距的 FFC(柔性扁平电缆)连接器。推荐长度为 50 毫米或更短。FFC 必须在连续的接地平面上控制 PCIe 差分对的阻抗为 90 欧姆±10%。

FFC 必须是对面接触类型,见上图。如规定,同侧接触类型的 PCIe FFC 将不可逆转,因此如果反向插入,将会导致 Raspberry PI 5 和/或 Hat 短路。

PCIE Configuration

Raspberry Pi 5 的 PCIe 总线是通过 EEPROM 配置的。这意味着你可以通过编辑 EEPROM 配置文件来配置 PCIe 总线。这是通过以下命令完成的:

> pi@raspberrypi ~ $ sudo rpi-eeprom-config --edit

BOOT_ORDER 修改为 0xf416,非官方 NVME M.2 扩展板可能需要添加 PCIE_PROBE 选项。

# Change the BOOT_ORDER line to the following:
BOOT_ORDER=0xf416

# Add the following line if using a non-HAT+ adapter:
PCIE_PROBE=1

读写速度测试

使用 hdparm 可以进行磁盘读取速度基准测试:

  1. 安装 hdparm
pi@raspberrypi ~ $ sudo apt update
pi@raspberrypi ~ $ sudo apt upgrade
pi@raspberrypi ~ $ sudo apt install hdparm
  1. 识别磁盘:

在运行 hdparm 之前,您需要知道要基准测试的磁盘的设备标识符。您可以使用以下命令列出所有连接的磁盘:

pi@raspberrypi ~ $ lsblk

# or

pi@raspberrypi ~ $ sudo fdisk -l

这将显示存储设备和分区的列表。寻找您的目标磁盘,例如 Raspberry Pi 中的 SD 卡为 /dev/mmcblk0

  1. 运行 hdparm

要测试磁盘的读取速度,请使用以下命令:

pi@raspberrypi ~ $ sudo hdparm -tT /dev/nvme

将 /dev/nvme 替换为您实际的磁盘标识符(如 /dev/nvme0n1)

这些选项的含义如下:

  • -t:执行设备读取的时间测量,用于基准测试和比较。
  • -T:执行缓存(内存)读取的时间测量。
  1. 解读结果:

输出将显示两个主要指标:

  • 缓冲磁盘读取时间:这测量了驱动器将数据读入系统缓冲区(RAM)的速度,反映了磁盘读取速度。
  • 缓存读取时间:这测量了从缓存(内存)读取数据的速度,通常会快得多,不受磁盘速度的限制。

hdparm read speed

  1. 安全提示:

hdparm 是一个功能强大的工具,如果使用不当,也包含可能擦除数据或损坏您的驱动器的命令。始终确保您使用正确的设备标识符,并避免使用写入或擦除命令,除非您确信其功能。

请记住,hdparm 主要用于测量读取速度。对于写入速度,您可能需要使用其他工具,如 dd。此外,hdparm 提供的性能数字是基本的,可能无法准确反映实际使用中的情况,尤其是对于有大量小型随机读/写的任务。

  1. 写入速度测试

dd 命令可以用来测试磁盘写入速度。 警告:使用 dd 时必须小心,因为不正确的选项可能会清除你磁盘。

此命令将向磁盘写入一个名为 test 的 200MB 文件:

pi@raspberrypi ~ $ dd if=/dev/zero of=test bs=1048576 count=200

hdparm write speed


Update Bootloader

Use Raspberry Pi Imager

  1. Download and install the Raspberry Pi Imager.
  2. Open the Raspberry Pi Imager and select the "Choose OS" option.
  3. Select "Misc utility images" and then "Bootloader".
  4. Choose the latest bootloader version and click "Write".

Raspberry Pi Imager

Use Command Line

  1. Check the current bootloader version:
> vcgencmd bootloader_version

Raspberry Pi Imager

  1. Update to the latest version:

Before starting the update, make sure raspberry pi 5 is connected to the Internet;

> sudo apt update
> sudo apt upgrade -y
> sudo rpi-eeprom-update
  1. Use tool raspi-config to update
> sudo raspi-config

Then select 6 Advanced Opitions > A5 Bootloader Version > E1 Latest, answer Yes.

Then reboot and the firmware will be updated (requires Internet access).


GPIO

Check the current Raspberry Pi Pinout:

> pinout

Raspberry Pi Pinout

Raspberry Pi OS

apt Sources Mirror

> sudo nano /etc/apt/sources.list

Comment out the first original source and add the following sources:

#deb-src http://archive.raspberrypi.org/debian/ stretch main
deb http://mirrors.aliyun.com/raspbian/raspbian/ buster main contrib non-free rpi
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ buster main contrib non-free rpi
Previous
KiCAD
Next
ROS