显示并行接口 (DPI) 显示器可以通过 40 针通用输入/输出 (GPIO) 连接器连接到 Raspberry Pi 设备,作为使用专用显示串行接口 (DSI) 或高清多媒体接口 (HDMI) 端口的替代方案。 所有带有 40 路接头和计算模块的 Raspberry Pi 板上都提供高达 24 位的并行 RGB 接口。此接口允许以 RGB24(红色、绿色和蓝色为 8 位)或 RGB666(每种颜色 6 位)或 RGB565(红色 5 位、绿色和 5 位蓝色)将并行 RGB 显示器连接到 Raspberry Pi GPIO。 该接口由 GPU 固件控制,用户可以通过特殊的config.txt参数和启用正确的 Linux 设备树覆盖进行编程。 GPIO引脚在Raspberry Pi GPIO的bank 0上可选择的替代功能之一是DPI(显示并行接口),它是一个简单的时钟并行接口(最多8位R,G和B;时钟,使能,hsync和vsync)。此接口可作为 GPIO bank 0 上的备用函数 2 (ALT2): GPIO | ALT2 |
---|
GPIO0 | PCLK | GPIO1 | DE | GPIO2 | LCD_VSYNC | GPIO3 | LCD_HSYNC | GPIO4 | DPI_D0 | GPIO5 | DPI_D1 | GPIO6 | DPI_D2 | GPIO7 | DPI_D3 | GPIO8 | DPI_D4 | GPIO9 | DPI_D5 | GPIO10 | DPI_D6 | GPIO11 | DPI_D7 | GPIO12 | DPI_D8 | GPIO13 | DPI_D9 | GPIO14 | DPI_D10 | GPIO15 | DPI_D11 | GPIO16 | DPI_D12 | GPIO17 | DPI_D13 | GPIO18 | DPI_D14 | GPIO19 | DPI_D15 | GPIO20 | DPI_D16 | GPIO21 | DPI_D17 | GPIO22 | DPI_D18 | GPIO23 | DPI_D19 | GPIO24 | DPI_D20 | GPIO25 | DPI_D21 | GPIO26 | DPI_D22 | GPIO27 | DPI_D23 |
注意:在 565、666 或 24 位模式下,可以通过多种方式在 DPI 输出引脚上显示颜色值(请参阅下表和下面 dpi_output_format 参数的output_format部分):
 禁用其他 GPIO 外设必须禁用使用冲突 GPIO 引脚的所有其他外设覆盖。在config.txt中,请注意注释掉或反转任何启用 I2C 或 SPI 的 dtparam: dtparam=i2c_arm=off
