DVP簡介
?數(shù)字?jǐn)z像頭并行接口(DVP)用于捕獲CMOS影像攝像機(jī)所輸出的并行數(shù)據(jù)。依據(jù)攝像機(jī)輸出,可選擇以硬件同步模式或內(nèi)嵌碼同步模式進(jìn)行幀同步與行同步。依使用需求,可透過幀率控制,調(diào)節(jié)每秒捕獲的幀數(shù)。剪裁窗口功能可以保留興趣區(qū)域數(shù)據(jù),舍棄其他部分。使用圖像尺寸調(diào)整功能,可依據(jù)比例對(duì)圖像進(jìn)行像素?cái)?shù)或行數(shù)縮減。直接存儲(chǔ)器訪問的使用,可在不耗用CPU資源的狀態(tài)下,將捕獲數(shù)據(jù)傳輸至儲(chǔ)存單元。使用者僅須透過狀態(tài)中斷與錯(cuò)誤中斷,監(jiān)控?cái)?shù)據(jù)接收狀態(tài)即可。 ?DVP系統(tǒng)框圖
?圖1. DVP系統(tǒng)框圖
周邊配置
?SURF板圖2.?AT-SURF-F437


DVP功能
?數(shù)據(jù)長度
?數(shù)字?jǐn)z像頭并行接口(DVP)將捕獲的數(shù)據(jù),包裝成字(32位)數(shù)據(jù),供直接存儲(chǔ)器訪問從寄存器DVP_DT取得。包裝方式依DVP_CTRL寄存器PDL的配置而異。詳見下圖。8位并行數(shù)據(jù)(PDL=0)配置PDL為0,DVP在每個(gè)DVP像數(shù)時(shí)鐘(DVP_PCLK)捕獲一個(gè)8位數(shù)據(jù),并以四個(gè)數(shù)據(jù)包裝成一組字?jǐn)?shù)據(jù)。最先捕獲者放置于最低8位,最后捕獲者放置于最高8位,依此類推。10位并行數(shù)據(jù)(PDL=1)配置PDL為1,DVP在每個(gè)DVP像數(shù)時(shí)鐘(DVP_PCLK)捕獲一個(gè)10位數(shù)據(jù),并以二個(gè)數(shù)據(jù)包裝成一組字?jǐn)?shù)據(jù)。包裝將字?jǐn)?shù)據(jù)分成兩組半字進(jìn)行。先捕獲者放置于低位半字的最低10位,最捕獲者放置于高位半字的最低10位,余者清零。12位并行數(shù)據(jù)(PDL=2)配置PDL為2,DVP在每個(gè)DVP像數(shù)時(shí)鐘(DVP_PCLK)捕獲一個(gè)12位數(shù)據(jù),并以二個(gè)數(shù)據(jù)包裝成一組字?jǐn)?shù)據(jù)。包裝將字?jǐn)?shù)據(jù)分成兩組半字進(jìn)行。先捕獲者放置于低位半字的最低12位,最捕獲者放置于高位半字的最低12位,余者清零。14位并行數(shù)據(jù)(PDL=3)配置PDL為3,DVP在每個(gè)DVP像數(shù)時(shí)鐘(DVP_PCLK)捕獲一個(gè)14位數(shù)據(jù),并以二個(gè)數(shù)據(jù)包裝成一組字?jǐn)?shù)據(jù)。包裝將字?jǐn)?shù)據(jù)分成兩組半字進(jìn)行。先捕獲者放置于低位半字的最低14位,最捕獲者放置于高位半字的最低14位,余者清零。圖3. PDL配置與輸出包裝之關(guān)系
同步模式
?數(shù)字?jǐn)z像頭并行接口(DVP)以DVP像素時(shí)鐘(DVP_PCLK)來捕獲CMOS影像攝像機(jī)所輸出的像素并行數(shù)據(jù)(DVP_D),DVP_PCLK是由CMOS影像攝像機(jī)提供。透過配置DVP_CTRL的寄存器CKP,DVP可選擇使用DVP_PCLK的上升緣或下降緣進(jìn)行捕獲。捕獲的數(shù)據(jù)可以區(qū)分為有效像素?cái)?shù)據(jù)與消隱區(qū)間數(shù)據(jù),用戶僅只關(guān)心有效像素?cái)?shù)據(jù)的部分。CMOS影像攝像機(jī)可提供一種或數(shù)種模式的同步信息,供接收端進(jìn)行幀分割,并提取有效像素?cái)?shù)據(jù)。數(shù)字?jǐn)z像頭并行接口(DVP)支持兩種同步模式,硬件同步模式與內(nèi)嵌碼同步模式,可透過配置DVP_CTRL的寄存器SM來選擇。 ?硬件同步模式相關(guān)寄存器:-SM(Synchronization mode)=0-DVP_CTRL HSP-DVP_CTRL VSPCMOS影像攝像機(jī)可提供水平同步訊號(hào)與垂直同步信號(hào),供接收端進(jìn)行同步。配置DVP_CTRL的寄存器SM為0,DVP可以此同步模式進(jìn)行接收。水平同步訊號(hào)用于區(qū)分有效像素與消隱區(qū)間,DVP由DVP水平同步訊號(hào)引腳(DVP_HSYNC)導(dǎo)入此訊號(hào),依據(jù)此訊號(hào)進(jìn)行行分割,并提取有效像素?cái)?shù)據(jù)。需配置DVP_CTRL的寄存器HSP來調(diào)整該訊號(hào)極性,使其與數(shù)字?jǐn)z像頭之輸出一致。垂直同步信號(hào)用于幀之間的分隔,DVP由DVP垂直同步信號(hào)引腳(DVP_VSYNC)導(dǎo)入此訊號(hào),依此訊號(hào)進(jìn)行幀分割。 ?內(nèi)嵌碼同步模式相關(guān)寄存器:-SM(Synchronization mode)=1-DVP_SCR-DVP_SUR為了節(jié)省引腳使用,部分廠商的CMOS影像攝像機(jī),可在有效像素?cái)?shù)據(jù)與消隱區(qū)間數(shù)據(jù)之間嵌入同步碼作為同步信息,取代水平同步訊號(hào)與垂直同步信號(hào)之使用。配置DVP_CTRL的寄存器SM為1,DVP可以此同步模式進(jìn)行接收。同步碼由四筆數(shù)據(jù)構(gòu)成,前三筆數(shù)據(jù)內(nèi)容固定,第一筆為全1數(shù)據(jù),之后接續(xù)兩筆全0數(shù)據(jù)。第四筆數(shù)據(jù)則依同步信息而異,需依攝像機(jī)廠商所使用的同步碼型式與內(nèi)容,配置DVP_SCR寄存器。1. FS/FE/LS/LE型式欲接收FS/FE/LS/LE型式,需配置DVP_SCR寄存器如下。FMSC:配置成影像攝像機(jī)使用的FS第四筆數(shù)據(jù)最高八比特位。LNSC:配置成影像攝像機(jī)使用的LS第四筆數(shù)據(jù)最高八比特位。LNEC:配置成影像攝像機(jī)使用的LE第四筆數(shù)據(jù)最高八比特位。FMEC:配置成影像攝像機(jī)使用的FE第四筆數(shù)據(jù)最高八比特位。圖4. FS/FE/LS/LE型式下的幀組成

