无线电爱好网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

RT1010 FlexIO 做模拟 CSI 原理分析

2022-7-29 13:25| 发布者: 闪电| 查看: 3| 评论: 0

摘要: 1、简介i.MX RT 跨界嵌入式处理器系列采用了恩智浦对 Cortex-M7 内核的高级实现。该处理器家族有一些发展,到目前为止,它从低端部分到高端部分衍生了几个 部分。摄像头接口等高级功能通常仅集成在高端部件中。高端 ...

1、简介

i.MX RT 跨界嵌入式处理器系列采用了恩智浦对 Cortex-M7 内核的高级实现。该处理器家族有一些发展,到目前为止,它从低端部分到高端部分衍生了几个 部分。摄像头接口等高级功能通常仅集成在高端部件中。高端部件(例如i.MX RT117x)具有并行和 MIPI CSI 接口。中端部件(例如 i.MX RT105x 和RT106x)仅具有并行摄像头接口。低端部件(例如 i.MX RT101x 和 RT102x)没有专用的摄 像头接口。但是,有些应用需要具有低性能和低成本要求的摄像头接口。在这种情况下,FlexIO模块是满足此要求的最佳选择。FlexIO 是来自恩智浦的高度可配置的 IP 外设,可以用来模拟 CSI,I2C,SPI,PWM 等外设。

 

2、FlexIO 概述

FlexIO是高度可配置的, 它允许您实现各种功能,包括:

  • 仿真串行通信接口,例如 UART,SPI,I2C,I2S等。
  • 并行通信接口的仿真,例如摄像头接口,Motorola 68K 总线,Intel 8080 总线等。
  • 生成PWM波形。
  • 逻辑功能的实现
  • 执行状态机功能。

 

3、FlexIO摄像头接口的操作原理

您可以将 FlexIO 配置为以不同的方式模拟并行摄像头接口,例如使用不同的数据总线宽度,串联的移位器数量以及所使用的特定 移位器,引脚和计时器。 多拍子传输用于支持较大的传输大小。 在此,拍子是指变速操作。 一个传输序列需要计时器生成多个移位时钟。 每一个传输序 列的节拍数与串联的移位器数和总线宽度有关。 一个移位器具有 32 位。 一个移位器支持 8 位总线的一次 4 节拍传输。 两个移位器 可支持 8 拍,依此类推。 在此应用中,全部使用了 8 个移位器。 因此,对于 8 位总线,支持 32 个节拍。 下 图显示了 FlexIO 资源的并行摄像头接口组织。


在组织中,所有 8 个移位器都连接在一起。 TIMER0 用于控制变速杆的变速。 TIMER1 用于生成 XCLK(此应用中为 24MHz)。 D0-D7,HREF 和XCLK 基于 FlexIO 引脚。 另一个 GPIO 引脚用于接收 VSYNC 信号。 SHIFTER0 状态标志用于触发DMA请求。 转移过程如下:

  1. 配置 FlexIO,DMA,GPIO 等。以下部分显示了详细的配置。
  2. 在 VSYNC 上升沿 ISR中,将 DMA 目标地址重新定向到新的帧缓冲区。
  3. 一条新线开始转移。 HREF上升沿使能TIMER0。
  4. TIMER0与PCLK输入一起开始递减计数。同时,TIMER0 生成移位时钟,以控制移位器将数据移入。移位时钟是每个 PLCK 时钟 生成的。 每 1 个移位时钟移位 8 位数据。
  5. TIMER0递减计数为零,并在 32 个移位时钟后发生比较事件
  6. 比较事件表示存储事件。 数据从SHIFTER0-SHIFTER7 存储到移位缓冲区 SHIFTBUF0-SHIFTBUF7。
  7. storeing事件填满了移位器缓冲区,这将设置移位器的状态标志并触发DMA请求。
  8. eDMA将数据从移位缓冲区SHIFTBUF0-SHIFTBUF7复制到SRAM。 每个请求复制32个字节。
  9. 在比较事件之后,TIMER0再次从TIMCMP0加载初始值。 然后,重复步骤 4-9。
  10. 传输线后,HREF变为低电平。 禁用TIMER0,直到开始传输新行。 然后,重复步骤3-10。
  11. 传输完帧后,VSYNC变为低电平。 然后,重复步骤2-11。

这是捕获一帧的过程。 仅要求CPU在VSYNC ISR中重新定向DMA目标地址。 捕获帧的所有其他操作由FlexIO和eDMA完成。 在 VSYNC ISR中也设置了显示DMA源地址配置。

 

4、用于并行摄像机接口的FlexIO配置

摄像头接口的FlexIO配置主要包括移位器和计时器配置。 以下代码是从API 驱动程序 fsl_flexio_camera.c \ FLEXIO_CAMERA_Init() 中剪切下来的,实现了 shifter 配置。



以下代码是从 API 驱动程序 fsl_flexio_camera.c \ FLEXIO_CAMERA_Init() 中剪切下来的,实现了移位计时器的配置。

 

5、FlexRAM配置

使用 FlexRAM 功能,可以将 RT1010 的 128 KB 内部 RAM 配置为ITCM,DTCM 或 OCRAM。 默认情况下,128 KB RAM 分为 32KB ITCM,32 KB DTCM 和 64 KB OCRAM。 另一方面,此应用程序中的一个完整帧占用 160 x 120 x 2 = 38.4 KB。 可以将一帧缓冲区放入 OCRAM。 但是,如果通过乒乓 缓冲方式使用两个帧缓冲区,则默认的 RAM 分配将不适用。 以下代码是从 startup_MIMXRT1011.s 剪切而来的,它说明了如何 为应用程序重新分配 RAM。 之所以在启动程序集文件中实现此配置,是为了确保在重新分配之前不执行任何堆叠操作。 堆栈地址可以在重新分配期间进行更新。

128 KB RAM分为32 KB ITCM和96 KB OCRAM。 此外,必须更新链接描述文件以匹配新的RAM空间。 下面的代码显示了IAR 链接程序脚本文件的更新部分。

定义了一个名为 DATA2_region 的区域来表示 96 KB OCRAM。 块RW,ZI,HEAP,NCACHE_VAR和CSTACK 都放置在该区域中。 帧缓冲区是在 NCACHE_VAR 块中定义的,其中的以下代码从 flexion_ov7670.c 中裁剪而来。

6、结论

本应用笔记介绍了如何使用 FlexIO 仿真 i.MX RT1010 处理器的并行摄像头接口。 该演示应用程序使用 OV7670 摄像机模块,该模块配置为输出QQVGA 帧。 帧速率最高为 30fps。 通过此示例,您可以在应用程序中使用低成本 RT1010 处理器以及备用并行摄像头接口。

 

7、参考资料

i.MX RT1010参考手册(文档 IMXRT1010RM)

将FlexIO用于并行摄像机接口(文档 AN5275)


路过

雷人

握手

鲜花

鸡蛋

QQ|关于本站|小黑屋|Archiver|手机版|无线电爱好网 ( 粤ICP备15040352号 ) 无线电爱好技术交流5 无线电爱好技术交流1无线电爱好技术交流9开关电源讨论群LED照明应用、电源无线电爱好技术交流4无线电爱好技术交流8无线电爱好技术交流10无线电爱好技术交流11

粤公网安备 44030702001224号

GMT+8, 2022-7-29 15:38 , Processed in 0.124800 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

返回顶部