【正点原子Linux连载】 第二十五章HDMI屏幕驱动实验摘自【正点原子】ATK-DLRK3568嵌入式Linux驱动开发指南

news2024/11/25 11:35:09

1)实验平台:正点原子ATK-DLRK3568开发板
2)平台购买地址:https://detail.tmall.com/item.htm?id=731866264428
3)全套实验源码+手册+视频下载地址: http://www.openedv.com/docs/boards/xiaoxitongban

第二十五章HDMI屏幕驱动实验

HDMI是现在最流行的屏幕显示接口之一,大尺寸如65/75/100寸、高分辨率如4K、8K、高帧率如60Hz、120Hz等应用场合都有HDMI的身影。瑞芯微的RK3568芯片原生自带了HDMI外设接口,可以用来连接HDMI显示器,本章我们就来学习一下如何使用RK3568的HDMI接口。

25.1 HDMI简介
HDMI全称为High Definition Multimedia Interface,也就是高清多媒体接口,是一个纯数字的音视频传输接口,通过一根线同时发送音视频数据。目前在电视、显示器、电脑、机顶盒等领域得到了广泛的使用。
在学习HDMI之前,我们先了解一些HDMI相关术语:
HDCP:High-bandwidth Digital Content Protection,版权保护相关,通过HDMI的DDC通道获取相关信息。
EDID:Extended Display Identification Data,扩展显示标识数据,包括显示器参数信息、供应商、图像大小、颜色、厂商预设值等信息。
DDC:Display Data Channel,显示数据通道,本质是IIC,因为大家会在HDMI接口上看到SCL和SDA引脚,DDC用来获取EDID、HDCP信息。
CEC:Consumer Electronics Control,用户电气控制,可以通过CEC引脚控制一些从设备,实现遥控功能。
TMDS:Transition Minimized Differential Signaling,最小化传输差分信号,用来传输HDMI信号。
HEAC:HDMI Ethernet and Audio Return Channel,以太网和音频返回,需要额外的PHY支持。
Source:HDMI信号输出设备。
Sink:HDMI信号输入设备。
HDMI最早于2002年出现,来用取代模拟信号接口,比如SCART或RCA,支持各种电脑与电视图像格式,还支持多声道的数字音频。HDMI经过不断地迭代,已经发布了多个版本:HDMI 1.1、HDMI 1.2、HDMI 1.3/1.3a/1.3b/1.3c、HDMI 1.4/1.4a/1.4b、HDMI 2.0/2.0a/2.0b以及最新的HDMI 2.1。这些版本的主要功能和区别如表25.1.1和25.1.2所示:
在这里插入图片描述

图25.1.1 HDMI各版本区别1
在这里插入图片描述

图25.1.2 HDMI各版本区别2
25.1.1 HDMI接口介绍
HDMI结构框图如图25.1.1.1所示:
在这里插入图片描述

图25.1.1.1 HDMI结构框图
图25.1.1.1中左侧是Source,用于产生Video、Audio等信号。左侧是Sink,也就是接受Source端发送过来的Video、Audio等信息。Source和Sink之间通过TMDS来传输信号,一共有3个TMDS数据通道,1个TMDS时钟通道。另外还有DDC、CEC、HPD等信号来传输其他的控制信息,简单总结一下这几个通道的功能。
TMDS:传输音视频数据。
CEC:实现遥控器功能。
DDC:实现屏幕分辨率自适应,通过DDC获取不同屏幕的参数信息。
HPD:实现热插拔。
HDMI一共有5种接口,如图25.1.1.1所示:
在这里插入图片描述

图25.1.1.1 HDMI接口图
我们最常用的就是Type A口,正点原子ATK-DLRK3568开发板也是Type A口,所以本章我们就基于Type A口进行讲解。HDMI接口引脚如图25.1.1.2所示:
在这里插入图片描述

图25.1.1.2 HDMI接口引脚图
从图25.1.1.2可以看出,一共有19个引脚,这19个引脚对应的功能如表25.1.1.1所示:
在这里插入图片描述

