rk3568 点亮LCD (BT656 BT1120)

news/2024/10/23 11:24:47/

rk3568 适配 BT656/BT1120

BT.656 TX 和 BT.1120 TX,是一种并行输出接口,而 Camera 对应的是 BT.656 RX和 BT.1120 RX,是一种并行输入接口,两则在协议上是一致的。与同为并口的RGB非常像,在rk3568 芯片上RGB和BT656/BT1120恰好存在GPIO复用关系。BT.656 和 BT.1120 是嵌入式同步信号的并行输出接口,RGB 是有独立同步信号[HSYNC/VSYNC/DEN] 的并行输出接口。为了弥补没有同步信号,BT.656 消隐期数据为 0x80 0x10 0x80 0x10,BT.1120 消隐期数为0x80 0x10 0x80 0x10,使用Y 通道和 UV 通道发送相同数据消隐。早期机顶盒或者电视盒子cvbs和YUV传输音视频信号,BT.656可转换为cvbs,BT.1120 可转为YUV和后期的HDMI。
rk3568-RGB.BT656.BT1120


提示:rk3568 BT656经常用作转cvbs,BT.1220用作转HDMI。

文章目录

  • rk3568 适配 BT656/BT1120
  • 圈重点 看想学
  • 1. BT656/BT1120
  • 2. 核查硬件,适配BT656
    • 2.1 BT656转cvbs
  • 3. 核查硬件,适配BT1120
    • 3.1 BT1120转HDMI
  • Tips
  • 总结


圈重点 看想学

a) rk3568适配BT656
b) rk3568适配BT1120


1. BT656/BT1120

BT.656 和 BT.1120 分别定义了 SDTV 和 HDTV 的接口协议,通过在消隐期传输 EAV、SAV 的定位基准码作为嵌入式同步信号,传输的数据格式为 YCbCr 4 : 2 : 2。BT.656 和 BT.1120 在一些文档和手册上也会被称为视频信号或者 YUV 信号,目前 RK 平台输出的 BT.656/BT.1120 图像数据和定位基准码的位深均为 8bit。

  • P 制扫描时序图
    在这里插入图片描述- I 制扫描时序图
    在这里插入图片描述
  • 定位基准码
    在这里插入图片描述地位基准码前三个 word 固定为:0xFF, 0x00, 0x00,第四个 word 由不同的扫描位置决定:
    Bit9: 固定为1
    Bit8(F):F=0 表示为偶场,F=1 表示为奇场
    Bit7(V):V=0 表示该行包含有效视频数据,V=1 表示该行没有有效视频数据
    Bit6(H):H=0 表示为 SAV,H=1 表示为 EAV
    Bit[5, 2] (P3,P2,P1,P0):由 Bit8~Bit6 计算得来,其中:
    Bit5 = V XOR H
    Bit4 = F XOR H
    Bit3 = F XOR V
    Bit2 = F XOR V XOR H
    Bit[1, 0]: 固定为0,对于 RK 平台,位深为 8 BIT,可以认为没有这 2 个 Bit;
    下面的表格根据不同的 EAV/SAV (F,V,H) 算好了对应的保护位的值(P3,P2,P1,P0):
    在这里插入图片描述结合以上信息,可以得到各个消隐期对应的定位基准码为:
EAVCODESAVCODE
10XFF 0X00 0X00 0X9D00XFF 0X00 0X00 0X80
30XFF 0X00 0X00 0XB220XFF 0X00 0X00 0XAB
50XFF 0X00 0X00 0XDA40XFF 0X00 0X00 0XC7
70XFF 0X00 0X00 0XF160XFF 0X00 0X00 0XEC

BT.656 和 BT.1120 支持以下三种硬件连接,根据不同的连接方式软件在 DTS 文件或者对应的转换芯片
驱动中要对 bus_format 做对应的适配。
BT656/BT1220

2. 核查硬件,适配BT656

RK630是瑞芯微扩展接口类芯片,将BT.656协议的视频信号转换为cvbs。

2.1 BT656转cvbs

