0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AT32讲堂038 | AT32 MCU DVP应用笔记

雅特力 AT32 MCU 2022-11-23 09:30 次阅读

DVP简介

数字摄像头并行接口(DVP)用于捕获CMOS影像摄像机所输出的并行数据。依据摄像机输出,可选择以硬件同步模式或内嵌码同步模式进行帧同步与行同步。依使用需求,可透过帧率控制,调节每秒捕获的帧数。剪裁窗口功能可以保留兴趣区域数据,舍弃其他部分。使用图像尺寸调整功能,可依据比例对图像进行像素数或行数缩减。直接存储器访问的使用,可在不耗用CPU资源的状态下,将捕获数据传输至储存单元。使用者仅须透过状态中断与错误中断,监控数据接收状态即可。

DVP系统框图

图1. DVP系统框图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基本环境介绍表2. DVP环境介绍245eba92-69aa-11ed-b116-dac502259ad0.png

DVP功能

数据长度

数字摄像头并行接口(DVP)将捕获的数据,包装成字(32位)数据,供直接存储器访问从寄存器DVP_DT取得。包装方式依DVP_CTRL寄存器PDL的配置而异。详见下图。8位并行数据(PDL=0)配置PDL为0,DVP在每个DVP像数时钟(DVP_PCLK)捕获一个8位数据,并以四个数据包装成一组字数据。最先捕获者放置于最低8位,最后捕获者放置于最高8位,依此类推。10位并行数据(PDL=1)配置PDL为1,DVP在每个DVP像数时钟(DVP_PCLK)捕获一个10位数据,并以二个数据包装成一组字数据。包装将字数据分成两组半字进行。先捕获者放置于低位半字的最低10位,最捕获者放置于高位半字的最低10位,余者清零。12位并行数据(PDL=2)配置PDL为2,DVP在每个DVP像数时钟(DVP_PCLK)捕获一个12位数据,并以二个数据包装成一组字数据。包装将字数据分成两组半字进行。先捕获者放置于低位半字的最低12位,最捕获者放置于高位半字的最低12位,余者清零。14位并行数据(PDL=3)配置PDL为3,DVP在每个DVP像数时钟(DVP_PCLK)捕获一个14位数据,并以二个数据包装成一组字数据。包装将字数据分成两组半字进行。先捕获者放置于低位半字的最低14位,最捕获者放置于高位半字的最低14位,余者清零。图3. PDL配置与输出包装之关系24746612-69aa-11ed-b116-dac502259ad0.png

同步模式

