0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

AT32講堂038 | AT32 MCU DVP應(yīng)用筆記

雅特力 AT32 MCU ? 2022-11-23 09:30 ? 次閱讀

DVP簡介

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

DVP系統(tǒng)框圖

圖1. DVP系統(tǒng)框圖23d4acbc-69aa-11ed-b116-dac502259ad0.png

周邊配置

SURF圖2.AT-SURF-F43723eb8446-69aa-11ed-b116-dac502259ad0.pngDVP & Sensor pin表1. DVP接口表243f199e-69aa-11ed-b116-dac502259ad0.pngDVP基本環(huán)境介紹表2. DVP環(huán)境介紹245eba92-69aa-11ed-b116-dac502259ad0.png

DVP功能

數(shù)據(jù)長度

數(shù)字?jǐn)z像頭并行接口(DVP)將捕獲的數(shù)據(jù),包裝成字(32位)數(shù)據(jù),供直接存儲器訪問從寄存器DVP_DT取得。包裝方式依DVP_CTRL寄存器PDL的配置而異。詳見下圖。8位并行數(shù)據(jù)(PDL=0)配置PDL為0,DVP在每個DVP像數(shù)時鐘(DVP_PCLK)捕獲一個8位數(shù)據(jù),并以四個數(shù)據(jù)包裝成一組字?jǐn)?shù)據(jù)。最先捕獲者放置于最低8位,最后捕獲者放置于最高8位,依此類推。10位并行數(shù)據(jù)(PDL=1)配置PDL為1,DVP在每個DVP像數(shù)時鐘(DVP_PCLK)捕獲一個10位數(shù)據(jù),并以二個數(shù)據(jù)包裝成一組字?jǐn)?shù)據(jù)。包裝將字?jǐn)?shù)據(jù)分成兩組半字進(jìn)行。先捕獲者放置于低位半字的最低10位,最捕獲者放置于高位半字的最低10位,余者清零。12位并行數(shù)據(jù)(PDL=2)配置PDL為2,DVP在每個DVP像數(shù)時鐘(DVP_PCLK)捕獲一個12位數(shù)據(jù),并以二個數(shù)據(jù)包裝成一組字?jǐn)?shù)據(jù)。包裝將字?jǐn)?shù)據(jù)分成兩組半字進(jìn)行。先捕獲者放置于低位半字的最低12位,最捕獲者放置于高位半字的最低12位,余者清零。14位并行數(shù)據(jù)(PDL=3)配置PDL為3,DVP在每個DVP像數(shù)時鐘(DVP_PCLK)捕獲一個14位數(shù)據(jù),并以二個數(shù)據(jù)包裝成一組字?jǐn)?shù)據(jù)。包裝將字?jǐn)?shù)據(jù)分成兩組半字進(jìn)行。先捕獲者放置于低位半字的最低14位,最捕獲者放置于高位半字的最低14位,余者清零。圖3. PDL配置與輸出包裝之關(guān)系24746612-69aa-11ed-b116-dac502259ad0.png

同步模式

數(shù)字?jǐn)z像頭并行接口(DVP)以DVP像素時鐘(DVP_PCLK)來捕獲CMOS影像攝像機所輸出的像素并行數(shù)據(jù)(DVP_D),DVP_PCLK是由CMOS影像攝像機提供。透過配置DVP_CTRL的寄存器CKP,DVP可選擇使用DVP_PCLK的上升緣或下降緣進(jìn)行捕獲。捕獲的數(shù)據(jù)可以區(qū)分為有效像素數(shù)據(jù)與消隱區(qū)間數(shù)據(jù),用戶僅只關(guān)心有效像素數(shù)據(jù)的部分。CMOS影像攝像機可提供一種或數(shù)種模式的同步信息,供接收端進(jìn)行幀分割,并提取有效像素數(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ìn)行同步。配置DVP_CTRL的寄存器SM為0,DVP可以此同步模式進(jìn)行接收。水平同步訊號用于區(qū)分有效像素與消隱區(qū)間,DVP由DVP水平同步訊號引腳(DVP_HSYNC)導(dǎo)入此訊號,依據(jù)此訊號進(jìn)行行分割,并提取有效像素數(shù)據(jù)。需配置DVP_CTRL的寄存器HSP來調(diào)整該訊號極性,使其與數(shù)字?jǐn)z像頭之輸出一致。垂直同步信號用于幀之間的分隔,DVP由DVP垂直同步信號引腳(DVP_VSYNC)導(dǎo)入此訊號,依此訊號進(jìn)行幀分割。內(nèi)嵌碼同步模式相關(guān)寄存器:-SM(Synchronization mode)=1-DVP_SCR-DVP_SUR為了節(jié)省引腳使用,部分廠商的CMOS影像攝像機,可在有效像素數(shù)據(jù)與消隱區(qū)間數(shù)據(jù)之間嵌入同步碼作為同步信息,取代水平同步訊號與垂直同步信號之使用。配置DVP_CTRL的寄存器SM為1,DVP可以此同步模式進(jìn)行接收。同步碼由四筆數(shù)據(jù)構(gòu)成,前三筆數(shù)據(jù)內(nèi)容固定,第一筆為全1數(shù)據(jù),之后接續(xù)兩筆全0數(shù)據(jù)。第四筆數(shù)據(jù)則依同步信息而異,需依攝像機廠商所使用的同步碼型式與內(nèi)容,配置DVP_SCR寄存器。1. FS/FE/LS/LE型式欲接收FS/FE/LS/LE型式,需配置DVP_SCR寄存器如下。FMSC:配置成影像攝像機使用的FS第四筆數(shù)據(jù)最高八比特位。LNSC:配置成影像攝像機使用的LS第四筆數(shù)據(jù)最高八比特位。LNEC:配置成影像攝像機使用的LE第四筆數(shù)據(jù)最高八比特位。FMEC:配置成影像攝像機使用的FE第四筆數(shù)據(jù)最高八比特位。圖4. FS/FE/LS/LE型式下的幀組成24835b36-69aa-11ed-b116-dac502259ad0.png2. SAV/EAV型式欲接收SAV/EAV型式,需配置DVP_SCR寄存器如下:FMSC:配置成0xff。(配置為無幀開始同步碼之內(nèi)嵌碼同步模式)LNSC:配置成影像攝像機使用的Active SAV第四筆數(shù)據(jù)最高八比特位。LNEC:配置成影像攝像機使用的Active EAV第四筆數(shù)據(jù)最高八比特位。FMEC:配置成0xff。(配置為任意幀結(jié)束同步碼之內(nèi)嵌碼同步模式)圖5. SAV/EAV型式下的幀組成24914d9a-69aa-11ed-b116-dac502259ad0.png

