基于USB摄像头的嵌入式图像采集系统设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

USB总线技术的应用

目录

一、课题简介 (3)

二、系统框图 (3)

三、系统工作原理 (4)

3.1 USB设备基础 (4)

3. 2 USB驱动体系结构 (5)

四、硬件设计 (7)

4. 1 USB 摄像头SPCA561A (7)

4. 2 USB 主机控制器CH374 (8)

4. 3 USB 同步传输原理 (8)

4. 4 视频数据采集过程 (9)

五、软件设计 (9)

5. 1 USB 摄像头初始化 (9)

5. 2 同步传输和图像帧处理 (10)

5. 3 图像数据的预编码 (11)

六、结语 (12)

基于USB摄像头的嵌入式图像采集系统设计一、课题简介

名称:手势识别

功能:通过摄像头对手势的前后左右的识别,使显示器上的页面完成转向、翻页、放大、缩小等操作。

包含的总线:USB总线

VGA总线

CPU内部的数据和地址总线等

本文主要介绍与USB相关的内容。

二、系统框图

摄像头采集图像信息,通过USB总线传到MCU的FIFO缓冲区,MCU对图像信息数据进行识别和处理,并控制显示器的页面做出与手势动作相对应的操作。系统框图如下所示:

图2 系统框图

三、系统工作原理

典型的USB 图像采集系统如图3 所示。USB 系统包含主机和物理设备两个最基本的元素, 一个USB 系统只能有一个USB 主机, 可以连接多个物理设备。本设计中的设备是USB 摄像头, USB 主机由USB 主机控制器、微处理器及驱动软件构成。

USB 系统工作层次分明: USB接口层提供主机控制器和设备的物理连接;

设备层中,USB 主机调用驱动程序通过端点0 发送并获取USB 设备的控制信息; 功能层进行实际数据的传输, 主机必须选择合适的接口和端点, 调用底层驱动提供的接口函数获取USB 摄像头的视频数据流。

图3 USB视频采集系统示意图

3.1 USB设备基础

USB设备由断点、接口和配置组成,USB驱动程序通常绑定到USB接口上,而不是整个USB设备。下面介绍几个重要的概念:

1.端点

U SB通信最基本的形式是通过一个名为端点(endpoint)的东西。USB端点只能往一个方向传送数据,从主机到设备(称为输出端点)或者从设备到主机(称为输入端点)。端点可以看作是单向的管道。USB端点有四种不同的类型,分别具有不同的传送数据的方式:

(1)控制端点:它用来控制对USB设备不同部分的访问。它们通常用于配置设备、获取设备信息、发送命令到设备,或者获取设备的状态报告。每个USB 设备都有一个名为“端点0”的控制端点,USB核心使用该端点在设备插入时进行设备的配置。USB协议保证这些传输始终有足够的保留带宽以传送数据到设备。

(2)中断端点:当USB宿主要求设备传输数据时,中断端点就以一个固定的速率来传送少量的数据。它们通常还用于发送数据到USB设备以控制设备,不过一般不用来传输大量的数据。USB协议保证这些传输始终有足够的保留带宽以传送数据。

(3)批量端点:它传输大批量的数据。这些端点通常比中断端点大得多(它们可以一次持有更多的字符)。它们常见于需要确保没有数据丢失的传输的设备。USB协议不保证这些传输始终可以在特定的时间内完成。如果总线上的空间不足以发送整个批量包,它将被分割为多个包进行传输。这些端点通常出现在打印机、存储设备和网络设备上。

(4)等时端点:它同样可以传送大批量的数据,但数据是否到达是没有保证的。这些端点用于可以应付数据丢失情况的设备,这类设备更注重于保持一个恒定的数据流。实时的数据收集(例如音频和视频设备)几乎毫无例外都使用这类端点。

2.接口

USB端点被捆绑为接口。USB接口只处理一种USB逻辑连接,例如鼠标、键盘或者音频流。一些USB设备具有多个接口,一个USB接口代表了一个基本功能,而每个USB驱动程序控制一个接口,因此对于具有多个接口的USB设备来说,Linux需要有多个不同的驱动程序来处理一个硬件设备。

3.配置

USB接口本身被捆绑为配置。一个USB设备可以有多个配置,而且可以在配置之间切换以改变设备的状态。

3. 2 USB驱动体系结构

通用串行总线(USB)是一种外部总线结构,特点是接口统一、方便扩展、支持热插拔,简化了计算机与不同类型外设间的连接。USB是一种分层总线结构,并且由一个主机控制器来控制,USB主机控制器(host controller)负责询问每一个

USB设备是否有数据需要发送,USB不支持设备的直接通信。

图3.2给出了Linux中USB驱动的体系结构。

图3.2 Linux下USB驱动体系结构

Linux USB主机驱动由三部分组成:

USB主机控制器驱动、USB驱动和不同的USB设备类驱动。其中USB主机控制器驱动(HCD)是USB主机直接与硬件交互的软件模块,它为上层提供统一的接口,屏蔽掉硬件具体细节。USB驱动(USBD)是整个USB主机驱动的核心,主要为USB设备类驱动提供相关的接口、提供应用程序访问USB系统的文件接口。而USB设备类驱动是最终与应用程序交互的软件模块,主要为访问特定的USB设备和应用程序提供接口。

四、硬件设计

图4 初步设计框图

4. 1 USB 摄像头SPCA561A

视频信号的采集一般选择USB 摄像头来实现。如图4.1.1所示, USB 摄像头SPCA561A 集成了镜头、CMOS 传感器、USB 图像处理器以及USB 控制器。

图4.1 SPCA561A芯片示意图

比起直接与微处理器接口的CMOS 传感器, 使用USB 摄像头虽然成本偏高, 但是易于实现, 节省CPU 资源, 传输速度远远高于串口、并口的速度,而且驱动支持非常丰富。SPCA561A 提供了一种单芯片摄像头解决方案, 它将一个CIF 的CMOS 传感器、一个图像处理器和USB 控制器集成于单芯片, 从而大大降低了成本和开发难度; 缺点是只有10 万像素, 每秒帧数较少, 然而非常适合应用于图像要求不高的小型监控系统。

相关文档
最新文档