捕獲模式
?單幀捕獲模式相關(guān)寄存器:-DVP_CTRL CFM=1此模式下,用戶置起DVP_CTRL的寄存器CAP后,DVP會(huì)根據(jù)接收到的同步信息,于次幀開始后,進(jìn)行數(shù)據(jù)捕獲。于該幀結(jié)束之時(shí),DVP會(huì)自動(dòng)重置寄存器CAP,并停止數(shù)據(jù)捕獲。圖6. 單幀捕獲模式示意圖

幀率控制功能
?相關(guān)寄存器:DVP_CTRL CFM=0數(shù)字?jǐn)z像頭并行接口(DVP)可透過幀率控制,調(diào)節(jié)每秒捕獲的幀數(shù)。幀率控制僅當(dāng)DVP配置于連續(xù)捕獲模式(CFM=0)下,方可作用。幀率控制單元可區(qū)分成基本型幀率控制與進(jìn)階型幀率控制兩種。圖8. 幀率控制功能示意圖



剪裁窗口功能
?相關(guān)寄存器:圖12. DVP_CWST CVSTR/CHSTR
圖13. DVP_CWSZ CVNUM/CHNUM

剪裁窗口功能可以供用戶保留興趣區(qū)域數(shù)據(jù),舍棄其他部分。置起DVP_CTRL的寄存器CRP,DVP會(huì)依據(jù)DVP_CWST與DVP_CWSZ之寄存器配置進(jìn)行剪裁,如下圖所示意。
圖14. 剪裁窗口功能示意圖
請(qǐng)注意,由于DVP會(huì)將捕獲的數(shù)據(jù),包裝成字(32位)數(shù)據(jù),供直接存儲(chǔ)器訪問提取。故使用剪裁窗口功能時(shí),CHNUM有下述限制:8位并行數(shù)據(jù)(PDL=0)時(shí),CHNUM+1須為4的倍數(shù)。10或12或14位并行數(shù)據(jù)(PDL?0),CHNUM+1須為2的倍數(shù)。
?圖像尺寸調(diào)整功能
?使用圖像尺寸調(diào)整功能,可依據(jù)比例對(duì)圖像進(jìn)行像素?cái)?shù)或行數(shù)縮減。圖像尺寸調(diào)整功能單元可區(qū)分成基本型圖像捕獲舍棄控制與進(jìn)階型圖像尺寸調(diào)縮功能兩種。圖15.?圖像尺寸調(diào)整功能示意圖

