DVP (Digital Video Port) 图像接口协议详解

DVP(Digital Video Port)是并行数字视频接口,广泛用于连接 CMOS/CCD 图像传感器与 SoC/ISP,也被称为 CPI(Camera Parallel Interface) 或 BT.601/BT.656 并行接口。

1. DVP 接口概览

┌─────────────────┐ ┌─────────────────┐

│ │ D7:0 / D9:0 │ │

│ CMOS Sensor │◄───────────────────────►│ ISP / SoC │

│ (OV5640等) │ PCLK │ (全志/瑞芯微等) │

│ │◄─────────────────────────│ │

│ │ HSYNC / VSYNC │ │

│ │◄─────────────────────────│ │

│ │ MCLK (Sensor输入时钟) │►────────────────│

└─────────────────┘ └─────────────────┘

核心特征:

并行数据线:8-bit / 10-bit / 12-bit

单向传输:Sensor → ISP,纯发送模式

时钟同步:所有数据由 PCLK(像素时钟)同步采样

独立同步信号:HSYNC(行同步)、VSYNC(帧同步)

  1. DVP 信号线详解

2.1 必备信号(必须连接)

信号名 方向 说明

D7:0 Sensor → SoC 8-bit 并行像素数据(可扩展至 10/12-bit)

PCLK Sensor → SoC 像素时钟,SoC 在 PCLK 上升沿/下降沿采样数据

VSYNC Sensor → SoC 帧同步信号,标志一帧图像的开始/结束

HSYNC Sensor → SoC 行同步信号,标志一行的开始/结束

2.2 辅助信号(可选)

信号名 方向 说明

MCLK SoC → Sensor 主时钟,Sensor 工作时钟源(典型 6~27MHz)

PWDN SoC → Sensor 电源关闭控制(低功耗/休眠)

RESET SoC → Sensor 硬件复位

I2C_SCL SoC → Sensor I2C 配置时钟(SCCB 协议)

I2C_SDA 双向 I2C 配置数据

STROBE Sensor → SoC 闪光灯同步信号(部分 Sensor 支持)

2.3 数据线位宽选择

位宽 场景 典型 Sensor

8-bit 最常用,YUV/RGB565/Bayer RAW OV2640, OV5640, GC0328

10-bit 高精度 Bayer RAW OV5647, IMX219(DVP模式)

12-bit 专业级 RAW 数据 高端安防 Sensor

  1. 时序详解

3.1 帧时序(Frame Timing)

VSYNC: ───┐ ┌───────────────────────────────────────┐ ┌──

└───┘ └───┘

│ │←────── 有效图像帧 (Active Frame) ──────→│ │

│←─→│ │←─→│

V_Sync V_Back Active Lines V_Front V_Sync

Width Porch (图像数据) Porch Width

HSYNC: ─────┐ ┌─┐ ┌─┐ ┌─┐ ┌────────────────────────┐ ┌─┐ ┌─

└─┘ └─┘ └─┘ └─┘ └─┘ └─┘

│←→│←→│←→│←→│←─ 1 行数据 (Active Line) ─→│←→│

H_Sync Active Pixels H_Front H_Sync

Width (像素时钟) Porch Width

垂直时序参数:

参数 符号 说明

V_Sync Width t_vsync 帧同步信号脉宽(行数)

V_Back Porch t_vbp 帧同步后消隐期(行数)

Active Lines t_active 有效图像行数(如 1080)

V_Front Porch t_vfp 帧同步前消隐期(行数)

Total Lines t_total 一帧总行数 = 以上之和

水平时序参数:

参数 符号 说明

H_Sync Width t_hsync 行同步信号脉宽(PCLK 周期)

H_Back Porch t_hbp 行同步后消隐期(PCLK 周期)

Active Pixels t_active 每行有效像素数(如 1920)

H_Front Porch t_hfp 行同步前消隐期(PCLK 周期)

Total Pixels/Line t_total 每行总像素数

3.2 行时序详细波形

PCLK: ─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─

└─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └

HSYNC: ─────────┐ ┌───────────

└───────────────────────────────────┘

│←─ H_Sync ─→│←─ H_Back ─→│←── Active ──→│←Hfp→│

D7:0: XXXXXXXX│XXXXXXXXXXXX│XXXXXXXXXXXX│<D0><D1><D2>...<Dn>│XX

↑ ↑ ↑