捕獲模式

單幀捕獲模式相關(guān)寄存器:-DVP_CTRL CFM=1此模式下,用戶置起DVP_CTRL的寄存器CAP后,DVP會根據(jù)接收到的同步信息,于次幀開始后,進(jìn)行數(shù)據(jù)捕獲。于該幀結(jié)束之時,DVP會自動重置寄存器CAP,并停止數(shù)據(jù)捕獲。圖6. 單幀捕獲模式示意圖24d246b0-69aa-11ed-b116-dac502259ad0.png連續(xù)捕獲模式相關(guān)寄存器:-DVP_CTRL CFM=0此模式下,用戶置起DVP_CTRL的寄存器CAP后,DVP會根據(jù)接收到的同步信息,于次幀開始后進(jìn)行數(shù)據(jù)捕獲,此捕獲行為會持續(xù)進(jìn)行。當(dāng)使用者對寄存器CAP置0時,DVP會維持CAP的置起狀態(tài)并持續(xù)捕獲數(shù)據(jù),直到同步信息反應(yīng)當(dāng)幀結(jié)束。此時DVP會重置寄存器 CAP,并停止數(shù)據(jù)捕獲。圖7. 連續(xù)捕獲模式示意圖24ed5fea-69aa-11ed-b116-dac502259ad0.png

幀率控制功能

