当前位置: 首页 > news >正文

MIPI DSI(五) DBI 和 DPI 格式

        关于 DBI 和 DPI 这两种格式的详细协议内容,请参考《MIPI Alliance Standard for Display Bus Interface(V2.0) .pdf》和《MIPI Alliance Standard for Display Pixel Interface(DPI- 2) .pdf》这两份文档。
首先先了解几个名词,如下表所示:

缩写英文全称含义
HSYNCHorizontal Sync水平同步
HLW/HPWHorizontal Low Pulse Width水平同步信号宽度
HSAHorizontal Sync Active水平同步有效
HSSHorizontal Sync Start水平同步开始
HSEHorizontal Sync End水平同步结束
HBPHorizontal Back Porch水平后肩
HFPHorizontal Front Porch水平前肩
HACTHorizontal Active水平有效区域,也就是屏幕有效宽度
VSYNCVertical Sync垂直同步
VLW/VPWVertical Low Pulse Width垂直同步信号宽度
VSAVertical Sync Active垂直同步信号宽度
VSSVertical Sync Start垂直同步开始
VSEVertical Sync End垂直同步结束
HBPVertical Back Porch垂直后肩
VACTVertical Active垂直有效区域,也就是屏幕有效高度
VFPVertical Front Porch垂直前肩
RGB在这里指 RGB 原始像素数据流
LPMLow Power Mode低功耗模式
BLLPBlanking or Low-Power periods没有包含有效数据的数据包或者进入 LP模式下的状态,称为 BLLP

                                                                相关名词解释表

        其中垂直同步 VSYNC 表示一帧图像的起始,水平同步 HSYNC 表示一行图像的起始。

DBI 接口
DBI 接口全称是 Display Bus Interface,俗称 MCU 接口、 8080 接口。也就是大家在用STM32F103/407 这种 MCU 的时候使用的屏幕接口。 MCU 通过并行接口传输控制命令和数据, DBI 接口示意图如图所示:

            

                                                                DBI 接口示意图

        正点原子 STM32F103 和 F407 开发板的屏幕就是用的 DBI 接口,也就是所谓的 MCU口,正点原子 4.3 寸 MCU 屏的 TFT 接口部分原理图如图所示:

                                                               4.3寸 MCU 屏 TFT 接口

        对于 DBI 接口屏幕而言,有 CS/RS/WR/RD 控制线,以及 D0~D15 数据线, DBI 是非常低端的产品所使用的接口,比如低端 MCU 等

DPI 接口

        DPI 接口全称 Display Pixel Interface,就是我们常说的 RGB 接口, RGB 接口使用场合非常多,比如 STM32H7 单片机,大量的 Cortex-A 系列内核的 MPU 就支持 RGB 接口, DPI 是目前很多中低端芯片的首选屏幕接口。

        1、 LCD 时间参数

        以一个 720*1280 分辨率的 LCD 为例,其显示结构如图所示

                ​​​         

                                      ·                          LCD 显示示意图

        结合上图我们来看一下 LCD 是怎么扫描显示一帧图像的。一帧图像也是由一行一行组成的。 HSYNC 是水平同步信号,也叫做行同步信号,当产生此信号的话就表示开始显示新的一行了,所以此信号都是在图 22.5-3 的最左边。当 VSYNC 信号是垂直同步信号,也叫做帧同步信号,当产生此信号的话就表示开始显示新的一帧图像了,所以此信号在图中的左上角。

        可以看到有一圈“黑边”,真正有效的显示区域是中间的白色部分。那这一圈“黑边”是什么东西呢?这就要从显示器的“祖先” CRT 显示器开始说起了, CRT 显示器就是以前很常见的那种大屁股显示器,在 2023 年应该很少见了,如果在农村应该还是可以见到的。 CRT 显示器屁股后面是个电子枪,这个电子枪就是我们上面说的“画笔”,电子枪打出的电子撞击到屏幕上的荧光物质使其发光。只要控制电子枪从左到右扫完一行(也就是扫描一行),然后从上到下扫描完所有行,这样一帧图像就显示出来了。也就是说,显示一帧图像电子枪是按照‘Z’形在运动,当扫描速度很快的时候看起来就是一幅完成的画面了。

        当显示完一行以后会发出 HSYNC 信号,此时电子枪就会关闭,然后迅速的移动到屏幕的左边,当 HSYNC 信号结束以后就可以显示新的一行数据了,电子枪就会重新打开。在HSYNC 信号结束到电子枪重新打开之间会插入一段延时,这段延时就图中的 HBP。当显示完一行以后就会关闭电子枪等待 HSYNC 信号产生,关闭电子枪到 HSYNC 信号产生之间会插入一段延时,这段延时就是图中的 HFP 信号。同理,当显示完一帧图像以后电子枪也会关闭,然后等到 VSYNC 信号产生,期间也会加入一段延时,这段延时就是图中的 VFP。 VSYNC 信号产生,电子枪移动到左上角,当 VSYNC 信号结束以后电子枪重新打开,中间也会加入一段延时,这段延时就是图中的 VBP。

        HBP、 HFP、 VBP 和 VFP 就是导致图中黑边的原因,但是这是 CRT 显示器存在黑边的原因,现在是 LCD 显示器,不需要电子枪了,那么为何还会有黑边呢?这是因为 RGB LCD 屏幕内部是有一个 IC 的,发送一行或者一帧数据给 IC, IC 是需要反应时间的。通过这段反应时间可以让 IC 识别到一行数据扫描完了,要换行了,或者一帧图像扫描完了,要开始下一帧图像显示了。因此,在 LCD 屏幕中继续存在 HBP、 HFP、 VPB 和 VFP 这四个参数的主要目的是为了锁定有效的像素数据。这四个时间是 LCD 重要的时间参数,在 DPI 接口的屏幕驱动中,我们重点就是设置这几个时序参数。