表25.1.1.1 HDMI引脚定义
表25.1.1.1中这些数据线分为如下几类:
TMDS 数据0/1/2:一共有3对数据线,为TMDS编码格式。
TMDS 时钟:1对TMDS时钟线。
CEC:HDMI的CEC通道引脚,可以通过CEC信号控制HDMI接口上所连接的设备。
IIC:HDMI接口上有个IIC接口,专业的名词叫做DDC(Display Data Channel),也就是显示数据通道,本质是个IIC接口,用来获取EDID、HDCP等内容的。
HPD:热插拔引脚,实现HDMI的热插拔功能。
25.1.2 TMDS传输原理简析
前面说了HDMI主要是通过TMDS编码来传输音视频信号,TMDS使用2根差分线来传输信号,信号0和1由两个引脚的电压差来决定,当TMDS差分线+为高电平,-为低电平的时候表示1;+为低电平,-为高电平的时候为0。接受端通过判断+和-的电压差来确定发送过来的是1还是0。采用差分传输的好处就是抗干扰能力强,适合高速传输。
TMDS由3个数据通道和1个时钟通道组成。TMDS的时钟通道以所传输的视频信号像素时钟的固定比例运行。每个TMDS时钟周期,每个TMDS数据通道都会传输10bit数据。HDMI编解码结构如图25.1.2.1所示:
在这里插入图片描述

图25.1.2.1 HDMI编解码结构图
从图25.1.2.1可以看出,左侧位Source端,右侧位Sink端,数据从左侧传递到右侧。左侧每个通道有8bit的原始数据,通过编码后得到10bit数据通过TMDS传输,接收端接收到10bit的编码数据要先解码,得到原始的8bit数据。
首先看一下Source端,一共3个数据通道,每个通道都是8bit的并行数据,这8bit数据含义如下:
D[7:0]:8bit的实际图像数据,为并行数据。
D[1:0]:通道0的这2位是HSYNC和VSYNC信号,通道1和通道2的这两位是CTL0~CTL3这4个控制信号。
D[3:0]:额外的一些辅助数据,比如音频数据等。
图25.1.2.1中一共有4个通道,3个数据通道,1个时钟通道,这4个通道功能如下:
通道0:传输图像的蓝色分量、HS和VS信号。
通道1:传输图像的绿色分量、CTL0和CTL1信号。
通道2:传输图像的红色分量、CTL2和CTL3信号。
时钟通道:图像的像素时钟。
25.1.3 HDMI传输阶段
1、HDMI传输的三个阶段
HDMI数据传输分为3个阶段:
①、Video Data Period:视频数据传输阶段,也就是此阶段传输实际的图像数据。对应图25.1.2.1中的D[7:0],会将8bit数据编码并串行化为10bit发送出去。
②、Data Island Period:音频和额外数据传输阶段。对应图25.1.2.1中的D[3:0],会将4bit数据编码并串行化为10bit发送出去。
③、Control Period:控制信号传输阶段,当不传输音视频信号和控制信号的时候,都处于这个阶段。对应图25.1.2.1中的D[1:0],会将2bit数据编码并串行化为10bit发送出去。
这三个阶段的详细编码方式与描述见图25.10.3.1:
在这里插入图片描述

图25.1.3.1 编码方式数据传输
以一个720*480分辨率为例,这三个传输阶段如图25.1.3.2所示:
在这里插入图片描述

图25.1.3.2 720*480分辨率传输阶段
2、Control Period
Control Period就是前面说的CTL0~CTL3,一共4bit,用来指示接下来的数据是Data Island还是Video Data,如图25.1.3.3示:
在这里插入图片描述

图25.1.3.3 Control Period含义
3、Video Data Period
当Control Period指示下一个是Video Data的时候,那么就开始图像数据传输,在正进入Video Data之前,有一个Guard Band阶段,经过TMDS编码后每个通道都有一个10bit的数据,如下所示:

1 case (TMDS Channel Number):
2  
3     Ch0: q_out[9:0] = 0b1011001100;
4  
5     Ch1: q_out[9:0] = 0b0100110011;
6  
7     Ch2: q_out[9:0] = 0b1011001100;
8  
9 endcase
Video Band以后就是真实的图像数据了。

4、Video Data Period
如果Control Period指示下一阶段为Data Isiand Period,那么接下来就是Data Island Period的数据传输,这个阶段以Guard Band开始,最后一个以Trailing Guard Band结束,编码格式如下:
1 case (TMDS Channel Number):
2 0: q_out[9:0] = n.a.;
3 1: q_out[9:0] = 0b0100110011;
4 2: q_out[9:0] = 0b0100110011;
5 endcase
这三个阶段如图25.1.3.4所示:
在这里插入图片描述