数字摄像头并行接口(DVP)以DVP像素时钟(DVP_PCLK)来捕获CMOS影像摄像机所输出的像素并行数据(DVP_D),DVP_PCLK是由CMOS影像摄像机提供。透过配置DVP_CTRL的寄存器CKP,DVP可选择使用DVP_PCLK的上升缘或下降缘进行捕获。捕获的数据可以区分为有效像素数据与消隐区间数据,用户仅只关心有效像素数据的部分。CMOS影像摄像机可提供一种或数种模式的同步信息,供接收端进行帧分割,并提取有效像素数据。数字摄像头并行接口(DVP)支持两种同步模式,硬件同步模式与内嵌码同步模式,可透过配置DVP_CTRL的寄存器SM来选择。硬件同步模式相关寄存器:-SM(Synchronization mode)=0-DVP_CTRL HSP-DVP_CTRL VSPCMOS影像摄像机可提供水平同步讯号与垂直同步信号,供接收端进行同步。配置DVP_CTRL的寄存器SM为0,DVP可以此同步模式进行接收。水平同步讯号用于区分有效像素与消隐区间,DVP由DVP水平同步讯号引脚(DVP_HSYNC)导入此讯号,依据此讯号进行行分割,并提取有效像素数据。需配置DVP_CTRL的寄存器HSP来调整该讯号极性,使其与数字摄像头之输出一致。垂直同步信号用于帧之间的分隔,DVP由DVP垂直同步信号引脚(DVP_VSYNC)导入此讯号,依此讯号进行帧分割。内嵌码同步模式相关寄存器:-SM(Synchronization mode)=1-DVP_SCR-DVP_SUR为了节省引脚使用,部分厂商的CMOS影像摄像机,可在有效像素数据与消隐区间数据之间嵌入同步码作为同步信息,取代水平同步讯号与垂直同步信号之使用。配置DVP_CTRL的寄存器SM为1,DVP可以此同步模式进行接收。同步码由四笔数据构成,前三笔数据内容固定,第一笔为全1数据,之后接续两笔全0数据。第四笔数据则依同步信息而异,需依摄像机厂商所使用的同步码型式与内容,配置DVP_SCR寄存器。1. FS/FE/LS/LE型式欲接收FS/FE/LS/LE型式,需配置DVP_SCR寄存器如下。FMSC:配置成影像摄像机使用的FS第四笔数据最高八比特位。LNSC:配置成影像摄像机使用的LS第四笔数据最高八比特位。LNEC:配置成影像摄像机使用的LE第四笔数据最高八比特位。FMEC:配置成影像摄像机使用的FE第四笔数据最高八比特位。图4. FS/FE/LS/LE型式下的帧组成24835b36-69aa-11ed-b116-dac502259ad0.png2. SAV/EAV型式欲接收SAV/EAV型式,需配置DVP_SCR寄存器如下:FMSC:配置成0xff。(配置为无帧开始同步码之内嵌码同步模式)LNSC:配置成影像摄像机使用的Active SAV第四笔数据最高八比特位。LNEC:配置成影像摄像机使用的Active EAV第四笔数据最高八比特位。FMEC:配置成0xff。(配置为任意帧结束同步码之内嵌码同步模式)图5. SAV/EAV型式下的帧组成24914d9a-69aa-11ed-b116-dac502259ad0.png

捕获模式

单帧捕获模式相关寄存器:-DVP_CTRL CFM=1此模式下,用户置起DVP_CTRL的寄存器CAP后,DVP会根据接收到的同步信息,于次帧开始后,进行数据捕获。于该帧结束之时,DVP会自动重置寄存器CAP,并停止数据捕获。图6. 单帧捕获模式示意图24d246b0-69aa-11ed-b116-dac502259ad0.png连续捕获模式相关寄存器:-DVP_CTRL CFM=0此模式下,用户置起DVP_CTRL的寄存器CAP后,DVP会根据接收到的同步信息,于次帧开始后进行数据捕获,此捕获行为会持续进行。当使用者对寄存器CAP置0时,DVP会维持CAP的置起状态并持续捕获数据,直到同步信息反应当帧结束。此时DVP会重置寄存器 CAP,并停止数据捕获。图7. 连续捕获模式示意图24ed5fea-69aa-11ed-b116-dac502259ad0.png

帧率控制功能

相关寄存器:DVP_CTRL CFM=0数字摄像头并行接口(DVP)可透过帧率控制,调节每秒捕获的帧数。帧率控制仅当DVP配置于连续捕获模式(CFM=0)下,方可作用。帧率控制单元可区分成基本型帧率控制与进阶型帧率控制两种。图8. 帧率控制功能示意图2503307c-69aa-11ed-b116-dac502259ad0.png基本型帧率控制相关寄存器:图9. DVP_CTRL BFRC251f00ea-69aa-11ed-b116-dac502259ad0.png配置DVP_CTRL的寄存器BFRC,可选择让DVP每两帧捕获一帧,或是每四帧捕获一帧。进阶型帧率控制相关寄存器:图10. DVP_ACTRL EFRCE252b4eb8-69aa-11ed-b116-dac502259ad0.png图11. DVP_FRF EFRCTF/EFRCSF253ef508-69aa-11ed-b116-dac502259ad0.png如需更精细的帧数调节,可使用进阶型帧率控制。使用时须禁止基本型帧率控制(BFRC=0),并置起DVP_ACTRL的寄存器EFRCE,DVP会依据DVP_FRF的寄存器EFRCSF与EFRCTF之配置来调整帧数,调整公式如下:目标帧率=(EFRCTF/EFRCSF)×原始帧率请注意,当使用进阶型帧率控制功能时,寄存器EFRCSF与EFRCTF值不得为0,且EFRCTF不得大于EFRCSF。