相關(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. 幀率控制功能示意圖2503307c-69aa-11ed-b116-dac502259ad0.png基本型幀率控制相關(guān)寄存器:圖9. DVP_CTRL BFRC251f00ea-69aa-11ed-b116-dac502259ad0.png配置DVP_CTRL的寄存器BFRC,可選擇讓DVP每兩幀捕獲一幀,或是每四幀捕獲一幀。進(jìn)階型幀率控制相關(guān)寄存器:圖10. DVP_ACTRL EFRCE252b4eb8-69aa-11ed-b116-dac502259ad0.png圖11. DVP_FRF EFRCTF/EFRCSF253ef508-69aa-11ed-b116-dac502259ad0.png如需更精細(xì)的幀數(shù)調(diào)節(jié),可使用進(jìn)階型幀率控制。使用時須禁止基本型幀率控制(BFRC=0),并置起DVP_ACTRL的寄存器EFRCE,DVP會依據(jù)DVP_FRF的寄存器EFRCSF與EFRCTF之配置來調(diào)整幀數(shù),調(diào)整公式如下:目標(biāo)幀率=(EFRCTF/EFRCSF)×原始幀率請注意,當(dāng)使用進(jìn)階型幀率控制功能時,寄存器EFRCSF與EFRCTF值不得為0,且EFRCTF不得大于EFRCSF。

剪裁窗口功能

相關(guān)寄存器:圖12. DVP_CWST CVSTR/CHSTR2558fc78-69aa-11ed-b116-dac502259ad0.png

圖13. DVP_CWSZ CVNUM/CHNUM

2573b3c4-69aa-11ed-b116-dac502259ad0.png

剪裁窗口功能可以供用戶保留興趣區(qū)域數(shù)據(jù),舍棄其他部分。置起DVP_CTRL的寄存器CRP,DVP會依據(jù)DVP_CWST與DVP_CWSZ之寄存器配置進(jìn)行剪裁,如下圖所示意。

圖14. 剪裁窗口功能示意圖2581f772-69aa-11ed-b116-dac502259ad0.png

請注意,由于DVP會將捕獲的數(shù)據(jù),包裝成字(32位)數(shù)據(jù),供直接存儲器訪問提取。故使用剪裁窗口功能時,CHNUM有下述限制:8位并行數(shù)據(jù)(PDL=0)時,CHNUM+1須為4的倍數(shù)。10或12或14位并行數(shù)據(jù)(PDL?0),CHNUM+1須為2的倍數(shù)。

圖像尺寸調(diào)整功能

使用圖像尺寸調(diào)整功能,可依據(jù)比例對圖像進(jìn)行像素數(shù)或行數(shù)縮減。圖像尺寸調(diào)整功能單元可區(qū)分成基本型圖像捕獲舍棄控制與進(jìn)階型圖像尺寸調(diào)縮功能兩種。圖15.圖像尺寸調(diào)整功能示意圖259424b0-69aa-11ed-b116-dac502259ad0.png基本型圖像捕獲舍棄控制相關(guān)寄存器:圖16. DVP_CTRL25cb5d4a-69aa-11ed-b116-dac502259ad0.png

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

圖17. LCDC/LCDS與幀組成25ddc110-69aa-11ed-b116-dac502259ad0.png

圖18. PCDC/PCDS與行組成

25f47cde-69aa-11ed-b116-dac502259ad0.png進(jìn)階型圖像尺寸調(diào)縮功能相關(guān)寄存器:圖19. DVP_ACTRL2610964e-69aa-11ed-b116-dac502259ad0.png

圖20. DVP_HSCF

262209d8-69aa-11ed-b116-dac502259ad0.png

圖21. DVP_VSCF

263a7e5a-69aa-11ed-b116-dac502259ad0.png

如需更精細(xì)的圖像調(diào)縮,可使用進(jìn)階型進(jìn)階型圖像調(diào)縮功能。使用此功能需啟用進(jìn)階功能數(shù)據(jù)管理(EFDM=1),并依CMOS影像攝像機之輸出格式配置進(jìn)階功能數(shù)據(jù)格式(EFDF)。使用進(jìn)階型進(jìn)階型圖像調(diào)縮功能時,須禁止圖像捕獲舍棄控制功能(PCDC=0且LCDC=0),并置起DVP_ACTRL的寄存器EISRE,DVP會依據(jù)DVP_HSCF的寄存器HSRSF與HSRTF之配置來調(diào)縮圖像的水平軸尺寸,并依據(jù)DVP_VSCF的寄存器VSRSF與VSRTF之配置來調(diào)縮圖像的垂直軸尺寸,調(diào)整公式如下:

目標(biāo)水平軸尺寸=(HSRTF/HSRSF)×原始水平軸尺寸目標(biāo)垂直軸尺寸=(VSRTF/VSRSF)×原始垂直軸尺寸

請注意,當(dāng)使用進(jìn)階型進(jìn)階型圖像調(diào)縮功能時,寄存器HSRSF、HSRTF、VSRSF、VSRTF值不得為0,且HSRTF不得大于HSRSF,并VSRTF不得大于VSRSF。此外,計算所得的目標(biāo)水平軸尺寸與目標(biāo)垂直軸尺寸必須為整數(shù),且目標(biāo)水平軸尺寸需為4的倍數(shù),否則此單元可能會產(chǎn)生不預(yù)期之結(jié)果。

灰階圖像二值化轉(zhuǎn)換

相關(guān)寄存器:圖22. DVP_ACTRL MIBE26479a90-69aa-11ed-b116-dac502259ad0.png

圖23. DVP_BTH

265e0d5c-69aa-11ed-b116-dac502259ad0.png

灰階圖像二值化轉(zhuǎn)換單元提供將圖像亮度轉(zhuǎn)換成一比特位表示之格式。使用此功能需啟用進(jìn)階功能數(shù)據(jù)管理(EFDM=1),并依CMOS影像攝像機之輸出格式配置進(jìn)階功能數(shù)據(jù)格式(EFDF),設(shè)定方式請參考錯誤!找不到參照來源。置起DVP_ACTRL的寄存器MIBE可使能灰階圖像二值化轉(zhuǎn)換功能。

灰階圖像依DVP_BTH之寄存器MIBTHD配置進(jìn)行二值化轉(zhuǎn)換,數(shù)值大于閥值者判定為1,小于閥值者判定為0。圖像數(shù)據(jù)若為無法直接取出圖像亮度的格式,則無法使用該功能。

中斷與中斷控制

相關(guān)寄存器:圖24. DVP_STS2669b472-69aa-11ed-b116-dac502259ad0.png

圖25. DVP_ESTS

268883d4-69aa-11ed-b116-dac502259ad0.png

圖26. DVP_IENA

27aeac34-69aa-11ed-b116-dac502259ad0.png

圖27. DVP_ISTS

27bdd27c-69aa-11ed-b116-dac502259ad0.png

圖28. DVP_ICLR

27d8a516-69aa-11ed-b116-dac502259ad0.png

數(shù)字?jǐn)z像頭并行接口(DVP)的中斷控制,由四組寄存器所構(gòu)成。DVP_ESTS是只讀寄存器,用于紀(jì)錄捕獲過程中所發(fā)生的同步狀態(tài)或錯誤事件。DVP_IENA用于控制中斷訊號之使能,配置該寄存器可以使能對應(yīng)位的同步狀態(tài)或錯誤中斷,并以送至CPU。使能后所產(chǎn)生的中斷會被記錄在只讀寄存器DVP_ISTS中,由于DVP是以全局中斷連接CPU的NVIC,使用者需于此寄存器確認(rèn)中斷信息。紀(jì)錄于DVP_ESTS與DVP_ISTS的狀態(tài),透過對DVP_ICLR的對應(yīng)位上置1可清除之。

DVP_ICLR是唯寫寄存器,無須置0解除。