DPI 接口连接

        主控和 LCD 外设的 DPI 接口示意图如图所示:

     

                    DPI 接口示意图                                                       7 寸 RGB 屏幕接口原理图

        对于 DPI 接口,也就是 RGB 屏,一般有 DE、 VSYNC、 HSYNC、 CLK 这几个控制线,以及 D0~D23 数据线(如果采用 RGB888 格式的话)。正点原子的 7 寸 RGB 屏幕接口原理图如图7寸RGB 屏幕接口原理图所示。

重点知识:

        因为在 MIPI DSI 接口的屏幕里面传输的就是 DPI 格式的数据,包括 HBP、 HFP、 VBP、 VFP 等时序参数也是需要再 MIPI DSI 屏幕里面使用的!

http://www.lryc.cn/news/589573.html

相关文章:

  • 生产问题排查-数据库连接池耗尽
  • bytetrack漏检补齐
  • 2025年夏Datawhale AI夏令营机器学习
  • 数据怎么分层?从ODS、DW、ADS三大层一一拆解!
  • Flink Watermark原理与实战
  • omniparser v2 本地部署及制作docker镜像(20250715)
  • 驱动开发系列61- Vulkan 驱动实现-SPIRV到HW指令的实现过程(2)
  • 定时器更新中断与串口中断
  • Claude 背后金主亚马逊亲自下场,重磅发布 AI 编程工具 Kiro 现已开启免费试用
  • CUDA 环境下 `libcuda.so` 缺失问题解决方案
  • 2-Nodejs运行JS代码
  • 基于按键开源MultiButton框架深入理解代码框架(二)(指针的深入理解与应用)
  • css-css执行的三种方式和css选择器
  • 【leetcode】263.丑数
  • 邮件伪造漏洞
  • 再见吧,Windows自带记事本,这个轻量级文本编辑器太香了
  • Rust基础[part4]_基本类型,所有权
  • Java 集合 示例
  • 【Qt】插件机制详解:从原理到实战
  • redisson tryLock
  • HAProxy双机热备,轻松实现负载均衡
  • [Python] -实用技巧6-Python中with语句和上下文管理器解析
  • Hessian矩阵在多元泰勒展开中如何用于构造优化详解
  • 记一次POST请求中URL中文参数乱码问题的解决方案
  • LeetCode 1888. 使二进制字符串字符交替的最少反转次数
  • 整除分块练习题
  • 使用Spring Cloud LoadBalancer报错java.lang.IllegalStateException
  • AI助手指南:从零开始打造Python学习环境(VSCode + Lingma/Copilot + Anaconda + 效率工具包)
  • 学习秒杀系统-实现秒杀功能(商品列表,商品详情,基本秒杀功能实现,订单详情)
  • Sharding-JDBC 分布式事务实战指南:XA/Seata 方案解析(三)