剪裁窗口功能

相关寄存器:图12. DVP_CWST CVSTR/CHSTR2558fc78-69aa-11ed-b116-dac502259ad0.png

图13. DVP_CWSZ CVNUM/CHNUM

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

剪裁窗口功能可以供用户保留兴趣区域数据,舍弃其他部分。置起DVP_CTRL的寄存器CRP,DVP会依据DVP_CWST与DVP_CWSZ之寄存器配置进行剪裁,如下图所示意。

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

请注意,由于DVP会将捕获的数据,包装成字(32位)数据,供直接存储器访问提取。故使用剪裁窗口功能时,CHNUM有下述限制:8位并行数据(PDL=0)时,CHNUM+1须为4的倍数。10或12或14位并行数据(PDLǂ0),CHNUM+1须为2的倍数。

图像尺寸调整功能

使用图像尺寸调整功能,可依据比例对图像进行像素数或行数缩减。图像尺寸调整功能单元可区分成基本型图像捕获舍弃控制与进阶型图像尺寸调缩功能两种。图15.图像尺寸调整功能示意图259424b0-69aa-11ed-b116-dac502259ad0.png基本型图像捕获舍弃控制相关寄存器:图16. DVP_CTRL25cb5d4a-69aa-11ed-b116-dac502259ad0.png

配置DVP_CTRL的寄存器PCDC或LCDC,可启用基本型图像捕获舍弃控制功能。将LCDC置1后,可在每两条捕获的图像行中舍弃一条,将图像的垂直轴尺寸减半。配置LCDS可以选择捕获前一条并舍弃下一条,或是反向为之。寄存器PCDC可以调整图像的水平轴尺寸,由PCDS与PCDES决定捕获何者。如下图所示。

图17. LCDC/LCDS与帧组成25ddc110-69aa-11ed-b116-dac502259ad0.png

图18. PCDC/PCDS与行组成

25f47cde-69aa-11ed-b116-dac502259ad0.png进阶型图像尺寸调缩功能相关寄存器:图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

如需更精细的图像调缩,可使用进阶型进阶型图像调缩功能。使用此功能需启用进阶功能数据管理(EFDM=1),并依CMOS影像摄像机之输出格式配置进阶功能数据格式(EFDF)。使用进阶型进阶型图像调缩功能时,须禁止图像捕获舍弃控制功能(PCDC=0且LCDC=0),并置起DVP_ACTRL的寄存器EISRE,DVP会依据DVP_HSCF的寄存器HSRSF与HSRTF之配置来调缩图像的水平轴尺寸,并依据DVP_VSCF的寄存器VSRSF与VSRTF之配置来调缩图像的垂直轴尺寸,调整公式如下:

目标水平轴尺寸=(HSRTF/HSRSF)×原始水平轴尺寸目标垂直轴尺寸=(VSRTF/VSRSF)×原始垂直轴尺寸

请注意,当使用进阶型进阶型图像调缩功能时,寄存器HSRSF、HSRTF、VSRSF、VSRTF值不得为0,且HSRTF不得大于HSRSF,并VSRTF不得大于VSRSF。此外,计算所得的目标水平轴尺寸与目标垂直轴尺寸必须为整数,且目标水平轴尺寸需为4的倍数,否则此单元可能会产生不预期之结果。

灰阶图像二值化转换

相关寄存器:图22. DVP_ACTRL MIBE26479a90-69aa-11ed-b116-dac502259ad0.png

图23. DVP_BTH

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

灰阶图像二值化转换单元提供将图像亮度转换成一比特位表示之格式。使用此功能需启用进阶功能数据管理(EFDM=1),并依CMOS影像摄像机之输出格式配置进阶功能数据格式(EFDF),设定方式请参考錯誤!找不到參照來源。置起DVP_ACTRL的寄存器MIBE可使能灰阶图像二值化转换功能。

灰阶图像依DVP_BTH之寄存器MIBTHD配置进行二值化转换,数值大于阀值者判定为1,小于阀值者判定为0。图像数据若为无法直接取出图像亮度的格式,则无法使用该功能。

中断与中断控制