DVP支持三組同步狀態(tài)中斷,描述如下:幀捕獲完成(Capture frame done)CFDES與CFDIS于捕獲功能(CAP)使能時,表現(xiàn)當(dāng)前幀捕獲已完成。根據(jù)同步訊號,幀捕獲完成訊息會于獲取幀結(jié)束訊號時發(fā)生。若剪裁窗口功能(CRP)始能時,幀捕獲完成訊息會提前至剪裁窗口完成時產(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支持兩組錯誤中斷,描述如下:輸出緩沖溢出(Output data FIFO overrun)OVRES與OVRIS于捕獲功能(CAP)使能時,表現(xiàn)輸出緩沖溢出的錯誤狀態(tài)。若直接存儲器訪問無法及時將捕獲數(shù)據(jù)傳輸至儲存單元,而導(dǎo)致輸出緩沖全部蓄滿數(shù)據(jù),此時DVP所捕獲的數(shù)據(jù)將會被舍棄,并產(chǎn)生輸出緩沖溢出錯誤訊息。若捕獲功能(CAP)未使能,OVRES與OVRIS不作用。內(nèi)嵌同步碼譯碼錯誤(Embedded synchronization error)ESEES與ESEIS于捕獲功能(CAP)使能,且使用時內(nèi)嵌碼同步模式時時(SM=1),表現(xiàn)內(nèi)嵌同步碼譯碼錯誤的錯誤狀態(tài)。若譯碼器解譯出非預(yù)期之同步碼,譯碼器會舍棄當(dāng)前的同步狀態(tài),并重新對后續(xù)的數(shù)據(jù)進(jìn)行解譯。此時DVP將會停止數(shù)據(jù)捕獲,并產(chǎn)生內(nèi)嵌同步碼譯碼錯誤訊息。若捕獲功能(CAP)未使能,或是使用硬件同步模式時(SM=0),ESEES與ESEIS不作用。

DVP應(yīng)用

Sensor常見影像數(shù)據(jù)格式

依廠商不同,CMOS影像攝像機可提供的圖像輸出格式極多,本章節(jié)僅針對常見格式進(jìn)行簡單描述。RGB與YUV格式RGB:每一個像素由RGB三原色組成,“R”代表紅色,“G”代表綠色,“B”代表藍(lán)色。主要應(yīng)用在計算機屏幕上,每一個像素色彩表現(xiàn)較豐富, 但無法將 RGB 三種值分開。常見格式有RGB565、RGB555…。

YUV:每一個像素由YUV字段組成,“Y”表示明亮度(Luma),“UV”表示的是色度(Chroma)。主要應(yīng)用在電視屏幕上,特點在于可以只儲存Luma(黑白畫面),或是壓縮UV的儲存空間,方便壓縮影像數(shù)據(jù)。UV代表RGB三原色。常見格式有YUV444、YUV422、YUV420…。

圖29. YUV Format27f5fbca-69aa-11ed-b116-dac502259ad0.png

44、42與4:20是YUV的取樣方法。YUV44即是無通道壓縮的全像傳送;YUV42即是把后面兩個信道的訊號抽掉一半,所以只需要YUV44的三分之二帶寬。

YUV與RGB有算法可以互相轉(zhuǎn)換。RGB565此格式下,CMOS影像攝像機每兩個像素時鐘輸出一個半字(16位)數(shù)據(jù)的像素。每組半字?jǐn)?shù)據(jù)包含三種像素分量,紅色R、綠色G和藍(lán)色B,分別以5位、6位和5位進(jìn)行數(shù)據(jù)編碼。第一個像素時鐘輸出R分量與G分量的低位部分,第二個像素時鐘則輸出G分量的高位部分與B分量?;蚴窃诘谝粋€像素時鐘輸出B分量與G分量的低位部分,第二個像素時鐘輸出G分量的高位部分與R分量。錯誤!找不到參照來源。示意在RGB565格式下,DVP數(shù)據(jù)捕獲與包裝方式。圖30. RGB565格式數(shù)據(jù)捕獲與包裝28010236-69aa-11ed-b116-dac502259ad0.pngRGB555此格式下,CMOS影像攝像機每兩個像素時鐘輸出一個半字(16位)數(shù)據(jù)的像素。每組半字?jǐn)?shù)據(jù)包含三種像素分量,紅色R、綠色G和藍(lán)色B,皆以5位進(jìn)行數(shù)據(jù)編碼。第一個像素時鐘輸出R分量與G分量的低位部分,第二個像素時鐘輸出G分量的高位部分與B分量?;蚴窃诘谝粋€像素時鐘輸出B分量與G分量的低位部分,第二個像素時鐘輸出G分量的高位部分與R分量。因有效數(shù)據(jù)一共只有15位,故第二個像素時鐘的最高位數(shù)據(jù)并不使用,CMOS影像攝像機會通常直接輸出低電平。錯誤!找不到參照來源。示意RGB555格式下,DVP數(shù)據(jù)捕獲與包裝方式。圖31. RGB555格式數(shù)據(jù)捕獲與包裝283099c4-69aa-11ed-b116-dac502259ad0.pngYUV422此格式下,CMOS影像攝像機每兩個像素時鐘輸出一個半字(16位)數(shù)據(jù)的像素。每組半字?jǐn)?shù)據(jù)包含一個亮度像素分量Y,與一個色度像素分量U或V,皆以8位進(jìn)行數(shù)據(jù)編碼。色度分量U與V會在各像素間交替,相鄰兩像素使用不同色度分量。攝像機于每個像素時鐘輸出一組像素分量,第一個像素時鐘輸出Y分量,第二個像素時鐘則輸出U分量或V分量?;蚴窃诘谝粋€像素時鐘輸出U分量或V分量,第二個像素時鐘輸出Y分量。錯誤!找不到參照來源。示意在YUV422格式下,DVP數(shù)據(jù)捕獲與包裝方式,色度像素分量U與V順序可互換。圖32. YUV422格式數(shù)據(jù)捕獲與包裝283c5e9e-69aa-11ed-b116-dac502259ad0.pngY8Y8(Y-only)格式此格式下,CMOS影像攝像機每一個像素時鐘輸出一個字節(jié)(8位)數(shù)據(jù)的像素表示亮度Y,以8位進(jìn)行數(shù)據(jù)編碼。于此格式下,CMOS影像攝像機不輸出色度信息。錯誤! 找不到參照來源。示意在Y8(Y-only)格式下,DVP數(shù)據(jù)捕獲與包裝方式。圖33. Y8(Y-only)格式數(shù)據(jù)捕獲與包裝285a4030-69aa-11ed-b116-dac502259ad0.png

