关于DSI接口的video mode和command mode特点及区别说明

 更新时间:2025年09月17日 10:51:51   作者:小周不长肉  
DSI接口支持video和command两种视频传输模式,video模式通过同步包(burst/non-burst)按帧结构发送数据,数据类型根据像素格式不同而变化;command模式则采用DCS命令码(如0x39)打包传输,无需同步包,两者在数据结构和同步机制上有显著差异

在使用DSI接口传输数据的时候有video和command两种模式可以选择,之前看协议文档的时候一直搞不懂,现在有一点自己的想法,所以记录一下。

1. 视频帧结构

我们知道显示器是按照帧来显示的,一帧之间包括hactive、vactive、hfp、hbp、hsw、vfp、vbp、vsw等参数,视频帧的结构如下图所示。

在发送数据的时候,是按照从上到下,从左到右的顺序发送,按照图中的结构,其顺序为,先发送第一行的HSYNC -> H BACK Porch -> H ACTIVE -> H Front Porch。然后为第二行、第三行…

2. video 模式

了解完视频帧的大概结构后,我们再来看video模式是如何发送视频帧的。

在DSI协议中video模式有三种方式发送视频帧,分别为burst mode、non-burst with sync event、non-burst with sync puls。

这三种方式有一个重要的共同点是带有同步包。

我们以non-burst with sync puls为例,发送视频帧的顺序如图所示:

如图所示,对于non-burst with sync puls模式,在发送帧的时候,

  • 对于列来说,先发送VSA + VBP行,再发送VACT行,最后发送VFP行
  • 对于行来说,VSA、VBP、VACT、VFP行的对应的同步包也不相同。
  • 对于有效像素数据,例如24-bit的Ycbcr像素数据包,包的data type是0x1c(DSI协议规定)

上图中这些VSS\HSA\HSE等同步包代表的含义如下图所示:

对于burst模式和non-burst with puls模式也类似,具体可以参考协议文档,通过对比视频帧结构和MIPI DSI协议规定的non-burst with sync puls传输模式,我们可以发现他们的结构很类似,video模式传输数据也正是基于帧结构的方式。

3. command模式

command模式和video模式则大不相同,对于command模式,则没有使用video模式这些同步包,使用command模式传输数据是使用DCS命令码的方式。

在DCS命令码中,有write memry start 和write menory continue这两个命令,command模式正是根据这两个命令把像素数据打包发送出去。

像素包的DATA TYPE是0x39,如下图所示:

4. 总结

DSI有两种video和command两种模式传输视频帧,

video模式又分为burst、non-burst with sync、non-burst with puls,特点是这三种方式使用同步包进行视频同步,像素数据包的data type是非DCS类型的(这里说非DCS类型的原因是不用的像素格式有不同的DATA TYPE,例如 24-bit的Ycbcr 422像素数据包,包的data type是0x1c,16bit 的Ycbcr 422的data type是0x2c等)。

commamd模式则是通过DCS命令码的形式把像素数据发出去,data type是0x39,不使用同步包。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Linux中FTP服务器搭建与安全配置方式

    Linux中FTP服务器搭建与安全配置方式

    这篇文章主要介绍了Linux中FTP服务器搭建与安全配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Linux系统使用用户密钥ssh主机访问

    Linux系统使用用户密钥ssh主机访问

    这篇文章主要介绍了Linux系统使用用户密钥ssh主机访问,它在安全上完全大于直接输入root 的密码,有需要的可以了解一下。
    2016-10-10
  • linux服务器中开放端口实现过程

    linux服务器中开放端口实现过程

    本文介绍了如何在Linux上使用firewall命令开放端口,包括查看状态、开启和关闭端口、添加和移除IP段规则、批量添加区间端口、开放系统服务等操作
    2025-11-11
  • Ubuntu下使用python3中的venv创建虚拟环境

    Ubuntu下使用python3中的venv创建虚拟环境

    这篇文章主要介绍了Ubuntu下使用python3中的venv创建虚拟环境,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • Xshell实现Windows上传文件到Linux主机的方法

    Xshell实现Windows上传文件到Linux主机的方法

    这篇文章主要介绍了Xshell实现Windows上传文件到Linux主机的方法,需要的朋友可以参考下
    2017-12-12
  • linux修改文件所属用户和组的实例方法

    linux修改文件所属用户和组的实例方法

    在本篇文章里小编给大家整理的是一篇关于linux修改文件所属用户和组的实例方法,对此有兴趣的朋友们可以跟着学习下。
    2021-12-12
  • 在Linux系统中查找最大的文件的命令详解

    在Linux系统中查找最大的文件的命令详解

    在 Linux 系统中,管理磁盘空间是一项重要的任务,尤其是在长期使用的系统中,为了有效地管理磁盘空间,找到并处理这些大文件变得尤为重要,所以本文给大家介绍了在Linux系统中查找最大的文件的命令方法,需要的朋友可以参考下
    2024-11-11
  • Linux系统内存不足导致find命令失败的解决方案

    Linux系统内存不足导致find命令失败的解决方案

    在麒麟Linux Advanced Server V10环境下执行find / -name palddumper-debug.log命令时,系统返回了bash: fork: Cannot allocate memory错误,这表明系统在执行文件查找过程中遇到了内存分配问题,本文给大家介绍了详细的解决方法,需要的朋友可以参考下
    2025-07-07
  • linux安装git的方法步骤

    linux安装git的方法步骤

    这篇文章主要介绍了linux安装git的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • Linux虚拟机中node.js之开发环境搭建

    Linux虚拟机中node.js之开发环境搭建

    这篇文章主要介绍了Linux虚拟机中node.js之开发环境搭建,有需要的朋友可以了解一下。
    2016-11-11

最新评论