相关寄存器:图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

数字摄像头并行接口(DVP)的中断控制,由四组寄存器所构成。DVP_ESTS是只读寄存器,用于纪录捕获过程中所发生的同步状态或错误事件。DVP_IENA用于控制中断讯号之使能,配置该寄存器可以使能对应位的同步状态或错误中断,并以送至CPU。使能后所产生的中断会被记录在只读寄存器DVP_ISTS中,由于DVP是以全局中断连接CPU的NVIC,使用者需于此寄存器确认中断信息。纪录于DVP_ESTS与DVP_ISTS的状态,透过对DVP_ICLR的对应位上置1可清除之。

DVP_ICLR是唯写寄存器,无须置0解除。

DVP支持三组同步状态中断,描述如下:帧捕获完成(Capture frame done)CFDES与CFDIS于捕获功能(CAP)使能时,表现当前帧捕获已完成。根据同步讯号,帧捕获完成讯息会于获取帧结束讯号时发生。若剪裁窗口功能(CRP)始能时,帧捕获完成讯息会提前至剪裁窗口完成时产生。若捕获功能(CAP)未使能,CFDES与CFDIS不作用。垂直同步状态(Vertical synchronization)VSES与VSIS用于表现垂直同步信息已获取。垂直同步信息可被定义为帧开始或帧结束,配置DVP_ACTRL的寄存器VSEID可以调整其定义。水平同步状态(Horizontal synchronization)HSES与HSIS用于表现水平同步信息已获取。水平同步信息可被定义为行开始或行结束,配置DVP_ACTRL的寄存器HSEID可以调整其定义。DVP支持两组错误中断,描述如下:输出缓冲溢出(Output data FIFO overrun)OVRES与OVRIS于捕获功能(CAP)使能时,表现输出缓冲溢出的错误状态。若直接存储器访问无法及时将捕获数据传输至储存单元,而导致输出缓冲全部蓄满数据,此时DVP所捕获的数据将会被舍弃,并产生输出缓冲溢出错误讯息。若捕获功能(CAP)未使能,OVRES与OVRIS不作用。内嵌同步码译码错误(Embedded synchronization error)ESEES与ESEIS于捕获功能(CAP)使能,且使用时内嵌码同步模式时时(SM=1),表现内嵌同步码译码错误的错误状态。若译码器解译出非预期之同步码,译码器会舍弃当前的同步状态,并重新对后续的数据进行解译。此时DVP将会停止数据捕获,并产生内嵌同步码译码错误讯息。若捕获功能(CAP)未使能,或是使用硬件同步模式时(SM=0),ESEES与ESEIS不作用。

DVP应用

Sensor常见影像数据格式

依厂商不同,CMOS影像摄像机可提供的图像输出格式极多,本章节仅针对常见格式进行简单描述。RGB与YUV格式RGB:每一个像素由RGB三原色组成,“R”代表红色,“G”代表绿色,“B”代表蓝色。主要应用在计算机屏幕上,每一个像素色彩表现较丰富, 但无法将 RGB 三种值分开。常见格式有RGB565、RGB555…。

YUV:每一个像素由YUV字段组成,“Y”表示明亮度(Luma),“UV”表示的是色度(Chroma)。主要应用在电视屏幕上,特点在于可以只储存Luma(黑白画面),或是压缩UV的储存空间,方便压缩影像数据。UV代表RGB三原色。常见格式有YUV444、YUV422、YUV420…。

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

44、42与4:20是YUV的取样方法。YUV44即是无通道压缩的全像传送;YUV42即是把后面两个信道的讯号抽掉一半,所以只需要YUV44的三分之二带宽。