HSYNC 有效数据 有效数据

下降沿 开始采样 持续采样

采样时刻:SoC 通常在 PCLK 上升沿(或下降沿,取决于配置)采样 D7:0、HSYNC、VSYNC。

  1. 同步模式:BT.601 vs BT.656

DVP 接口的两种主流同步方式:

4.1 BT.601 模式(独立同步模式)

特性 说明

同步方式 使用独立的 VSYNC + HSYNC 引脚

数据格式 通常为 RGB / YUV / Bayer RAW

控制 需要额外的 GPIO 处理 VSYNC/HSYNC

灵活性 高,时序可调

应用 大多数 CMOS Sensor(OV 系列、GC 系列)

BT.601 连接:

Sensor SoC

D7:0 ──────► D7:0

PCLK ──────► PCLK

VSYNC ──────► VSYNC

HSYNC ──────► HSYNC

4.2 BT.656 模式(内嵌同步模式)

特性 说明

同步方式 同步码嵌入数据流(无独立 VSYNC/HSYNC)

数据格式 通常为 YUV 4:2:2(ITU-R BT.656 标准)

同步码 FF 00 00 XY(SAV/EAV)

引脚节省 不需要 VSYNC/HSYNC 引脚

应用 标准视频设备(CVBS 转换、专业视频)

BT.656 同步码结构:

行数据格式:

┌──────────────────────────────────────────────────────────────┐

│ EAV (4Byte) │ 消隐数据 │ SAV (4Byte) │ YUV 有效像素 │

│ FF 00 00 XY │ 80 10... │ FF 00 00 XY │ Cb Y Cr Y ... │

└──────────────────────────────────────────────────────────────┘

SAV/EAV 的 XY 字段定义:

Bit 名称 说明

7 Fixed = 1

6 F 场标志(0=场1,1=场2,隔行视频)

5 V 垂直消隐(1=在垂直消隐期)

4 H 水平消隐(1=EAV,0=SAV)

3-0 P3-P0 保护位(F/V/H 的 Hamming 校验)

示例:

SAV (有效行开始): FF 00 00 80 (XY=1000_0000, H=0, V=0)

EAV (有效行结束): FF 00 00 9D (XY=1001_1101, H=1, V=0)

SAV (场消隐): FF 00 00 AB (XY=1010_1011, H=0, V=1)

  1. DVP 典型配置示例

5.1 OV5640 DVP 1080P@30fps

参数 值

MCLK 24 MHz

PCLK 84 MHz (由 PLL 倍频)

数据位宽 8-bit / 10-bit

输出格式 YUV422 / RGB565 / Bayer RAW

VSYNC 低有效 / 高有效(可配置)

HSYNC 低有效 / 高有效(可配置)

PCLK 极性 上升沿 / 下降沿(可配置)

5.2 常用分辨率下的 PCLK 计算

分辨率 帧率 色深 最小 PCLK

VGA (640×480) 30fps 8-bit ~9.2 MHz

720P (1280×720) 30fps 8-bit ~27.5 MHz

1080P (1920×1080) 30fps 8-bit ~62.2 MHz

1080P (1920×1080) 60fps 8-bit ~124.4 MHz

5MP (2592×1944) 15fps 10-bit ~75.5 MHz

公式:PCLK = 水平总像素 × 垂直总行数 × 帧率 × (位宽/8)

  1. 与 MIPI CSI 的对比

特性 DVP MIPI CSI-2

信号线数 8~12 根数据线 + 同步线 2 对差分线 (CLK+/-, D0+/-)

速率/引脚 低(PCLK < 150MHz) 高(单 Lane 1~2.5Gbps)

布线难度 难(等长要求严格) 易(差分对,抗干扰强)

EMI/EMC 差(并行高频辐射大) 好(差分信号)

功耗 较高 较低

支持分辨率 ≤5MP(受限于 PCLK) 可支持 100MP+

成本 低(Sensor 便宜) 高(需要 PHY)

SoC 支持 低端/老平台常见 现代主流平台标配

典型应用 安防IPC、低端扫码、MCU项目 手机、车载、高端相机

  1. 硬件设计要点

7.1 PCB 布线关键规则

┌─────────────────────────────────────────────────────┐

│ DVP 布线要点 │

├─────────────────────────────────────────────────────┤

│ 1. 等长要求: │

