關(guān)于DSI接口的video?mode和command?mode特點及區(qū)別說明
在使用DSI接口傳輸數(shù)據(jù)的時候有video和command兩種模式可以選擇,之前看協(xié)議文檔的時候一直搞不懂,現(xiàn)在有一點自己的想法,所以記錄一下。
1. 視頻幀結(jié)構(gòu)
我們知道顯示器是按照幀來顯示的,一幀之間包括hactive、vactive、hfp、hbp、hsw、vfp、vbp、vsw等參數(shù),視頻幀的結(jié)構(gòu)如下圖所示。
在發(fā)送數(shù)據(jù)的時候,是按照從上到下,從左到右的順序發(fā)送,按照圖中的結(jié)構(gòu),其順序為,先發(fā)送第一行的HSYNC -> H BACK Porch -> H ACTIVE -> H Front Porch。然后為第二行、第三行…

2. video 模式
了解完視頻幀的大概結(jié)構(gòu)后,我們再來看video模式是如何發(fā)送視頻幀的。
在DSI協(xié)議中video模式有三種方式發(fā)送視頻幀,分別為burst mode、non-burst with sync event、non-burst with sync puls。
這三種方式有一個重要的共同點是帶有同步包。
我們以non-burst with sync puls為例,發(fā)送視頻幀的順序如圖所示:

如圖所示,對于non-burst with sync puls模式,在發(fā)送幀的時候,
- 對于列來說,先發(fā)送VSA + VBP行,再發(fā)送VACT行,最后發(fā)送VFP行。
- 對于行來說,VSA、VBP、VACT、VFP行的對應(yīng)的同步包也不相同。
- 對于有效像素數(shù)據(jù),例如24-bit的Ycbcr像素數(shù)據(jù)包,包的data type是0x1c(DSI協(xié)議規(guī)定)
上圖中這些VSS\HSA\HSE等同步包代表的含義如下圖所示:

對于burst模式和non-burst with puls模式也類似,具體可以參考協(xié)議文檔,通過對比視頻幀結(jié)構(gòu)和MIPI DSI協(xié)議規(guī)定的non-burst with sync puls傳輸模式,我們可以發(fā)現(xiàn)他們的結(jié)構(gòu)很類似,video模式傳輸數(shù)據(jù)也正是基于幀結(jié)構(gòu)的方式。
3. command模式
command模式和video模式則大不相同,對于command模式,則沒有使用video模式這些同步包,使用command模式傳輸數(shù)據(jù)是使用DCS命令碼的方式。
在DCS命令碼中,有write memry start 和write menory continue這兩個命令,command模式正是根據(jù)這兩個命令把像素數(shù)據(jù)打包發(fā)送出去。
像素包的DATA TYPE是0x39,如下圖所示:

4. 總結(jié)
DSI有兩種video和command兩種模式傳輸視頻幀,
video模式又分為burst、non-burst with sync、non-burst with puls,特點是這三種方式使用同步包進行視頻同步,像素數(shù)據(jù)包的data type是非DCS類型的(這里說非DCS類型的原因是不用的像素格式有不同的DATA TYPE,例如 24-bit的Ycbcr 422像素數(shù)據(jù)包,包的data type是0x1c,16bit 的Ycbcr 422的data type是0x2c等)。
commamd模式則是通過DCS命令碼的形式把像素數(shù)據(jù)發(fā)出去,data type是0x39,不使用同步包。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Ubuntu下使用python3中的venv創(chuàng)建虛擬環(huán)境
這篇文章主要介紹了Ubuntu下使用python3中的venv創(chuàng)建虛擬環(huán)境,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-12-12
Xshell實現(xiàn)Windows上傳文件到Linux主機的方法
這篇文章主要介紹了Xshell實現(xiàn)Windows上傳文件到Linux主機的方法,需要的朋友可以參考下2017-12-12
Linux系統(tǒng)內(nèi)存不足導(dǎo)致find命令失敗的解決方案
在麒麟Linux Advanced Server V10環(huán)境下執(zhí)行find / -name palddumper-debug.log命令時,系統(tǒng)返回了bash: fork: Cannot allocate memory錯誤,這表明系統(tǒng)在執(zhí)行文件查找過程中遇到了內(nèi)存分配問題,本文給大家介紹了詳細的解決方法,需要的朋友可以參考下2025-07-07
Linux虛擬機中node.js之開發(fā)環(huán)境搭建
這篇文章主要介紹了Linux虛擬機中node.js之開發(fā)環(huán)境搭建,有需要的朋友可以了解一下。2016-11-11