YUV与RGB有算法可以互相转换。RGB565此格式下,CMOS影像摄像机每两个像素时钟输出一个半字(16位)数据的像素。每组半字数据包含三种像素分量,红色R、绿色G和蓝色B,分别以5位、6位和5位进行数据编码。第一个像素时钟输出R分量与G分量的低位部分,第二个像素时钟则输出G分量的高位部分与B分量。或是在第一个像素时钟输出B分量与G分量的低位部分,第二个像素时钟输出G分量的高位部分与R分量。錯誤!找不到參照來源。示意在RGB565格式下,DVP数据捕获与包装方式。图30. RGB565格式数据捕获与包装28010236-69aa-11ed-b116-dac502259ad0.pngRGB555此格式下,CMOS影像摄像机每两个像素时钟输出一个半字(16位)数据的像素。每组半字数据包含三种像素分量,红色R、绿色G和蓝色B,皆以5位进行数据编码。第一个像素时钟输出R分量与G分量的低位部分,第二个像素时钟输出G分量的高位部分与B分量。或是在第一个像素时钟输出B分量与G分量的低位部分,第二个像素时钟输出G分量的高位部分与R分量。因有效数据一共只有15位,故第二个像素时钟的最高位数据并不使用,CMOS影像摄像机会通常直接输出低电平。錯誤!找不到參照來源。示意RGB555格式下,DVP数据捕获与包装方式。图31. RGB555格式数据捕获与包装283099c4-69aa-11ed-b116-dac502259ad0.pngYUV422此格式下,CMOS影像摄像机每两个像素时钟输出一个半字(16位)数据的像素。每组半字数据包含一个亮度像素分量Y,与一个色度像素分量U或V,皆以8位进行数据编码。色度分量U与V会在各像素间交替,相邻两像素使用不同色度分量。摄像机于每个像素时钟输出一组像素分量,第一个像素时钟输出Y分量,第二个像素时钟则输出U分量或V分量。或是在第一个像素时钟输出U分量或V分量,第二个像素时钟输出Y分量。錯誤!找不到參照來源。示意在YUV422格式下,DVP数据捕获与包装方式,色度像素分量U与V顺序可互换。图32. YUV422格式数据捕获与包装283c5e9e-69aa-11ed-b116-dac502259ad0.pngY8Y8(Y-only)格式此格式下,CMOS影像摄像机每一个像素时钟输出一个字节(8位)数据的像素表示亮度Y,以8位进行数据编码。于此格式下,CMOS影像摄像机不输出色度信息。錯誤! 找不到參照來源。示意在Y8(Y-only)格式下,DVP数据捕获与包装方式。图33. Y8(Y-only)格式数据捕获与包装285a4030-69aa-11ed-b116-dac502259ad0.png

DVP Lib

DVP功能开启/关闭DVP各功能在设定上没有先后顺序,只有dvp_capture_enable开启后马上会有影像输出,所以必须在完整设定(包含I2C/EDMA/…)后再启动

  • dvp_enable

286f6564-69aa-11ed-b116-dac502259ad0.png开启后 DVP 各功能活化,但不会有影像输出

  • dvp_capture_enable

287cbe1c-69aa-11ed-b116-dac502259ad0.png开启后DVP就会马上会有影像输出, 所以必须在完整设定(包含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设定值可能不同

  • dvp_vsync_polarity_set

28a25302-69aa-11ed-b116-dac502259ad0.png视sensor而定,不同的sensor设定值可能不同同步模式-内嵌码同步

  • 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)连续捕获模式dvp_capture_mode_set(DVP_CAP_FUNC_MODE_CONTINUOUS)帧率控制-基本型

  • dvp_basic_frame_rate_control_set

28e89a88-69aa-11ed-b116-dac502259ad0.png需搭配连续捕获模式dvp_capture_mode_set(DVP_CAP_FUNC_MODE_CONTINUOUS);可以将sensor的帧率再往下调整-不改变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)帧率控制-进阶型

  • dvp_enhanced_framerate_set

28f6a592-69aa-11ed-b116-dac502259ad0.png需搭配连续捕获模式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)图像尺寸调整-基本型

  • 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, 全部捕获,或是使用进阶型图像尺寸调缩功能-DVP_PCDC_ONE_IN_TWO, 启用捕获舍弃控制,于两个像素数据之中,捕获一个-DVP_PCDC_ONE_IN_FOUR, 启用捕获舍弃控制,于四个像素数据之中,捕获一个-DVP_PCDC_TWO_IN_FOUR, 于四个像素数据之中,捕获连续两个

dvp_pcds:

