BT.656 / BT.1120 TX 开发指南
本文档基于瑞芯微官方文档 Rockchip_BT656_TX_AND_BT1120_TX_Developer_Guide_CN.pdf(V1.4.0, 2024-03-21)整理,介绍 Rockchip 平台 BT.656 和 BT.1120 视频输出接口的调试方法。
- 芯片平台:RV1109/RV1126 / RV1103/RV1106 / RK356X / RK3588 / RK3562 / RK3576
- 内核版本:Linux kernel 4.19 / 5.10+
- 读者对象:技术支持工程师、软件开发工程师、硬件开发工程师
一、基础概念
BT.656 和 BT.1120 分别定义了 SDTV 和 HDTV 的视频接口协议。
核心特点:
- 通过消隐期传输 EAV / SAV 定位基准码作为嵌入式同步信号
- 数据格式:YCbCr 4:2:2
- 位深:均为 8bit
- BT.656 = 8bit 并行 (1 字节/时钟)
- BT.1120 = 16bit 并行 (2 字节/时钟)
1.1 定位基准码
基准码格式:0xFF 0x00 0x00 XY
第四个字节 XY 的定义:
| Bit | 名称 | 说明 |
|---|---|---|
| Bit9 | - | 固定为 1(8bit 模式下不体现) |
| Bit8 | F | 场标识:0=偶场,1=奇场 |
| Bit7 | V | 0=有效视频行,1=消隐行 |
| Bit6 | H | 0=SAV(Start of Active Video),1=EAV(End of Active Video) |
| Bit[5:2] | P3~P0 | 保护位,由 F/V/H 计算得出 |
| Bit[1:0] | - | 固定为 0(8bit 模式下无) |
保护位计算:
- P3 = V XOR H
- P4 = F XOR H
- P3 = F XOR V
- P2 = F XOR V XOR H
1.2 基准码表
| F | V | H | EAV CODE | SAV CODE |
|---|---|---|---|---|
| 1 | 1 | 1 | 0xFF 0x00 0x00 0x9D | 0xFF 0x00 0x00 0x80 |
| 1 | 1 | 0 | 0xFF 0x00 0x00 0xB2 | 0xFF 0x00 0x00 0xAB |
| 1 | 0 | 1 | 0xFF 0x00 0x00 0xDA | 0xFF 0x00 0x00 0xC7 |
| 1 | 0 | 0 | 0xFF 0x00 0x00 0xF1 | 0xFF 0x00 0x00 0xEC |
| 0 | 1 | 1 | - | - |
| ... | ... | ... | ... | ... |
1.3 P 制(逐行)和 I 制(隔行)扫描
- P 制(Progressive):逐行扫描,F 始终为 0
- I 制(Interlaced):隔行扫描,分奇场和偶场,F 在两场之间切换
二、平台支持情况
| SOC | BT.656 | BT.1120 | 扫描方式 |
|---|---|---|---|
| RV1109/RV1126 | N | Y | 逐行 |
| RV1103 | Y | N | 逐行 |
| RV1106 | Y | Y | 逐行和隔行 |
| RK3566/RK3568 | Y | Y | 逐行和隔行 |
| RK3588 | Y | Y | 逐行和隔行 |
| RK3562 | Y | Y | 逐行和隔行 |
| RK3576 | Y | Y | 逐行和隔行 |
三、硬件连接
BT.656/BT.1120 支持多种硬件连接方式,不同连接方式需要配置不同的 bus_format:
| 接口 | bus_format 选项 |
|---|---|
| BT.656(8bit) | MEDIA_BUS_FMT_UYVY8_2X8 / MEDIA_BUS_FMT_VYUY8_2X8 / MEDIA_BUS_FMT_YUYV8_2X8 / MEDIA_BUS_FMT_YVYU8_2X8 |
| BT.1120(16bit) | MEDIA_BUS_FMT_UYVY8_1X16 / MEDIA_BUS_FMT_VYUY8_1X16 / MEDIA_BUS_FMT_YUYV8_1X16 / MEDIA_BUS_FMT_YVYU8_1X16 |
颜色不对时,尝试切换不同的 YUV 顺序格式。
四、软件配置
4.1 使能 BT.656/BT.1120
方式 1:Panel 节点配置 bus-format(无 connector 驱动)
panel {
...
bus-format = <MEDIA_BUS_FMT_YUYV8_1X16>; // BT.1120
// 或 bus-format = <MEDIA_BUS_FMT_UYVY8_2X8>; // BT.656
...
};
VOP 驱动会根据 bus-format 自动使能 BT.656/BT.1120 并配置引脚映射。
方式 2:Connector 驱动中配置(有转换芯片)
在 drm_connector_helper_funcs->get_modes 中设置:
static int sii902x_get_modes(struct drm_connector *connector)
{
u32 bus_format = MEDIA_BUS_FMT_YUYV8_1X16;
drm_display_info_set_bus_formats(&connector->display_info,
&bus_format, 1);
// ...
}
参考驱动:drivers/gpu/drm/bridge/sii902x.c
4.2 时序配置
方式 1:DTS 中配置固定时序
P 制(逐行)示例:
timing_1080p: timing-1080p {
clock-frequency = <148500000>;
hactive = <1920>;
vactive = <1080>;
hback-porch = <100>;
hfront-porch = <200>;
vback-porch = <10>;
vfront-porch = <10>;
hsync-len = <20>;
vsync-len = <20>;
hsync-active = <0>;
vsync-active = <0>;
de-active = <0>;
pixelclk-active = <0>;
};
I 制(隔行)示例:
timing_ntsc: timing-ntsc {
clock-frequency = <13500000>;
hactive = <720>;
vactive = <480>;
hback-porch = <43>;
hfront-porch = <33>;
vback-porch = <36>;
vfront-porch = <3>;
hsync-len = <62>;
vsync-len = <6>;
hsync-active = <0>;
vsync-active = <0>;
de-active = <0>;
pixelclk-active = <0>;
interlaced;
doubleclk; // 仅 NTSC(480i60) 和 PAL(576i50) 需要
};
方式 2:读 EDID
支持 EDID 的显示设备,通过 DDC/I2C 读取 EDID 获取分辨率(如 HDMI 转换芯片)。
方式 3:Connector 驱动中写死
在 connector 驱动中预先定义好支持的分辨率列表。
五、常见问题
5.1 Full Range 还是 Limited Range?
BT.656/BT.1120 输出的是 Limited range(16~235),符合视频标准。
5.2 如何确认已配置为 BT.656/BT.1120 输出?
查看 VOP summary 中的 bus-format:
cat /sys/kernel/debug/dri/0/summary
若 bus-format 为 YUV 类型(如 MEDIA_BUS_FMT_YUYV8_1X16),则说明已配置为 BT.1120/BT.656 模式。
5.3 输出信号是否标准?
Rockchip 平台输出的 BT.656/BT.1120 信号符合 ITU-R 标准。
5.4 单沿触发还是双沿触发?
单沿触发(上升沿或下降沿,由 pixelclk-active 配置)。
5.5 DTS 配置参考文件
- RV1126/RV1109 相关 board dts
- RK3568 相关 board dts
5.6 第三方转换芯片如何驱动?
使用 DRM Bridge 框架,参考 sii902x.c(RGB 转 HDMI)驱动实现。
5.7 RK628 中 BT.1120 如何使用?
RK628 是 Rockchip 的显示转换芯片,支持 BT.1120 输入/输出,具体参考 RK628 相关文档。
5.8 和 Camera 的 BT.656/BT.1120 是什么关系?
协议相同,方向相反:
- TX(VOP 输出):显示方向,输出视频
- RX(Camera 输入):摄像方向,输入视频
5.9 和 VOP 是什么关系?
BT.656/BT.1120 是 VOP 的一种输出格式(类似 RGB、LVDS、MIPI 等),由 VOP 输出 YUV 数据和嵌入式同步码。
5.10 和 RGB 是什么关系?
都是 VOP 的并行输出接口:
- RGB:输出 RGB 格式数据 + 独立同步信号(VSYNC/HSYNC/DE)
- BT.656/1120:输出 YUV 格式数据 + 嵌入式同步码(SAV/EAV)
5.11 HSYNC/VSYNC/DEN 信号是否引出到外部 IO?
BT.656/BT.1120 模式下,同步信息嵌入在数据流中,外部不需要独立的同步信号。
5.12 消隐期数据
消隐期间传输 EAV/SAV 基准码和填充数据。具体消隐期内容可参考 ITU-R BT.1120 / BT.656 协议标准。
参考资料
- 原始文档:
Rockchip_BT656_TX_AND_BT1120_TX_Developer_Guide_CN.pdfV1.4.0 - 《Rec. ITU-R BT.1120》
- 《Rec. ITU-R BT.656》
- 瑞芯微官网:www.rock-chips.com