DVP Lib

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

  • dvp_enable

286f6564-69aa-11ed-b116-dac502259ad0.png開啟后 DVP 各功能活化,但不會有影像輸出

  • dvp_capture_enable

287cbe1c-69aa-11ed-b116-dac502259ad0.png開啟后DVP就會馬上會有影像輸出, 所以必須在完整設(shè)定(包含I2C/EDMA/…)后再啟動同步模式-硬件同步

  • dvp_sync_mode_set(DVP_SYNC_MODE_HARDWARE)

288563fa-69aa-11ed-b116-dac502259ad0.png

  • dvp_hsync_polarity_set

28936914-69aa-11ed-b116-dac502259ad0.png視sensor而定,不同的sensor設(shè)定值可能不同

  • dvp_vsync_polarity_set

28a25302-69aa-11ed-b116-dac502259ad0.png視sensor而定,不同的sensor設(shè)定值可能不同同步模式-內(nèi)嵌碼同步

  • dvp_sync_mode_set(DVP_SYNC_MODE_EMBEDDED)

28abb69a-69aa-11ed-b116-dac502259ad0.png

  • dvp_sync_code_set

28ba6dca-69aa-11ed-b116-dac502259ad0.pngdvp_sync_code_set(0xFF, 0xFF, 0xC7, 0xDA)

  • dvp_sync_unmask_set

28cae5c4-69aa-11ed-b116-dac502259ad0.pngdvp_sync_unmask_set(0, 0, 0, 0)捕獲模式

  • dvp_capture_mode_set

28dc4f9e-69aa-11ed-b116-dac502259ad0.png單幀捕獲模式dvp_capture_mode_set(DVP_CAP_FUNC_MODE_SINGLE)連續(xù)捕獲模式dvp_capture_mode_set(DVP_CAP_FUNC_MODE_CONTINUOUS)幀率控制-基本型

  • dvp_basic_frame_rate_control_set

28e89a88-69aa-11ed-b116-dac502259ad0.png需搭配連續(xù)捕獲模式dvp_capture_mode_set(DVP_CAP_FUNC_MODE_CONTINUOUS);可以將sensor的幀率再往下調(diào)整-不改變sensor幀率dvp_basic_frame_rate_control_set(DVP_BFRC_ALL)-將sensor幀率降低為兩幀取一幀dvp_basic_frame_rate_control_set(DVP_BFRC_HALF)-將sensor幀率降低為四幀取一幀dvp_basic_frame_rate_control_set(DVP_BFRC_QUARTER)幀率控制-進(jìn)階型

  • dvp_enhanced_framerate_set

28f6a592-69aa-11ed-b116-dac502259ad0.png需搭配連續(xù)捕獲模式dvp_enhanced_framerate_set(M, N, TRUE)M>=N剪裁窗口

  • dvp_enhanced_framerate_set

290b19fa-69aa-11ed-b116-dac502259ad0.png

  • void dvp_window_crop_set

29186e52-69aa-11ed-b116-dac502259ad0.pngdvp_window_crop_enable(TRUE)dvp_window_crop_set(crop_x, crop_y, crop_w, crop_h)crop_x / crop_y / crop_w / crop_h單位為pixelcrop_x(0x0000~0x3FFF): cropping window horizontal start pixelcrop_y(0x0000~0x1FFF): cropping window vertical start pixelcrop_w(0x0001~0x3FFF): cropping window horizontal pixel numbercrop_h(0x0001~0x3FFF): cropping window vertical pixel numbercrop_x+crop_w>=sensor輸出到dvp的影像寬度(pixel)crop_y+crop_h>=sensor輸出到dvp的影像高度(pixel)圖像尺寸調(diào)整-基本型

  • dvp_zoomout_set