配置DVP_CTRL的寄存器PCDC或LCDC,可啟用基本型圖像捕獲舍棄控制功能。將LCDC置1后,可在每兩條捕獲的圖像行中舍棄一條,將圖像的垂直軸尺寸減半。配置LCDS可以選擇捕獲前一條并舍棄下一條,或是反向?yàn)橹<拇嫫?/span>PCDC可以調(diào)整圖像的水平軸尺寸,由PCDS與PCDES決定捕獲何者。如下圖所示。
圖17. LCDC/LCDS與幀組成
圖18. PCDC/PCDS與行組成


圖20. DVP_HSCF

圖21. DVP_VSCF

如需更精細(xì)的圖像調(diào)縮,可使用進(jìn)階型進(jìn)階型圖像調(diào)縮功能。使用此功能需啟用進(jìn)階功能數(shù)據(jù)管理(EFDM=1),并依CMOS影像攝像機(jī)之輸出格式配置進(jìn)階功能數(shù)據(jù)格式(EFDF)。使用進(jìn)階型進(jìn)階型圖像調(diào)縮功能時(shí),須禁止圖像捕獲舍棄控制功能(PCDC=0且LCDC=0),并置起DVP_ACTRL的寄存器EISRE,DVP會(huì)依據(jù)DVP_HSCF的寄存器HSRSF與HSRTF之配置來調(diào)縮圖像的水平軸尺寸,并依據(jù)DVP_VSCF的寄存器VSRSF與VSRTF之配置來調(diào)縮圖像的垂直軸尺寸,調(diào)整公式如下:
?目標(biāo)水平軸尺寸=(HSRTF/HSRSF)×原始水平軸尺寸目標(biāo)垂直軸尺寸=(VSRTF/VSRSF)×原始垂直軸尺寸請(qǐng)注意,當(dāng)使用進(jìn)階型進(jìn)階型圖像調(diào)縮功能時(shí),寄存器HSRSF、HSRTF、VSRSF、VSRTF值不得為0,且HSRTF不得大于HSRSF,并VSRTF不得大于VSRSF。此外,計(jì)算所得的目標(biāo)水平軸尺寸與目標(biāo)垂直軸尺寸必須為整數(shù),且目標(biāo)水平軸尺寸需為4的倍數(shù),否則此單元可能會(huì)產(chǎn)生不預(yù)期之結(jié)果。
?灰階圖像二值化轉(zhuǎn)換
?相關(guān)寄存器:圖22. DVP_ACTRL MIBE
圖23. DVP_BTH

