关于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 ntp服务器时间同步设置

    详解linux ntp服务器时间同步设置

    这篇文章主要介绍了linux ntp服务器时间同步设置的相关资料,需要的朋友可以参考下
    2017-07-07
  • Linux线程退出方式总结(推荐)

    Linux线程退出方式总结(推荐)

    下面小编就为大家带来一篇Linux线程退出方式总结(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • linux下vi(vim)的新的用法总结

    linux下vi(vim)的新的用法总结

    在本篇文章里,我们给大家整理了一篇关于linux下vi(vim)的新的用法,有此需要的朋友们可以学习下。
    2019-11-11
  • 对send(),recv()函数的全面理解

    对send(),recv()函数的全面理解

    下面小编就为大家带来一篇对send(),recv()函数的全面理解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • linux防火墙配置教程之访问外网web实验(3)

    linux防火墙配置教程之访问外网web实验(3)

    这篇文章主要为大家详细介绍了linux防火墙配置教程之访问外网web的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • 通过案例深入解析linux NFS机制

    通过案例深入解析linux NFS机制

    这篇文章主要介绍了通过案例深入解析linux NFS机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Linux 命令 systemctl 基本介绍和常用选项

    Linux 命令 systemctl 基本介绍和常用选项

    这篇文章主要介绍了Linux命令systemctl,包括systemctl命令的基本介绍和常用选项、命令及示例,使用systemctl命令需要有管理员权限(例如root或具有sudo权限的用户),需要的朋友可以参考下
    2023-06-06
  • 深入理解apahce的工作模式perfork、worker

    深入理解apahce的工作模式perfork、worker

    本文介绍下,apache的两种工作模式perfork与worker,就它们的区别进行深入分析,供大家学习参考
    2013-06-06
  • linux 触摸屏驱动编写

    linux 触摸屏驱动编写

    这篇文章主要介绍了linux 触摸屏驱动编写,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Linux之sed命令(包含MacOS的用法)

    Linux之sed命令(包含MacOS的用法)

    文章介绍了Linux下的sed流编辑器功能及在MacOS中的兼容性问题,指出直接使用会导致报错,推荐安装GNU sed解决,同时概述了sed的基本用法,包括追加、修改、删除等文本处理操作,适用于多种场景
    2025-09-09

最新评论