292fd5ec-69aa-11ed-b116-dac502259ad0.png

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, 啟用捕獲舍棄控制,于兩個像素數(shù)據(jù)之中,捕獲一個-DVP_PCDC_ONE_IN_FOUR, 啟用捕獲舍棄控制,于四個像素數(shù)據(jù)之中,捕獲一個-DVP_PCDC_TWO_IN_FOUR, 于四個像素數(shù)據(jù)之中,捕獲連續(xù)兩個

dvp_pcds:

-DVP_PCDS_CAP_FIRST, 捕獲第一組數(shù)據(jù)(一個或兩個像素數(shù)據(jù)),舍棄下一組-DVP_PCDS_DROP_FIRST, 舍棄第一組數(shù)據(jù)(一個或兩個像素數(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

29420744-69aa-11ed-b116-dac502259ad0.png

  • dvp_enhanced_data_format_set

2950ec8c-69aa-11ed-b116-dac502259ad0.pngdvp_enhanced_scaling_resize_enable(TRUE)dvp_enhanced_data_format_set(dvp_efdf)dvp_efdf:-DVP_EFDF_YUV422_UYVY, YUV422(UYVY / VYUY)格式數(shù)據(jù)輸入-DVP_EFDF_YUV422_YUYV, YUV422(YUYV / YVYU)格式數(shù)據(jù)輸入-DVP_EFDF_YUV444, YUV444格式數(shù)據(jù)輸入-DVP_EFDF_Y8, Y8(Y only)格式數(shù)據(jù)輸入dvp_enhanced_scaling_resize_set(src_w, des_w, src_h, des_h)需搭配連續(xù)基本型全部捕獲src_w: 水平尺寸調(diào)縮來源系數(shù),使能進(jìn)階型圖像尺寸調(diào)縮功能時(EISRE=1),此寄存器值不得為0des_w: 水平尺寸調(diào)縮目標(biāo)系數(shù),使能進(jìn)階型圖像尺寸調(diào)縮功能時(EISRE=1),此寄存器值不得為0,亦不得大于src_wsrc_h: 垂直尺寸調(diào)縮來源系數(shù),使能進(jìn)階型圖像尺寸調(diào)縮功能時(EISRE=1),此寄存器值不得為0des_h: 垂直尺寸調(diào)縮目標(biāo)系數(shù),使能進(jìn)階型圖像尺寸調(diào)縮功能時(EISRE=1),此寄存器值不得為0,亦不得大于src_h灰階圖像二值化轉(zhuǎn)換

  • dvp_monochrome_image_binarization_set

297c7866-69aa-11ed-b116-dac502259ad0.pngdvp_monochrome_image_binarization_set(mibthd, TRUE)mibthd: 灰階圖像二值化閥值,灰階圖像依此閥值進(jìn)行二值化轉(zhuǎn)換,數(shù)值大于閥值者判定為1,小于閥值者判定為0

Sensor-DVP-LCD

圖34. Sensor–DVP-LCD2992fdb6-69aa-11ed-b116-dac502259ad0.pngStep1: Initiate sensor OV5640 (By I2C) and LCD (By XMC)Step2: Configure DVPStep3: Configure EDMA圖35. dvp_dma_init29a723cc-69aa-11ed-b116-dac502259ad0.pngStep4: Enable DVPStep1~3無順序相依性,但Step4一定要最后執(zhí)行可從LCD上直接顯示實際影像

Sensor-DVP-SRAM(or SDRAM)

圖36. Sensor–DVP–SRAM(or SDRAM)29c1103e-69aa-11ed-b116-dac502259ad0.pngStep1: Initiate sensor OV5640 (By I2C) and SRAM/SDRAMStep2: Configure DVPStep3: Configure EDMA

圖37. dvp_dma_init

29ec4a60-69aa-11ed-b116-dac502259ad0.pngStep4: Enable DVPStep1~3無順序相依性,但Step4一定要最后執(zhí)行可以循以下方式輸出影像(影像傳輸完畢后須關(guān)閉DMA以及DVP防止影像被覆蓋):1. 使用J-Link或其他軟件擷取出影像buffer內(nèi)容,再用可看指定影像格式的軟件觀看2. 使用UART或其他方式將影像buffer內(nèi)容傳輸至PC,再用可看指定影像格式的軟件觀看

圖38. PC View

2a093e9a-69aa-11ed-b116-dac502259ad0.png

EDMA link list mode

如果應(yīng)用上不會改變DVP輸出影像的大小,就可以考慮用EDMA的link list mode來提高DMA的效率。

經(jīng)由鏈接列表傳輸機制,用戶可以將幾種不同的傳輸鏈接在一起,以提高DMA應(yīng)用程序的系統(tǒng)吞吐量。每個傳輸信息都可以通過軟件存儲在描述符中,并且DMA從主存儲器加載描述符。

Link list機制為:

1. 預(yù)先規(guī)劃一塊buffer存放link list table,內(nèi)容格式如下,詳細(xì)內(nèi)容請參考EDMA章節(jié)圖39. 描述符格式2a362824-69aa-11ed-b116-dac502259ad0.png

圖40. 鏈接列表指針的用法

2a495d5e-69aa-11ed-b116-dac502259ad0.png

2. 建立link list table(需預(yù)先規(guī)劃存放影像的地址)

Example:圖41. link list table2a58a4a8-69aa-11ed-b116-dac502259ad0.png(1) 假定影像輸出的大小為320x240格式為YUV422/RGB565單張圖像文件案大小為320x240x2=153600 bytes單張影像有240條vertical line每一條line有320 pixel=640 bytes(2) 規(guī)劃一塊固定的Buffer存放link list table(假定位于0x20010000, 大小為4000 bytes)(3) 假定影像輸出的地址為0x20020000(4) 建立link list table每一條vertical line都需要填以下信息CNT[15:0]=0xA0(DMA長度為word 4 bytes, 所以DMA CNT填640/4=0xA0)PADDR[31:0]=DVP_DT, 固定為0x5005_0028M0ADDR[31:0]=每條vertical line存放的地址(存放影像的起始地址*0x280*vertical line index)LLP[31:0]=下一筆link list entry所在地址(link list的起始地址*0x10*(vertical line index+1)), 最后一筆LLP為0代表影像結(jié)束,如要重新傳輸影像則填link list的起始地址

案例 OV5640 Capture

功能簡介

實現(xiàn)將影像從 Sensor OV5640 輸入到 DVP, 再透過 EDMA 搬移至 LCD 顯示

資源準(zhǔn)備

1) 硬件環(huán)境:對應(yīng)產(chǎn)品型號的AT-START BOARD

2) 軟件環(huán)境

