i.MAX RT 系列相机应用开发(下)

一、 简介

  在“i.MAX RT 系列相机应用开发(上)”中,我们以 RT1050 为例介绍了如何分析系统结构、创建基本工程以及通过 CSI 捕获视频的过程。本文主要讲解如何在 LCD 上显示帧、如何在 SD 卡中压缩和存储 JPEG 格式的图片以及软件的结构。

二、 如何在 LCD 上显示帧

  从“i.MAX RT 系列相机应用开发(上)”中,我们知道 CSI 是如何通过两个寄存器向 4 个帧缓冲区填充的,也知道 4 个帧缓冲区内的数据会被排空。那么,这 4 个帧缓冲区的数据是如何被排空的呢?在这我们引入两个 SDK 驱动程序函数 CSI_TransferSubmitEmptyBuffer() 和 CSI_TransferGetFullBuffer() ,顶层应用程序可以连续消耗 CSI 帧缓冲区的内容,如下图所示。

                                                                                                                           图 1  CSI 帧缓冲区排空方式

    需要注意的一点是,两个缓冲区的指针被设计为交替指向四个帧缓冲区。这样做的目的是允许连续且同时进行帧缓冲区的填充和排空。

    由于 LCD 的显示分辨率与摄像机的输出分辨率不同,因此需要额外的 LCD 缓冲区,并且 PXP 模块负责缓冲区分辨率的缩放。经缩放后,继续访问 LCD 帧缓冲区,如下图所示。

                                                                                                                          图 2  LCD 帧缓冲区访问方式

    在这引入了两个 LCD 帧缓冲区和两个缓冲区指针。 PXP 通过两个指针填充两个缓冲区,而 eLCDIF 也通过两个指针耗尽两个缓冲区。同样,利用两个指针还可以使缓冲区同时且连续地进行填充和排空。

    帧缓冲区的操作流程(包括对CSI 缓冲区和 LCD 缓冲区的操作)如图 3 所示。在这里,我们可以看到如何让缓冲区指针实现填充和排出操作是连续、同时和独立的。


                                                                                                                    图 3   CSI/LCD 帧缓存操作流程图

三、如何在 SD 卡中压缩和存储 JPEG

    对于 RT1050 demo 的应用程序,当用户触摸 LCD 面板时,当前视频的帧将被压缩为 JPEG 格式并存储在 microSD 卡中。获取用于 JPEG 压缩的 CSI 帧的方法与获取用于 LCD 显示器帧的方法类似,在这我便不多赘述。

    实际上,用于获得压缩和显示帧的代码是混合在一起。当收到一个 CSI 帧并由csiFrameBufPtr2 处理时,如图 3 所示,触摸事件将被轮询。如果检测到触摸事件,就会启动 JPEG 压缩。

四、软件结构

    应用程序的整体软件结构如下图所示。


                                                                                                                     图 4  整体程序和数据流程图

    在初始化过程中,程序会先初始化各种组件,例如系统时钟,引脚的多路复用器,摄像头设备, CSI , eLCDIF ,触摸面板和 SD 卡等。 然后,相机和 LCD 开始启动运行。

    在工作会话中,CSI 会捕捉被填充进 CSI 缓冲区的帧。一方面,CSI 帧通过 PXP 缩放为 LCD 帧的大小,并通过 eLCDIF 传输到 LCD 面板。另一方面, CSI 帧可以选择被压缩为 JPEG 格式并存储到 microSD 卡中,可结合如下图看。


                                                                                                                                        图 5  帧数据流程图

五、小结

    本应用笔记介绍了使用基于 MCUXpresso SDK 的 i.MX RT1050 处理器开发相机应用程序的步骤,从创建一个空白项目到完成该应用程序。 SDK 提供的外围设备驱动程序和各种中间件使整个开发过程变得很容易,也可在此基础上自行开发相机应用程序。

  

 

【参考文献】

  • Developing a Camera Application with i.MX RT Series
  • MT9M114 Data Sheet, Rev. 12
  • MT9M114 Register and Variable Reference, Rev. E
  • IMXRT1060RM

 

★博文内容参考自 网站,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论