灰階圖像二值化轉(zhuǎn)換單元提供將圖像亮度轉(zhuǎn)換成一比特位表示之格式。使用此功能需啟用進(jìn)階功能數(shù)據(jù)管理(EFDM=1),并依CMOS影像攝像機(jī)之輸出格式配置進(jìn)階功能數(shù)據(jù)格式(EFDF),設(shè)定方式請(qǐng)參考錯(cuò)誤!找不到參照來源。置起DVP_ACTRL的寄存器MIBE可使能灰階圖像二值化轉(zhuǎn)換功能。
灰階圖像依DVP_BTH之寄存器MIBTHD配置進(jìn)行二值化轉(zhuǎn)換,數(shù)值大于閥值者判定為1,小于閥值者判定為0。圖像數(shù)據(jù)若為無法直接取出圖像亮度的格式,則無法使用該功能。
?中斷與中斷控制
?相關(guān)寄存器:圖24. DVP_STS
圖25. DVP_ESTS

圖26. DVP_IENA

圖27. DVP_ISTS

圖28. DVP_ICLR

數(shù)字?jǐn)z像頭并行接口(DVP)的中斷控制,由四組寄存器所構(gòu)成。DVP_ESTS是只讀寄存器,用于紀(jì)錄捕獲過程中所發(fā)生的同步狀態(tài)或錯(cuò)誤事件。DVP_IENA用于控制中斷訊號(hào)之使能,配置該寄存器可以使能對(duì)應(yīng)位的同步狀態(tài)或錯(cuò)誤中斷,并以送至CPU。使能后所產(chǎn)生的中斷會(huì)被記錄在只讀寄存器DVP_ISTS中,由于DVP是以全局中斷連接CPU的NVIC,使用者需于此寄存器確認(rèn)中斷信息。紀(jì)錄于DVP_ESTS與DVP_ISTS的狀態(tài),透過對(duì)DVP_ICLR的對(duì)應(yīng)位上置1可清除之。
DVP_ICLR是唯寫寄存器,無須置0解除。
?DVP支持三組同步狀態(tài)中斷,描述如下:幀捕獲完成(Capture frame done)CFDES與CFDIS于捕獲功能(CAP)使能時(shí),表現(xiàn)當(dāng)前幀捕獲已完成。根據(jù)同步訊號(hào),幀捕獲完成訊息會(huì)于獲取幀結(jié)束訊號(hào)時(shí)發(fā)生。若剪裁窗口功能(CRP)始能時(shí),幀捕獲完成訊息會(huì)提前至剪裁窗口完成時(shí)產(chǎn)生。若捕獲功能(CAP)未使能,CFDES與CFDIS不作用。 ?垂直同步狀態(tài)(Vertical synchronization)VSES與VSIS用于表現(xiàn)垂直同步信息已獲取。垂直同步信息可被定義為幀開始或幀結(jié)束,配置DVP_ACTRL的寄存器VSEID可以調(diào)整其定義。 ?水平同步狀態(tài)(Horizontal synchronization)HSES與HSIS用于表現(xiàn)水平同步信息已獲取。水平同步信息可被定義為行開始或行結(jié)束,配置DVP_ACTRL的寄存器HSEID可以調(diào)整其定義。 ?DVP支持兩組錯(cuò)誤中斷,描述如下:輸出緩沖溢出(Output data FIFO overrun)OVRES與OVRIS于捕獲功能(CAP)使能時(shí),表現(xiàn)輸出緩沖溢出的錯(cuò)誤狀態(tài)。若直接存儲(chǔ)器訪問無法及時(shí)將捕獲數(shù)據(jù)傳輸至儲(chǔ)存單元,而導(dǎo)致輸出緩沖全部蓄滿數(shù)據(jù),此時(shí)DVP所捕獲的數(shù)據(jù)將會(huì)被舍棄,并產(chǎn)生輸出緩沖溢出錯(cuò)誤訊息。若捕獲功能(CAP)未使能,OVRES與OVRIS不作用。 ?內(nèi)嵌同步碼譯碼錯(cuò)誤(Embedded synchronization error)ESEES與ESEIS于捕獲功能(CAP)使能,且使用時(shí)內(nèi)嵌碼同步模式時(shí)時(shí)(SM=1),表現(xiàn)內(nèi)嵌同步碼譯碼錯(cuò)誤的錯(cuò)誤狀態(tài)。若譯碼器解譯出非預(yù)期之同步碼,譯碼器會(huì)舍棄當(dāng)前的同步狀態(tài),并重新對(duì)后續(xù)的數(shù)據(jù)進(jìn)行解譯。此時(shí)DVP將會(huì)停止數(shù)據(jù)捕獲,并產(chǎn)生內(nèi)嵌同步碼譯碼錯(cuò)誤訊息。若捕獲功能(CAP)未使能,或是使用硬件同步模式時(shí)(SM=0),ESEES與ESEIS不作用。 ?DVP應(yīng)用
?Sensor常見影像數(shù)據(jù)格式
?依廠商不同,CMOS影像攝像機(jī)可提供的圖像輸出格式極多,本章節(jié)僅針對(duì)常見格式進(jìn)行簡單描述。 ?RGB與YUV格式RGB:每一個(gè)像素由RGB三原色組成,“R”代表紅色,“G”代表綠色,“B”代表藍(lán)色。主要應(yīng)用在計(jì)算機(jī)屏幕上,每一個(gè)像素色彩表現(xiàn)較豐富, 但無法將 RGB 三種值分開。常見格式有RGB565、RGB555…。YUV:每一個(gè)像素由YUV字段組成,“Y”表示明亮度(Luma),“UV”表示的是色度(Chroma)。主要應(yīng)用在電視屏幕上,特點(diǎn)在于可以只儲(chǔ)存Luma(黑白畫面),或是壓縮UV的儲(chǔ)存空間,方便壓縮影像數(shù)據(jù)。UV代表RGB三原色。常見格式有YUV444、YUV422、YUV420…。
圖29. YUV Format
44、42與4:20是YUV的取樣方法。YUV44即是無通道壓縮的全像傳送;YUV42即是把后面兩個(gè)信道的訊號(hào)抽掉一半,所以只需要YUV44的三分之二帶寬。
YUV與RGB有算法可以互相轉(zhuǎn)換。 ?RGB565此格式下,CMOS影像攝像機(jī)每兩個(gè)像素時(shí)鐘輸出一個(gè)半字(16位)數(shù)據(jù)的像素。每組半字?jǐn)?shù)據(jù)包含三種像素分量,紅色R、綠色G和藍(lán)色B,分別以5位、6位和5位進(jìn)行數(shù)據(jù)編碼。第一個(gè)像素時(shí)鐘輸出R分量與G分量的低位部分,第二個(gè)像素時(shí)鐘則輸出G分量的高位部分與B分量。或是在第一個(gè)像素時(shí)鐘輸出B分量與G分量的低位部分,第二個(gè)像素時(shí)鐘輸出G分量的高位部分與R分量。錯(cuò)誤!找不到參照來源。示意在RGB565格式下,DVP數(shù)據(jù)捕獲與包裝方式。圖30. RGB565格式數(shù)據(jù)捕獲與包裝