project\at_start_f4xx\examples\dvp\ov5640_capture

軟件設(shè)計

1) 配置流程

  • 開啟DVP、EDMA、I2C、XMC時鐘
  • 配置LCD、OV5640、DVP
  • 配置EDMA數(shù)據(jù)流
  • 開啟DVP、EDMA相關(guān)中斷
  • 開啟DVP、EDMA數(shù)據(jù)流
  • 確認(rèn)LCD顯示是否正確

2) 代碼介紹

  • main函數(shù)代碼描述

2a741fbc-69aa-11ed-b116-dac502259ad0.png

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

2a9cdac4-69aa-11ed-b116-dac502259ad0.png

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

2ae3ca4c-69aa-11ed-b116-dac502259ad0.png

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

2b04f3b6-69aa-11ed-b116-dac502259ad0.png

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

2b2083c4-69aa-11ed-b116-dac502259ad0.png

實驗結(jié)果

圖42. LCD View2b4f5b68-69aa-11ed-b116-dac502259ad0.png關(guān)于雅特力雅特力科技于2016年成立,是一家致力于推動全球市場32位微控制器(MCU)創(chuàng)新趨勢的芯片設(shè)計公司,專注于ARM Cortex-M4/M0+的32位微控制器研發(fā)與創(chuàng)新,全系列采用55nm先進(jìn)工藝及ARM Cortex-M4高效能或M0+低功耗內(nèi)核,締造M4業(yè)界最高主頻288MHz運算效能,并支持工業(yè)級別芯片工作溫度范圍(-40°~105°)。雅特力目前已累積相當(dāng)多元的終端產(chǎn)品成功案例:如微型打印機、掃地機、光流無人機、熱成像儀、激光雷達(dá)、工業(yè)縫紉機、伺服驅(qū)控、電競周邊市場、斷路器、ADAS、T-BOX、數(shù)字電源、電動工具等終端設(shè)備應(yīng)用,廣泛地覆蓋5G、物聯(lián)網(wǎng)、消費、商務(wù)及工控等領(lǐng)域。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16813

    瀏覽量

    349473