&i2c3 {status = "okay";clock-frequency = <100000>;rk630: rk630@50 {compatible = "rockchip,rk630";reg = <0x50>;reset-gpios = <&gpio2 RK_PC7 GPIO_ACTIVE_LOW>;status = "okay";rk630_tve: rk630-tve {compatible = "rockchip,rk630-tve";status = "okay";ports {port {rk630_tve_in_rgb: endpoint {remote-endpoint = <&rgb_out_rk630_tve>;};};};};};
};&rgb {pinctrl-names = "default";pinctrl-0 = <&bt656m0_pins>; /* bt656m0_pins or bt656m1_pins */status = "okay";ports {port@1 {reg = <1>;#address-cells = <1>;#size-cells = <0>;rgb_out_rk630_tve: endpoint@0 {reg = <0>;remote-endpoint = <&rk630_tve_in_rgb>;};};};
};&rgb_in_vp2 {status = "okay";
};&route_rgb {status = "okay";
};

3. 核查硬件,适配BT1120

rk628则是瑞芯微近两年推出的扩展接口类芯片,支持多种协议之间的信号转换。当然也包含即将用到的BT1220转HDMI,受到通信带宽限制,只支持到1080P/60fps。rk628用到的GPIO本文直接跳过,需要同学可自行核对。

3.1 BT1120转HDMI

&i2c3 {clock-frequency = <400000>;status = "okay";rk628: rk628@50 {reg = <0x50>;interrupt-parent = <&gpio0>;interrupts = <RK_PA0 IRQ_TYPE_LEVEL_HIGH>;enable-gpios = <&gpio0 RK_PC5 GPIO_ACTIVE_HIGH>;reset-gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_LOW>;status = "okay";};
};#include <arm/rk628.dtsi>&rk628_hdmi {status = "okay";ports {#address-cells = <1>;#size-cells = <0>;port@0 {reg = <0>;hdmi_in_post_process: endpoint {remote-endpoint = <&post_process_out_hdmi>;};};};
};&rk628_post_process {pinctrl-names = "default";pinctrl-0 = <&rk628_vop_pins>;status = "okay";mode-sync-pol = <0>;ports {#address-cells = <1>;#size-cells = <0>;port@0 {reg = <0>;post_process_in_bt1120: endpoint {remote-endpoint = <&bt1120_out_post_process>;};};port@1 {reg = <1>;post_process_out_hdmi: endpoint {remote-endpoint = <&hdmi_in_post_process>;};};};
};&rk628_bt1120_rx {status = "okay";ports {#address-cells = <1>;#size-cells = <0>;port@0 {reg = <0>;bt1120_in_rgb: endpoint {remote-endpoint = <&rgb_out_bt1120>;};};port@1 {reg = <1>;bt1120_out_post_process: endpoint {remote-endpoint = <&post_process_in_bt1120>;};};};
};&rgb {status = "okay";pinctrl-names = "default";pinctrl-0 = <&bt1120_pins>;ports {port@1 {reg = <1>;rgb_out_bt1120: endpoint {remote-endpoint = <&bt1120_in_rgb>;};};};
};&rgb_in_vp2 {status = "okay";
};

Tips

  1. rk630 响芯片不工作,可从时钟信号和供电核查硬件。
  2. rk628 时钟信号可取自rk3568,可减少始终不同步引起相关问题。

总结

活学活用,做个合格的搬运工。


http://www.ppmy.cn/news/45352.html

相关文章

Nacos共享配置

本文介绍一下Nacos作为配置中心时&#xff0c;如何读取共享配置 我的环境 Windows10JDK8SpringCloud&#xff1a;Finchley.RELEASESpringBoot&#xff1a;2.0.4.RELEASEspring-cloud-alibaba-dependencies&#xff1a;0.2.2.RELEASENacos-server&#xff1a;1.0.1 本文的项目…

C++类型转换运算符dynamic_cast、static_cast 和 reinterpret_cast

目录 区别对比 dynamic_cast&#xff1a; static_cast&#xff1a; reinterpret_cast&#xff1a; 案例说明 dynamic_cast static_cast reinterpret_cast C 中有三种主要的类型转换运算符&#xff1a;dynamic_cast、static_cast 和 reinterpret_cast。这些转换运算符可…

【C++】3. 缺省参数

文章目录 一、缺省参数的定义二、缺省参数的使用规则 一、缺省参数的定义 在c语言中&#xff0c;我们使用一个函数时&#xff0c;必须要传对应的参数&#xff0c;少一个都不可以。难道函数的参数就不能有个默认值吗&#xff1f;于是C对c做出了改良&#xff0c;创造了缺省参数。…

计数排序问题

文章目录 计数排序程序设计程序分析计数排序 【问题描述】有N个整数,用计数排序法排序 【输入形式】N个整数 【输出形式】N个整数 【样例输入】 10 2 1 4 2 3 3 3 2 9 5 【样例输出】 1 2 2 2 3 3 3 4 5 9 程序设计 C语言 #include<stdio.h> #include<string.h>…

AOP通知中获取数据

AOP通知中获取数据 之前我们写AOP仅仅是在原始方法前后追加一些操作&#xff0c;接下来我们要说说AOP中数据相关的内容&#xff0c;我们将从获取参数、获取返回值和获取异常三个方面来研究切入点的相关信息。 获取切入点方法的参数&#xff1a;所有的通知类型都可以获取参数 …

Node.js—path模块

目录 1、什么是path模块2、path.resolve 拼接规范的绝对路径 常用3、path.sep 获取操作系统的路径分隔符4、 path.parse 解析路径并返回对象5、path.basename 获取路径的基础名称6、path.dirname 获取路径的目录名7、path.extname 获得路径的扩展名8、 path.join()路径拼接 1、…

在windows上安装部署cicd

安装步骤 下载gitlab-runner&#xff0c;官网地址如下&#xff1a; https://docs.gitlab.com/runner/install/windows.html在任意位置创建文件夹&#xff0c;并把安装程序放入文件夹中 安装gitlab-runner 注意需要使用管理员权限&#xff0c;打开powershell才能运行 cd C:\Gi…

Android Binder 图文解释和驱动源码分析

前言 最近在学习Binder&#xff0c;之前都是跳过相关细节&#xff0c;通过阅读文章对Binder有了一些认识&#xff0c;但是并没有真正理解Binder。如果要深入理解Framework的代码&#xff0c;就必须要真正理解Binder。 我学习Binder的方法&#xff1a; 一边阅读Gityuan的Bind…