关于DSI接口的video mode和command mode特点及区别说明
作者:小周不长肉
在使用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,不使用同步包。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。