DVP Lib
?DVP功能開啟/關(guān)閉DVP各功能在設(shè)定上沒有先后順序,只有dvp_capture_enable開啟后馬上會(huì)有影像輸出,所以必須在完整設(shè)定(包含I2C/EDMA/…)后再啟動(dòng)- dvp_enable

- dvp_capture_enable

- dvp_sync_mode_set(DVP_SYNC_MODE_HARDWARE)

- dvp_hsync_polarity_set

- dvp_vsync_polarity_set

- dvp_sync_mode_set(DVP_SYNC_MODE_EMBEDDED)

- dvp_sync_code_set

- dvp_sync_unmask_set

- dvp_capture_mode_set


- dvp_enhanced_framerate_set

- dvp_enhanced_framerate_set

- void dvp_window_crop_set

- dvp_zoomout_set

dvp_zoomout_set(dvp_pcdc, dvp_pcds, dvp_lcdc, dvp_lcds);
dvp_pcdc:-DVP_PCDC_ALL, 全部捕獲,或是使用進(jìn)階型圖像尺寸調(diào)縮功能-DVP_PCDC_ONE_IN_TWO, 啟用捕獲舍棄控制,于兩個(gè)像素?cái)?shù)據(jù)之中,捕獲一個(gè)-DVP_PCDC_ONE_IN_FOUR, 啟用捕獲舍棄控制,于四個(gè)像素?cái)?shù)據(jù)之中,捕獲一個(gè)-DVP_PCDC_TWO_IN_FOUR, 于四個(gè)像素?cái)?shù)據(jù)之中,捕獲連續(xù)兩個(gè)dvp_pcds:
-DVP_PCDS_CAP_FIRST, 捕獲第一組數(shù)據(jù)(一個(gè)或兩個(gè)像素?cái)?shù)據(jù)),舍棄下一組-DVP_PCDS_DROP_FIRST, 舍棄第一組數(shù)據(jù)(一個(gè)或兩個(gè)像素?cái)?shù)據(jù)),捕獲下一組dvp_lcdc:
-DVP_LCDC_ALL, 全部捕獲,或是使用進(jìn)階型圖像尺寸調(diào)縮功能-DVP_LCDC_ONE_IN_TWO, 啟用捕獲舍棄控制,于兩條圖像行之中,捕獲一條dvp_lcds:
-DVP_LCDS_CAP_FIRST, 捕獲第一條圖像行之?dāng)?shù)據(jù),舍棄下一條-DVP_LCDS_DROP_FIRST, 舍棄第一條圖像行之?dāng)?shù)據(jù),捕獲下一條 ?圖像尺寸調(diào)整-進(jìn)階型- dvp_enhanced_scaling_resize_enable

