Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > DSI接口的video mode和command mode特点区别

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

作者:小周不长肉

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模式,在发送帧的时候,

上图中这些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,不使用同步包。

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

您可能感兴趣的文章:
阅读全文