dtparam=spi=off
配置显示器只要您有适当的驱动程序,内核模式设置 (KMS) 通用显示接口就可以输出到任意显示器。 自动检测自动检测允许您的 Raspberry Pi 与显示器连接,而无需手动配置设备树覆盖。默认情况下,自动检测处于启用状态。您可以通过在config.txt添加以下行来启用显示自动检测: `display_auto_detect=1`
将 1 替换为 0 以禁用自动检测。当您连接启用自动检测的官方 Raspberry Pi 显示器时,KMS 会自动确定显示型号并配置相应的显示设置。 手动配置显示器注意:在 Raspberry Pi OS Bookworm 或更高版本中,以前用于设置 DPI 的 config.txt dpi_output_format 和 dpi_timings 条目已被 vc4-kms-dpi-generic 覆盖所取代。 要使用官方 Raspberry Pi 显示器以外的任何显示器,必须在 config.txt 中指定dtoverlay条目。面板制造商应在 Linux 内核代码中配置显示时序,并提供覆盖层以启用这些设置。有关示例,请参阅 Adafruit Kippah 显示条目。以下示例演示了如何在 /boot/firmware/config.txt 文件中设置 Kippah 显示设置 dtoverlay条目: dtoverlay=vc4-kms-kippah-7inch-overlay
显示时序通常在内核中定义,但您也可以在提供的 panel-dpi 驱动程序中定义它们。如果面板在内核代码中缺少定义的叠加层,则可以使用面板 dpi 驱动程序将显示时序定义为参数。这使您能够为任何显示器手动配置设备树条目。 以下示例演示了如何使用设备树参数定义计时: dtoverlay=vc4-kms-v3d
dtoverlay=vc4-kms-dpi-generic,hactive=480,hfp=26,hsync=16,hbp=10
dtparam=vactive=640,vfp=25,vsync=10,vbp=16
dtparam=clock-frequency=32000000,rgb666-padhi
注意 | 设备树行长度不得超过 80 个字符。当设置需要长度超过 80 个字符的行时,请将该参数的分配拆分为多行。 |
---|
|
参数显示树定义支持以下选项: 选择 | 描述 |
---|
clock-frequency | 显示时钟频率 (Hz) | hactive | 水平有效像素 | hfp | 水平前廊 | hsync | 水平同步脉冲宽度 | hbp | 水平后门廊 | vactive | 垂直活动线 | vfp | 垂直前廊 | vsync | 垂直同步脉冲宽度 | vbp | 垂直后门廊 | hsync-invert | 水平同步有效低电平 | vsync-invert | 垂直同步低电平有效 | de-invert | 数据使能低电平有效 | pixclk-invert | 负边沿像素时钟 | width-mm | 定义屏幕宽度(以毫米为单位) | height-mm | 定义屏幕高度(以毫米为单位) | rgb565 | 在 GPIO 0-19 上更改为 RGB565 输出 | rgb666-padhi | 在 GPIO 0-9、12-17 和 20-25 上更改为 RGB666 输出 | rgb888 | 在 GPIO 0-27 上更改为 RGB888 输出 | bus-format | 覆盖 MEDIA_BUS_FMT_* 值的总线格式,也被 rgbXXX 覆盖 | backlight-gpio | 定义用于背光控制的 GPIO(默认值:none) |
通用 I/O (GPIO)通用 I/O (GPIO) 引脚可以配置为通用输入、通用输出,也可以配置为多达 6 种特殊备用设置之一,其功能取决于引脚。 BCM2835上有三个GPIO银行。三个组中的每一个都有自己的 VDD 输入引脚。在Raspberry Pi上,所有GPIO组均由3.3V供电。 警告 | 将 GPIO 连接到高于 3.3V 的电压可能会破坏 SoC 内的 GPIO 模块。 |
---|
|
Raspberry Pi 上的 P1 接头上提供了 Bank 0 中的一系列引脚。 GPIO焊盘BCM2835封装上的GPIO连接在外设数据手册中有时被称为“焊盘”,这是一个半导体设计术语,意思是“与外界的芯片连接”。 这些焊盘是可配置的CMOS推挽输出驱动器/输入缓冲器。基于寄存器的控制设置可用于: 内部上拉/下拉启用/禁用 输出驱动强度 输入施密特触发滤波
开机状态所有GPIO引脚在上电复位时恢复为通用输入。此外,还会应用默认拉取状态,这些状态在 Arm 外设数据表的备用功能表中有详细说明。大多数 GPIO 都应用了默认拉取。 中断每个GPIO引脚在配置为通用输入时,都可以配置为Arm的中断源。可配置多个中断生成源: 电平敏感(高/低) 上升沿/下降沿 异步上升沿/下降沿
电平中断保持中断状态,直到系统软件清除电平(例如,通过服务产生中断的附加外设)。 正常的上升沿/下降沿检测在检测中内置了少量同步。在系统时钟频率下,对引脚进行采样,生成中断的标准是三周期窗口内的稳定转换,即记录 1 0 0 或 0 1 1。异步检测绕过此同步,以便检测非常窄的事件。 替代功能几乎所有的GPIO引脚都具有替代功能。可以选择 SoC 内部的外设块出现在一组 GPIO 引脚中的一个或多个上,例如,I2C 总线可以配置为至少三个单独的位置。当引脚配置为备用功能时,焊盘控制(如驱动强度或施密特滤波)仍然适用。 电压规格下表给出了基于 BCM2835、BCM2836、BCM2837 和 RP3A0 的产品(例如 Raspberry Pi Zero 或 Raspberry Pi 3+)的 GPIO 引脚的各种电压规格。有关计算模块的信息,应查看相关数据表。
 a 启用滞后 b 默认驱动强度 (8mA) c 最大驱动强度 (16mA) 下表给出了基于BCM2711的产品(例如 Raspberry Pi 4 和 Raspberry Pi 400)上 GPIO 引脚的电压规格。有关计算模块的信息,应查看相关数据表。
 a 启用滞后 b 默认驱动强度 (4mA) c 最大驱动强度 (8mA) GPIO焊盘控制GPIO驱动强度并不表示最大电流,而是表示焊盘仍符合规格的最大电流。您应设置 GPIO 驱动器强度以匹配所连接的设备,以便设备正常工作。 如何控制驱动强度焊盘内部是许多并联的驱动器。如果驱动强度设置为低 (0b000),则其中大多数是三态的,因此它们不会增加任何输出电流。如果驱动强度增加,就会有越来越多的驱动器并联。该图显示了该行为。 警告 | 对于 Raspberry Pi 4、Raspberry Pi 400 和 Compute Module 4,当前级别是图中所示值的一半。 |
---|
|

当前值是什么意思?电流值不是焊盘将提供的电流,也不是电流限制。 焊盘输出为电压源: 如果设置为高电平,焊盘将尝试将输出驱动至电源轨电压 (3.3V) 如果设置为低电平,焊盘将尝试将输出驱动至地 (0V)
焊盘将尝试将输出驱动为高电平或低电平。成功将取决于所连接内容的要求。如果焊盘对地短路,它将无法驱动高电平。它将尝试提供尽可能多的电流,并且电流仅受内阻的限制。 如果焊盘被驱动到高电平并且短路到地,它会在适当的时候失效。如果您将其连接到 3.3V 并将其驱动为低电平,情况也是如此。 满足规格取决于保证的电压水平。由于焊盘是数字焊盘,因此有两个电压电平,高电压和低电压电平。I/O 端口有两个参数用于处理输出电平: VOL=0.14V表示如果输出为低电平,则为<= 0.14V。 V OH=3.0V表示如果输出为高电平,则为>= 3.0V。 例如,16mA的驱动强度意味着如果将焊盘设置为高电平,则可以消耗高达16mA的电流,并且输出电压保证为>=VOHs。这也意味着,如果将驱动强度设置为2mA,而消耗16mA,则电压将不是VOH,而是更低。事实上,它可能不够高,无法被外部设备视为高。 |