│ • D7:0 数据线与 PCLK 等长,误差 < 500mil │

│ • HSYNC/VSYNC 也尽量等长 │

│ │

│ 2. 阻抗控制: │

│ • 单端 50Ω(若走线较长) │

│ │

│ 3. 串扰防护: │

│ • 数据线之间保持 3W 间距 │

│ • PCLK 与其他信号包地隔离 │

│ │

│ 4. 走线长度: │

│ • 建议 < 10cm(PCLK 越高越短) │

│ • 超过 15cm 需加终端电阻(如 22Ω 串联) │

│ │

│ 5. 参考平面: │

│ • 数据/时钟下方必须有完整 GND 平面 │

│ • 避免跨分割 │

└─────────────────────────────────────────────────────┘

7.2 端接与阻抗匹配

PCLK 频率 建议措施

< 50 MHz 通常无需特殊处理

50~100 MHz 源端串联 22~33Ω 电阻

> 100 MHz 需严格阻抗控制,考虑终端电阻

源端串联端接示例:

Sensor PCLK ──22Ω──►──────── SoC PCLK

Sensor D0 ──22Ω──►──────── SoC D0

... (每根数据线同理)

7.3 电源与去耦

电源域 典型电压 说明

AVDD 2.8V / 3.3V 模拟电源(Sensor 核心)

DVDD 1.5V / 1.8V 数字电源(IO 逻辑)

DOVDD 1.8V / 2.8V / 3.3V IO 电源(决定数字电平)

注意:DOVDD 决定 D7:0 / PCLK 的电平标准,必须与 SoC 的 GPIO 电平匹配!

  1. SoC 端软件配置流程

以 Linux V4L2 框架为例:

// 1. 上电时序

sensor_power_on() {

gpio_set_value(PWDN, 1); // 退出休眠

usleep(5000);

gpio_set_value(RESET, 0); // 复位

usleep(10000);

gpio_set_value(RESET, 1); // 释放复位

usleep(50000);

}

// 2. I2C/SCCB 初始化 Sensor 寄存器

sensor_init() {

i2c_write(0x30, 0xFF, 0x01); // 选择寄存器页

i2c_write(0x30, 0x3C, 0x32); // 设置输出格式

i2c_write(0x30, 0x11, 0x80); // 设置 PLL

// ... 更多寄存器配置

}

// 3. 配置 SoC DVP 控制器

dvp_config() {

// 设置 PCLK 采样边沿

set_pclk_polarity(RISING_EDGE);

// 设置 VSYNC/HSYNC 极性

set_vsync_polarity(ACTIVE_HIGH);

set_hsync_polarity(ACTIVE_HIGH);

// 设置输入格式

set_input_format(BAYER_RGGB);

// 设置 DMA 缓冲

set_dma_buffer(addr, width * height * 2);

// 启用 DVP 捕获

enable_capture();

}

  1. 常见问题与调试

现象 可能原因 排查方法

图像完全黑屏 Sensor 未初始化 / 未出 PCLK 示波器量 PCLK/VSYNC/HSYNC

图像有条纹 PCLK 边沿采样错误 修改 PCLK 极性配置

图像偏移/撕裂 HBP/VBP 参数不对 核对 Sensor 输出时序文档

图像颜色错乱 数据线接反 / 格式不匹配 检查 D7:0 线序和 RGB/YUV 设置

图像有噪点 电源不稳 / 地弹 检查 AVDD 纹波,加去耦电容

高分辨率花屏 PCLK 过高,布线太差 降帧率、缩短线长、加端接电阻

调试波形检查清单

用示波器检查以下信号质量:

PCLK:频率是否稳定,占空比是否在 40%~60%

VSYNC:周期是否为 1/帧率

HSYNC:周期是否为 1/(帧率 × 总行数)

D7:0:用逻辑分析仪抓并行数据,看是否在消隐期之后出现有效像素值

  1. 总结

DVP 是一种简单直接的并行图像接口,在低成本、低分辨率场景中仍有广泛应用,但在高分辨率(>5MP)或高帧率场景下已被 MIPI CSI-2 取代。

适用场景:

MCU 级别项目(STM32 + OV2640)

低成本 IPC(海思/全志低端方案)

工业视觉(短距离、低干扰环境)

教学/原型验证

设计核心口诀:

等长是关键,阻抗要匹配,电源要干净,PCLK 别太快