- dvp_enhanced_data_format_set

- dvp_monochrome_image_binarization_set

Sensor-DVP-LCD
?圖34. Sensor–DVP-LCD


圖37. dvp_dma_init

圖38. PC View

EDMA link list mode
?如果應(yīng)用上不會(huì)改變DVP輸出影像的大小,就可以考慮用EDMA的link list mode來提高DMA的效率。經(jīng)由鏈接列表傳輸機(jī)制,用戶可以將幾種不同的傳輸鏈接在一起,以提高DMA應(yīng)用程序的系統(tǒng)吞吐量。每個(gè)傳輸信息都可以通過軟件存儲(chǔ)在描述符中,并且DMA從主存儲(chǔ)器加載描述符。
Link list機(jī)制為:
1. 預(yù)先規(guī)劃一塊buffer存放link list table,內(nèi)容格式如下,詳細(xì)內(nèi)容請(qǐng)參考EDMA章節(jié)圖39. 描述符格式
圖40. 鏈接列表指針的用法

2. 建立link list table(需預(yù)先規(guī)劃存放影像的地址)
Example:圖41. link list table
案例 OV5640 Capture?
?功能簡介
?實(shí)現(xiàn)將影像從 Sensor OV5640 輸入到 DVP, 再透過 EDMA 搬移至 LCD 顯示 ?資源準(zhǔn)備
?1) 硬件環(huán)境:對(duì)應(yīng)產(chǎn)品型號(hào)的AT-START BOARD2) 軟件環(huán)境
projectat_start_f4xxexamplesdvpov5640_capture ?軟件設(shè)計(jì)
?1) 配置流程- 開啟DVP、EDMA、I2C、XMC時(shí)鐘
- 配置LCD、OV5640、DVP
- 配置EDMA數(shù)據(jù)流
- 開啟DVP、EDMA相關(guān)中斷
- 開啟DVP、EDMA數(shù)據(jù)流
- 確認(rèn)LCD顯示是否正確
2) 代碼介紹
- main函數(shù)代碼描述

- LCD函數(shù)代碼描述

- OV5640函數(shù)代碼描述

- EDMA函數(shù)代碼描述

- DVP函數(shù)代碼描述

實(shí)驗(yàn)結(jié)果
?圖42. LCD View
評(píng)論