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(帧同步)
- 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
- 时序详解
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。
- 同步模式: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)
- 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)
- 与 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项目 手机、车载、高端相机
- 硬件设计要点
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 电平匹配!
- 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();
}
- 常见问题与调试
现象 可能原因 排查方法
图像完全黑屏 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:用逻辑分析仪抓并行数据,看是否在消隐期之后出现有效像素值
- 总结
DVP 是一种简单直接的并行图像接口,在低成本、低分辨率场景中仍有广泛应用,但在高分辨率(>5MP)或高帧率场景下已被 MIPI CSI-2 取代。
适用场景:
MCU 级别项目(STM32 + OV2640)
低成本 IPC(海思/全志低端方案)
工业视觉(短距离、低干扰环境)
教学/原型验证
设计核心口诀:
等长是关键,阻抗要匹配,电源要干净,PCLK 别太快