《一种基于OV7725的图像实时显示系统设计》由会员分享,可在线阅读,更多相关《一种基于OV7725的图像实时显示系统设计(3页珍藏版)》请在金锄头文库上搜索。
1、福 建 电 脑福 建 电 脑 2013 年第 1 期福 建 电 脑一种基于OV7725的图像实时显示系统设计任志敏( 常州纺织服装职业技术学院机电工程系 江苏 常州 213164 )【摘 要 】: 本文研究并设计了基于 OV7725 感光芯片 , 在 Cortex-M3 内核的 ARM MCUSTM32F103VET6 控制下采集并实时显示到 ili9325 控制的 TFTLCD 液晶显示屏上的软硬件系统 , 最快刷新速率可达 15fps。 在硬件方面 , 增加了先进先出的存储器 AL422B。 在软件方面 ,通过配置 OV7725 的寄存器实现了 RGB565 格式的图像数据输出 , 采用顺
2、序程序流程最大化降低了程序运行时间 , 加快了数据显示的速度 。【关键词 】: 实时显示 ; 图像采集 ; 液晶显示屏 ; 单片机0、 引言随着信息技术的不断发展 , 与其他工业技术越来越融合 , 数字图像采集与处理即是多项工业技术融合的体现之一 , 该技术除了能应用于传统的监控以外 , 越来越多的应用于图像识别等新的领域 , 不管是哪种应用 , 对数字图像进行采集并实时地显示是需要做到的第一步工作 。 因此 , 设计一种简单的带实时显示的图像系统成为了必需 , 通过有机整合单片机 , CMOS 感光芯片和TFTLCD 液晶显示屏 , 尝试设计软硬件系统 , 实现实时显示系统 。1、 图像实时
3、显示系统硬件设计整个系统的设计考虑这样一个流程 , 单片机采集 CMOS 感光芯片的图像数据 , 然后直接发送至 TFTLCD 液晶显示 , 为了达到实时的效果 , 要保证采集和显示达到 15fps (frame per second)。经过反复比较 , 测试和验证 , 控制芯片的速度决定了能否实现实时显示这一特性 。 在做设计的时候首先使用 C51 单片机 STC12C5A60S2 作为控制MCU, 经过测试达不到实时显示的效果 , 只能在TFTLCD 上实现大约 5fps 的刷新频率 , 因此系统选 择 了 STM32F103VET6 这 款 Cortex-M3 内 核MCU 作为采集控制
4、芯片 。 CMOS 感光芯片选择OV7725, TFTLCD 选 择 了 ili9325 控 制 的 320240 大小的 TFTLCD 液晶显示屏 。 考虑到系统除了要实现实时显示这一目的外 , 未来还有可能需要做图像数据的分析 , 因此在整个系统增加了一个 AL422B 先进先出的存储器1。 系统的整体结构框图如图 1 所示 。STM32F103VET6 的 IO0IO7 既可以作为输出配置 ili9325 寄存器的接口 , 又可以作为输入接收采集的数据直接送入 TFTLCD 的数据口显示 。OV7725 是由 Omnivision 公司生产的图像感光元件 , 其主要提供了 D0D7 八个
5、数字像素输出信号 , VSYNC 帧同步信号 , HREF 行同步信号 , PCLK 像 素 同 步 信 号 , SCCB 总 线 (SDA,SCL) 寄存器配置信号 , XCLK 工作时钟信号等引脚 。 在 XCLK 引脚上设计了一个 24M 的有源晶振作为 OV7725 工作的时钟信号 。 SCCB 总线与 I2C 总线类似 , 因此 , 在 SDA 和 SCL 引脚设计了 2 个 10K 的上拉电阻与 C51 单片机的 2 个通用 IO 相连 , 利用 STM32F103VET6 通用 IO 模拟 SCCB 总线协议的方式配置摄像头的不同图像数据格式输出 、 分辨率调整 、 自动曝光控制
6、 、 自动增益控制 、 自动白平衡以及饱和度 、 亮度 、 对比度等参数 。 OV7725 支持 RGB 或 YUV 的不同图 像 数 据 格 式 输 出 , 支 持 VGA ( 640480) ,QVGA (320240) 等图像分辨率2。图 1 图像采集处理实时显示系统整体框图128福 建 电 脑2013 年第 1 期 福 建 电 脑AL422B 这个先进先出的 DRAM 数据存储器主要用于存放完整的一帧 OV7725 输出的图像数据 。 AL422B 有 384KBytes 的 存 储 空 间 , 支 持VGA, CCIR, NTSC, PAL 等视频格式的分辨率大小 5。 AL422B
7、 还提供了读写复位 , 读写时钟 引 脚 。 因 此 在 设 计 硬 件 系 统 过 程 中 , 由OV7725 的像素信号输出时钟 PCLK 作为 AL422B的写输入时钟 , 由 STM32F103VET6 的通用 IO提供读时钟 。STM32F103VET6 是基于 ARM Cortex-M3 内核的 32 位 MCU, 工作主频最快可以达 72MHz,具 有 256KBytes 的 Flash 存 储 器 , 64KBytes 的SRAM。 同时具有丰富的外部接口 , 包括 UART,USB, SPI, I2C, SDIO 等3。ili9325 是一款驱动 TFTLCD 的控制芯片 ,
8、 最大支持 320240 的 QVGA 分辨率显示 。 内部集成的 RAM 大小有 172800bytes, 支持 i80 的 8/9/16/18 位总线接口 4。为了保证采集完整的一帧数据 , 必须要做到帧同步和行同步 , OV7725 的控制信号输出时序图如图 2 所示 。因此系统把 VSYNC 连接到 STM32F103VET6的外部中断上 , 通过下降沿中断开始一帧的采集 , 保证帧开始同步 。 系统在 STM32F103VET6的一个通用 IO 设计了一个启动写入 AL422B 的信号与行同步型号 HREF 共同作为一个与非门的输入连接到 AL422B 的 WE 引脚控制 AL422
9、B 的写入 , 写入一帧信号后 , 在 VSYNC 的下一个上升沿沿关闭写入信号或者开始下一帧的采集 , 从而保证了 AL422B 存放了完整的一帧信号 。为了尽可能加快数据送入 TFTLCD 显示 , 硬件设计的时候一个要点是 ili9325 的 RW 引脚要和 AL422B 的 RCK 引脚接入 STM32F103VET6 的同一组 IO, 比如 PORTA, 这样可以保证在送入TFTLCD 数据的时候可以同时操作 RW 和 RCK。2、 图像采集处理系统软件设计为了实现 STM32F103VET6 采集的 OV7725的图像数据在 TFTLCD 的实时显示 , 首先需要解决的问题是 OV
10、7725 输出的数据格式应该匹配TFTLCD 的 显 示 接 口 。 通 过 研 究 OV7725 和ili9325 的 datasheet, 确定 OV7725 的输出格式采集 RGB565 的格式 , 窗口大小为 320240 的分辨率 , 该时序图如图 3 所示 。RGB56 格式主要是一个像素点的 rgb 分量值值由 2 个 bytes 组成 , 其中红色分量 R 占 5 个比特 , 绿色分量 G 占 6 个比特 , 蓝色分量 B 占 5个比特 。整个下位机程序的流程图如图 4 所示 。在系统上电后 , 首先对相关 STM32 的通用IO 初始化 , 特别要注意的是 STM32 的 I
11、O0IO7一开始要配置成输出模式 , 因为 ili9325 的寄存器配置需要通过该 8 位总线传输配置数据 , 等到开始往 TFTLCD 传输图像数据时需要把该总线配置成输入模式 。 然后通过模拟 SCCB 总线配置OV7725 的寄存器 , 模拟 SCCB 总线的写寄存器的步骤是 :step0: 启动 SCCB 总线step1: 写 OV7725 的器件地址 , 即 0x42step2: 写 OV7725 的寄存器号 , 寄存器号范图 2 OV7670 输出时序图图 3 OV7725 RGB565 格式输出时序图图 4 下位机程序流程图129福 建 电 脑福 建 电 脑 2013 年第 1
12、期福 建 电 脑(上接第 116 页 )!在系统的设计和开发实现的过程中 , 我实际地体会到了软件工程迭代式的软件开发方法 ,以及团队合作的重要性 。在软件开发的工程中 ,应该对需求有准确的定位和把握 , 在不会影响设计约束的条件下 , 对需求中可能发生变化的部分采用支持可配置的灵活的编程方式 , 并适当采用设计模式 , 这样可以大大地提高系统开发的灵活性和开发的效率 。参考文献 :1方英兰等 .计算机软件项目实训指导 M.电子工业出版社 ,2011-01-012Thomas Connolly, Carolyn Begg.数据库系统 M.电子工业出版社 ,2008-13Roger S.Pres
13、sman. 软件工程 M. 机械工业出版社 ,2007-014Robert C. Martin. 敏捷软件开发 M.清华大学出版社 ,2003-9-1围从 0x000xAC, 对照 OV7725 的 datasheet, 有些寄存器是可读可写的 , 有些只可以读 。step3: 写入对应寄存器号的值step4: 结束 SCCB 总线读寄存器值的步骤是 :step0: 启动 SCCB 总线step1: 写 OV7725 的器件地址 , 即 0x42step2: 写 OV7725 的寄存器号step3: 结束 SCCB 总线step4: 再次启动 SCCB 总线step5: 写 OV7725 的器
14、件地址 , 即 0x43step6: 读出该寄存器的值step7: 结束 SCCB 总线为了实现 RGB565, 窗口大小为 320240 的输出格式 , 需要通过 SCCB 总线配置 OV7725 的寄存器 。 与此相关的寄存器配置值是 :sccb_senddata (0x12,0x46) /RGB565 QVGA模式sccb_senddata (0x17,0x3c)/0x17,0x18,0x19,0x1a,0x32sccb_senddata (0x18,0x54)/配置的是 320240 的窗口sccb_senddata (0x19,0x03)sccb_senddata (0x1a,0x7
15、8)sccb_senddata (0x32,0x00)sccb_senddata (0x67,0x48) /RGB 输出模式对 ili9325 控 制 器 的 初 始 化 主 要 是 配 置 成320240 的 8 位模式 。 外部中断初始化主要是用于帧同步 。 启动采集命令由系统上的一个按键触发 , 一旦启动采集按钮按下 , 使能外部中断 ,VSYNC 上升沿触发外部中断 , 中断程序在帧同步信号 VSYNC 的上升沿时写复位 AL422B, 并且置 STM32 的开始采集信号 IOx, 等到下一个VSYNC 上升沿时候表示一帧数据已经完整写入AL422B, 然后置数据完整写入信号 。 在采
16、集主程序获得写入完整一帧信号后 AL422B 读复位 ,读出的数据在 RCK 时钟和 ili9325 的 RW 控制下写入 TFTLCD 并显示 。 等到下一个 VSYNC 上升沿到来循环采集并显示 。 需要特别指出的是 , 为了尽可能加快显 示的 刷新 速 率 , 程 序在 显示3202402 个数据显示时 , 没有采用传统的循环的方式来组织程序结构 , 而是用了 3202 个顺序语句来实现该操作 , 在一定程度上减少了程序运行的时间 。3、 结束语本 文 通 过 研 究 OV7725 感 光 芯 片 ,STM32MCU, ili9325, AL422B 等基本元器件的datasheet, 设计了基于 OV7725 图像数据格式为RGB565 的分辨率为 320240 的实时显示的软硬件系统 , 经过测试 , 图像数据的刷新频率达到15fps, 满足了实时显示的要求 , 为后续进行图