收藏 人收藏

    評論

    相關(guān)推薦

    STM32轉(zhuǎn)AT32代碼轉(zhuǎn)換

    1.引言在嵌入式開發(fā)中,我們經(jīng)常會遇到更換單片機芯片的事情,若芯片是同一廠家的還好說,若是不同廠家的則需要重新寫,重新調(diào),重新去學(xué)習(xí)其底層驅(qū)動程序,比較費時費力。如:ST32轉(zhuǎn)AT32、ST32轉(zhuǎn)
    的頭像 發(fā)表于 09-28 08:09 ?186次閱讀
    STM32轉(zhuǎn)<b class='flag-5'>AT32</b>代碼轉(zhuǎn)換

    AT32講堂088 | 雅特力AT32F402/F405時鐘配置

    簡介時鐘是芯片正確高效運行的基礎(chǔ),正確的時鐘配置是芯片能正確運行的必要條件,其重要性不言而喻。AT32各系列產(chǎn)品的時鐘配置部分可能存在細(xì)微的差異和需要注意的事項,本文檔就著重針對各系列的情況來詳細(xì)
    的頭像 發(fā)表于 09-15 08:08 ?288次閱讀
    <b class='flag-5'>AT32</b><b class='flag-5'>講堂</b>088 | 雅特力AT32F402/F405時鐘配置

    雅特力AT32 MCU的隨機數(shù)生成

    概述產(chǎn)品和生態(tài)系統(tǒng)安全性的需求比以往任何時候都更加重要。真隨機數(shù)是所有安全系統(tǒng)的核心,其質(zhì)量會影響設(shè)計的安全性。因此在沒有內(nèi)置硬件TRNG的AT32的微控制器系列中,如何提高隨機數(shù)的有效,來符合
    的頭像 發(fā)表于 08-30 12:26 ?358次閱讀
    雅特力<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>的隨機數(shù)生成

    AT32講堂085 | 雅特力AT32 MCU HICK時鐘校準(zhǔn)

    簡介AT32系列MCU內(nèi)部都有提供適合運行的內(nèi)部高速時鐘(HICK),其本質(zhì)就是內(nèi)置于芯片的RC振蕩器。在25℃下,其典型值頻率8MHz的精度由工廠校準(zhǔn)到±1%,在-40到105℃,該內(nèi)部高速時鐘
    的頭像 發(fā)表于 08-30 12:26 ?415次閱讀
    <b class='flag-5'>AT32</b><b class='flag-5'>講堂</b>085 | 雅特力<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> HICK時鐘校準(zhǔn)

    芯海應(yīng)用筆記:通用 MCU IAR 開發(fā)指南

    本應(yīng)用筆記旨在幫助指導(dǎo)用戶針對芯海通用 MCU 基于 IAR 環(huán)境的快速開發(fā),幫助用戶快速建立應(yīng)用工程。芯??萍纪ㄓ?MCU 提供的 pack 開發(fā)包都是僅支持芯海 CSU、MDK 或 IAR 通用
    發(fā)表于 05-16 11:50

    芯海應(yīng)用筆記:通用 MCU 基于 GCC 編譯開發(fā)應(yīng)用

    本應(yīng)用筆記旨在幫助指導(dǎo)用戶針對芯海通用 MCU 基于 GCC 環(huán)境的快速開發(fā)。芯海科技通用 MCU 提供的 pack 開發(fā)包都是僅支持芯海 CSU、MDK 或 IAR 通用集成的 IDE 工具,如果
    發(fā)表于 05-16 11:47

    芯海應(yīng)用筆記:通用 MCU Flash 讀寫保護(hù)和 SWD 復(fù)用指導(dǎo)手冊.

    本應(yīng)用筆記旨在幫助用戶了解芯??萍纪ㄓ?MCU Flash 讀寫保護(hù)的相關(guān)注意事項,同時針對 SWD引腳鎖復(fù)用提供解決方案。本文檔所涉及到的解決方案可適用于芯海通用 MCU 產(chǎn)品的常見相關(guān)需求。*附件:應(yīng)
    發(fā)表于 05-16 11:44

    芯海通用 MCU 應(yīng)用筆記 :CS32F103 系列 MCU IAP 升級指南

    本應(yīng)用筆記旨在幫助指導(dǎo)用戶針對芯海 CORTEX-M3 MCU CS32F103 系列單片機 IAP 應(yīng)用的快速開發(fā)。本應(yīng)用筆記實現(xiàn)了 CAN 和 USART 兩種接口方式來開發(fā) IAP 應(yīng)用,協(xié)議
    發(fā)表于 05-16 11:40

    雅特力AT32 MCU與SEGGER攜手合作,開發(fā)量產(chǎn)事半功倍

    近日,雅特力與SEGGER共同宣布J-Link仿真調(diào)試器與Flasher在線燒錄器全面支持AT32 MCU產(chǎn)品,SEGGER工具鏈的加持使AT32 MCU開發(fā)如虎添翼。 雅特力自201
    的頭像 發(fā)表于 02-23 10:27 ?314次閱讀

    AT32 定時器配置中pr和div的作用

    AT32定時器是51系列單片機中的一種定時器,可以實現(xiàn)多種定時功能。在AT32定時器中,pr和div是兩個相關(guān)的參數(shù),用于配置定時器的工作參數(shù)。 首先,需要了解pr和div分別代表什么含義。pr
    的頭像 發(fā)表于 01-08 10:12 ?1117次閱讀

    潤開鴻AT32開發(fā)平臺通過OpenHarmony兼容性測評

    點擊藍(lán)字 ╳ 關(guān)注我們 開源項目 OpenHarmony 是每個人的 OpenHarmony 近期,江蘇潤開鴻數(shù)字科技有限公司(以下簡稱“潤開鴻”)AT32開發(fā)平臺通過OpenAtom
    的頭像 發(fā)表于 12-20 21:10 ?611次閱讀
    潤開鴻<b class='flag-5'>AT32</b>開發(fā)平臺通過OpenHarmony兼容性測評

    潤開鴻AT32開發(fā)平臺通過OpenHarmony兼容性測評

    近期,江蘇潤開鴻數(shù)字科技有限公司(以下簡稱“潤開鴻”)AT32開發(fā)平臺通過OpenHarmony3.2.Release版本兼容性測評,助力潤開鴻基于該開發(fā)平臺全新研發(fā)推出的行業(yè)終端設(shè)備順利融入
    的頭像 發(fā)表于 12-15 08:02 ?549次閱讀
    潤開鴻<b class='flag-5'>AT32</b>開發(fā)平臺通過OpenHarmony兼容性測評

    如何使用AT32 MCU WDT和WWDT?

    如何使用AT32 MCU WDT和WWDT?
    的頭像 發(fā)表于 11-10 18:26 ?1748次閱讀
    如何使用<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> WDT和WWDT?

    Segger Jscope波形軟件在AT32 MCU的使用

    Segger Jscope波形軟件在AT32 MCU的使用
    的頭像 發(fā)表于 11-10 18:24 ?2111次閱讀
    Segger Jscope波形軟件在<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>的使用

    如何在AT32 MCU上使用FPU功能

    如何在AT32 MCU上使用FPU功能
    的頭像 發(fā)表于 11-01 17:18 ?3943次閱讀
    如何在<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>上使用FPU功能