图25.1.3.4 三个传输阶段
25.1.4 HDMI时钟与带宽
1、像素时钟
我们分别以RK3568所支持的1920x1080p@120Hz和4096x2304@60fps这两个分辨率来算一下对应的像素时钟:
1920x1080p@120Hz:1920×1080×120=248832000≈248.832MHz。
4096x2304@60Hz:4096×2304×60=566231040≈566.2MHz。
上面算出来的就是1S中要传输的像素数,也就是像素时钟。
2、理论带宽
前面我们计算出的是像素时钟,假设像素格式为RGB888,也就是一个像素24bit,那么对应的理论带宽就是:
1920x1080p@120Hz:248832000×24=5971968000≈6.0Gbps。
4096x2304@60Hz:4096×2304×60=566231040≈13.6Gbps。
可以看出仅传输视频最少就需要13.6Gbps的带宽,而HDMI不仅仅要传输视频,还要传输音频等其他信号,所以HDMI的实际带宽要大于13.6Gpbs。
3、TMDS时钟
HDMI1.4b协议规定TMDS时钟最高340MHz,HDMI2.0协议将TMDS时钟加到了600MHz。RK3568的HDMI接口为2.0版本,我们就以600MHz的TMDS时钟计算一下HDMI接口实际提供的带宽。一个TMDS时钟单个通道传输10bit的数据,所以单个通道的带宽就是:
600000000×10 = 6Gpbs
一共有3个TMDS数据通道,所以总带宽就是:
6Gpbs×3=18Gbps
这个就是大家找HDMI2.0资料的时候,说的18Gbps带宽的来源。但是前面我们说了,TMDS在传输的时候会将原始的8bit有效数据编码为10bit,所以真实的有效带宽要再乘一个0.8,因此实际有效带宽为:
18Gpbs×0.8=14.4 Gbps
可以看出,实际有效带宽为14.4Gbps,大于我们前面算出来的13.6Gbps要求。HDMI各版本的传输带宽如图25.1.4.1所示:
在这里插入图片描述

图24.1.4.1 HDMI各版本带宽区别
另外HDMI 2.0和HDMI2.1对于不同分辨率与帧率的支持如图24.1.4.2所示:
在这里插入图片描述

图25.1.4.2 HDMI不同版本对分辨率与帧率的支持

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1565724.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++的并发世界(二)——初识多线程

0.引言 C的并发世界(零)和C的并发世界(一)的东西真的对于我这种初学者难以理解,我确定从第一个多线程案例进行学习归纳总结。 1.多线程的目的 ①将耗时的任务进行分解,进行实时响应;   ②充分利用多核CP…

go连接数据库(原生)

根据官网文档 Go Wiki: SQL Database Drivers - The Go Programming Language 可以看到go可以连接的关系型数据库 ​ 常用的关系型数据库基本上都支持,下面以mysql为例 下载mysql驱动 打开上面的mysql链接 GitHub - go-sql-driver/mysql: Go MySQL Driver i…

文献研读|AIGC溯源场景及研究进展

前言:本文介绍关于AIGC生成阶段针对不同溯源场景的几篇相关工作。 如下图所示,在AIGC生成阶段,有4种溯源场景: 1)生成模型溯源训练数据 2)微调模型溯源预训练模型 3)AIGC溯源训练数据/训练概念…

休闲娱乐代理售票系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)折扣票,退票信息,订单信息,出票信息,公告信息,个人中心

本项目包含可运行源码数据库LW,文末可获取本项目的所有资料。 推荐阅读300套最新项目持续更新中..... 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含ja…

2024年全新靠谱的FTP替代升级解决方案

随着企业规模的扩大和业务的多元化,传统的TCP协议在数据传输效率上逐渐显现出局限性。TCP协议虽然以其稳定性和可靠性被广泛应用,但在面对大规模数据传输时,其性能瓶颈逐渐成为企业发展的阻碍。同时,基于TCP的应用协议如Telnet、F…

【采购季即将结束】阿里云 腾讯云 部分性价比机型价格回调下架 抓住采购季尾声!游戏云服务器价格对比表 已更新!低至50/年

更新日期:4月3日(阿里云价格回调 6个月无折扣,京东云采购季持续进行) 本文纯原创,侵权必究 【云服务器推荐】价格对比!阿里云 京东云 腾讯云 选购指南视频截图 《最新对比表》已更新在文章头部—腾讯云文…

关于 ulimit 的两个天坑

稍微有点 Linux 经验的人一定会遇到过 “Too many open files” 错误,这个错误本质是 ulimit 设置不合理导致的。关于 ulimit 设置,有哪些需要注意的点呢?本文给大家做一个介绍,希望对大家有所帮助。 如何确认 ulimit 设置生效了…