-DVP_PCDS_CAP_FIRST, 捕获第一组数据(一个或两个像素数据),舍弃下一组-DVP_PCDS_DROP_FIRST, 舍弃第一组数据(一个或两个像素数据),捕获下一组

dvp_lcdc:

-DVP_LCDC_ALL, 全部捕获,或是使用进阶型图像尺寸调缩功能-DVP_LCDC_ONE_IN_TWO, 启用捕获舍弃控制,于两条图像行之中,捕获一条

dvp_lcds:

-DVP_LCDS_CAP_FIRST, 捕获第一条图像行之数据,舍弃下一条-DVP_LCDS_DROP_FIRST, 舍弃第一条图像行之数据,捕获下一条图像尺寸调整-进阶型

  • 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)格式数据输入-DVP_EFDF_YUV422_YUYV, YUV422(YUYV / YVYU)格式数据输入-DVP_EFDF_YUV444, YUV444格式数据输入-DVP_EFDF_Y8, Y8(Y only)格式数据输入dvp_enhanced_scaling_resize_set(src_w, des_w, src_h, des_h)需搭配连续基本型全部捕获src_w: 水平尺寸调缩来源系数,使能进阶型图像尺寸调缩功能时(EISRE=1),此寄存器值不得为0des_w: 水平尺寸调缩目标系数,使能进阶型图像尺寸调缩功能时(EISRE=1),此寄存器值不得为0,亦不得大于src_wsrc_h: 垂直尺寸调缩来源系数,使能进阶型图像尺寸调缩功能时(EISRE=1),此寄存器值不得为0des_h: 垂直尺寸调缩目标系数,使能进阶型图像尺寸调缩功能时(EISRE=1),此寄存器值不得为0,亦不得大于src_h灰阶图像二值化转换

  • dvp_monochrome_image_binarization_set

297c7866-69aa-11ed-b116-dac502259ad0.pngdvp_monochrome_image_binarization_set(mibthd, TRUE)mibthd: 灰阶图像二值化阀值,灰阶图像依此阀值进行二值化转换,数值大于阀值者判定为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一定要最后执行可从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一定要最后执行可以循以下方式输出影像(影像传输完毕后须关闭DMA以及DVP防止影像被覆盖):1. 使用J-Link或其他软件撷取出影像buffer内容,再用可看指定影像格式的软件观看2. 使用UART或其他方式将影像buffer内容传输至PC,再用可看指定影像格式的软件观看

图38. PC View

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

EDMA link list mode

如果应用上不会改变DVP输出影像的大小,就可以考虑用EDMA的link list mode来提高DMA的效率。

经由链接列表传输机制,用户可以将几种不同的传输链接在一起,以提高DMA应用程序的系统吞吐量。每个传输信息都可以通过软件存储在描述符中,并且DMA从主存储器加载描述符。

Link list机制为:

1. 预先规划一块buffer存放link list table,内容格式如下,详细内容请参考EDMA章节图39. 描述符格式2a362824-69aa-11ed-b116-dac502259ad0.png

图40. 链接列表指针的用法

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

2. 建立link list table(需预先规划存放影像的地址)

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) 规划一块固定的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代表影像结束,如要重新传输影像则填link list的起始地址

案例 OV5640 Capture

功能简介

实现将影像从 Sensor OV5640 输入到 DVP, 再透过 EDMA 搬移至 LCD 显示

资源准备

1) 硬件环境:对应产品型号的AT-START BOARD

2) 软件环境

project\at_start_f4xx\examples\dvp\ov5640_capture

软件设计

1) 配置流程

  • 开启DVP、EDMA、I2C、XMC时钟
  • 配置LCD、OV5640、DVP
  • 配置EDMA数据流
  • 开启DVP、EDMA相关中断
  • 开启DVP、EDMA数据流
  • 确认LCD显示是否正确

2) 代码介绍

  • main函数代码描述

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

  • LCD函数代码描述

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

  • OV5640函数代码描述

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

  • EDMA函数代码描述

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

  • DVP函数代码描述

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

实验结果