Redis热点Key问题分析与解决

目录 一、问题现象描述 二、什么是热点Key 三、热点Key的危害 3.1 Redis节点负载过高 3.2 Redis集群负载不均 3.3 Redis集群性能下降 3.4 数据不一致 3.5 缓存击穿 四、热点Key产生的原因分析 4.1 热点数据 4.2 业务高峰期 4.3 代码逻辑问题 五、如何检测热点Key …

redis 缓存穿透 击穿 雪崩 的原因及解决方法

一 总结 1,原因及解决办法 ① 缓存穿透:大量请求根本不存在的key(下文详解) ② 缓存雪崩:redis中大量key集体过期(下文详解) ③ 缓存击穿:redis中一个热点key过期(大量…

基于java+springboot+vue实现的仓库管理系统(文末源码+Lw)23-115

摘 要 使用旧方法对仓库管理系统的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在仓库管理系统的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发的仓库管理…

ELK报错,索引变成只读状态。

问题描述 今天发现当天的索引在ES中并没有创建,logstash中不停的报错: [2021-05-24T05:47:51,904][INFO ][logstash.outputs.elasticsearch] retrying failed action with response code: 403 ({“type”>“cluster_block_exception”, “reason”&g…

java学习之路-类和对象

前言 本文内容: 类的定义及其使用 this的引用 对象的构造及初始化 封装 static成员 代码块讲解 内部类 文章目录 1.类定义和使用 1.1了解什么是面向对象 1.2简单认识类 1.3定义类 1.4栗子 2.类的使用-类的实例化 2.1什么是实例化 2.2类和对象的说明 3.this引…

备忘录误删怎么恢复?误删备忘录快速回复攻略

在日常生活和工作中,备忘录是我们不可或缺的好帮手,能帮助我们记录生活及工作中的重要内容。然而,一不小心误删了重要内容,往往会给我们带来不小的麻烦。那么,当这种情况发生时,我们该如何迅速找回误删的备…

C++算法——二分法查找

一、二分查找算法思想和模版 1.算法思想 2.细节处理 3.模板 二、二分查找 1.链接 704. 二分查找 - 力扣(LeetCode) 2.描述 3.思路 先从最经典的题目去切入,思路就是二分查找,这里我们认为,目标值既可以看作为左部…

Oracle基础【7-Oracle中RMAN恢复管理器】

🌈个人主页:godspeed_lucip 🔥 系列专栏:Oracle从基础到进阶 本文对应Oracle实验报告源文件下载:公众号程序员刘同学回复oracle实验获取下载链接 实验七 RMAN恢复管理器一、实验目的二、实验环境三、实验内容1 为备份…

第12章 集合框架

一 集合框架概述 1.1 生活中的容器 1.2 数组的特点与弊端 一方面,面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储。另一方面,使用数组存储对象方面具有一些弊端,而Java 集合…

WebGIS 地铁交通线网 | 图扑数字孪生

数字孪生技术在地铁线网的管理和运维中的应用是一个前沿且迅速发展的领域。随着物联网、大数据、云计算以及人工智能技术的发展,地铁线网数字孪生在智能交通和智慧城市建设中的作用日益凸显。 图扑软件基于 HTML5 的 2D、3D 图形渲染引擎,结合 GIS 地图…

OmniGraffle Pro for mac 出色的图形设计软件

OmniGraffle Pro是一款非常出色的图形设计软件,它主要适用于Mac和iPad平台,可以用来轻松绘制各种精美的图表、示意图和界面设计。 软件下载:OmniGraffle Pro for mac中文注册激活版 以下是OmniGraffle Pro的一些主要特点和功能: 界…

JavaScript常用知识面试题day01

大家好我是没钱的君子下流坯,用自己的话解释自己的知识 前端行业下坡路,甚至可说前端已死,我还想在前段行业在干下去,所以从新开始储备自己的知识。 从CSS——>Javascript——>VUE2——>Vuex、VueRouter、webpack——>…

【学习笔记】java项目—苍穹外卖day09

文章目录 用户端历史订单模块1. 查询历史订单1.1 需求分析和设计1.2 代码实现1.2.1 user/OrderController1.2.2 OrderService1.2.3 OrderServiceImpl1.2.4 OrderMapper1.2.5 OrderMapper.xml1.2.6 OrderDetailMapper 1.3 功能测试 2. 查询订单详情2.1 需求分析和设计2.2 代码实…