图42. LCD View2b4f5b68-69aa-11ed-b116-dac502259ad0.png关于雅特力雅特力科技于2016年成立,是一家致力于推动全球市场32位微控制器(MCU)创新趋势的芯片设计公司,专注于ARM Cortex-M4/M0+的32位微控制器研发与创新,全系列采用55nm先进工艺及ARM Cortex-M4高效能或M0+低功耗内核,缔造M4业界最高主频288MHz运算效能,并支持工业级别芯片工作温度范围(-40°~105°)。雅特力目前已累积相当多元的终端产品成功案例:如微型打印机、扫地机、光流无人机、热成像仪、激光雷达、工业缝纫机、伺服驱控、电竞周边市场、断路器、ADAS、T-BOX、数字电源、电动工具等终端设备应用,广泛地覆盖5G、物联网、消费、商务及工控等领域。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16242

    浏览量

    345539
收藏 人收藏

    评论

    相关推荐

    如何使用AT32 MCU WDT和WWDT?

    如何使用AT32 MCU WDT和WWDT?
    的头像 发表于 11-10 18:26 894次阅读
    如何使用<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> WDT和WWDT?

    如何在AT32 MCU上使用FPU功能

    如何在AT32 MCU上使用FPU功能
    的头像 发表于 11-01 17:18 3742次阅读
    如何在<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>上使用FPU功能

    关于AT32 MCU温度传感器的应用

    关于AT32 MCU温度传感器的应用
    的头像 发表于 10-27 09:44 360次阅读
    关于<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>温度传感器的应用

    AT32 MCU Printf的功能使用方法

    AT32 MCU Printf的功能使用方法
    的头像 发表于 10-27 09:27 609次阅读
    <b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> Printf的功能使用方法

    AT32 MCU如何使用USB MSD 进行IAP升级?

    AT32 MCU如何使用USB MSD 进行IAP升级?
    的头像 发表于 10-27 09:23 803次阅读
    <b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>如何使用USB MSD 进行IAP升级?

    带VSCode EIDE的AT32 MCU

    AT32 MCU With VSCode EIDE描述了VSCode开发环境中,使用Embedded IDE管理AT32项目。
    发表于 10-26 07:38

    使用CAN的AT32 IAP

    对于AT32 MCU,除了出厂固化的bootloader,用户也可以在应用程序中编写自己的bootloader程序,用于最终产品的固件更新。此功能称为应用程序内编程(IAP)。本应用笔记的目的是提供
    发表于 10-26 06:39

    AT32 MCU USART应用说明

    AT32 MCU USART Application Note介绍了AT32 的USART 功能,并对BSP 例程的软件设计加以说明,同时演示使用方法并展示实验效果,供用户参考。
    发表于 10-25 08:11

    GUIX移植到AT32 MCU的过程和方法

    本应用笔记主要演示GUIX移植到AT32 MCU的过程和方法。本应用笔记在ThreadX OS基础上进行讲解,因此建议阅读者先看AT32的如
    发表于 10-25 07:51

    AT32 PWC应用笔记

    AT32 PWC应用笔记主要以低功耗为基础进行讲解和案例解析。
    发表于 10-25 06:45

    AT32 MCU SDRAM应用说明

    AT32 MCU SDRAM Application Note本文主要讲解AT32 SDRAM 控制器的使用。
    发表于 10-25 06:37

    AT32 MCU CAN入门指南

    AT32 MCU CAN入门指南本文介绍了CAN 标准协议,AT32 CAN 的使用流程以及基于AT32 的几个CAN 使用例程。
    发表于 10-25 06:01

    如何利用AT32系列MCU存储器中的零等待区(ZW)

    本应用笔记详细描述了如何利用AT32系列MCU存储器中的零等待区(ZW),实现在擦除或者编程过程中保证CPU重要内容正常运行,免受MCU失速影响。
    发表于 10-24 08:17

    识别AT32 MCU的应用笔记

    本应用笔记介绍了在AT32微控制器上如何实现当前使用内核版本、MCU厂商及型号的识别
    发表于 10-24 06:37

    AT32 MCU Develop with VSCode

    电子发烧友网站提供《AT32 MCU Develop with VSCode.pdf》资料免费下载
    发表于 09-19 15:22 0次下载
    <b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> Develop with VSCode