当前位置:文档之家› 基于USB摄像头的嵌入式图像采集系统设计

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

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 万像素, 每秒帧数较少, 然而非常适合应用于图像要求不高的小型监控系统。

4. 2 USB 主机控制器CH374CH374 是一个嵌入式USB 总线的通用接口芯片, 支持USB 主机方式和USB 设备方式, 支持低速和全速的控制传输、批量传输、中断传输以及同步传输。

在本地端,CH374 具有8 位数据总线和读、写、片选控制线以及中断输出, 可以方便地挂接到DSP/ MCU/ MPU 等控制器的系统总线上。

大多数嵌入式的USB主机接口芯片并不提供同步传输模式, 而CH374 的一大特点就是提供了同步传输, 使得视频和音频流的传输成为可能。

本系统使用CH 374 作为USB 主机控制器, 如图4所示。

CH374 用总线方式与S3C44B0相连, 微控制器通过读写CH374寄存器实现USB 主机驱动。

4. 3 USB 同步传输原理同步传输主要用来传输音频或视频信号。

这种信息是周期的, 又是实时的, 对信息实时性有很高的要求, 但是对误码率却可以容忍。

所以USB 为这种信息保留90%的带宽, 其他类型的传输在同步传输期间不可以占用。

为保证数据传输的实时性, 同步传输不进行数据错误的重传, 也不在硬件层次上响应一个握手资料包。

同步传输的主机每隔1 ms 发送一个SOF 同步信号, 随后接收设备发送的信号, 其数据流程如图4.3 所示。

图4.3 同步传输流程图在同步传输中, 每一个信包的容量是一定的。

拿SPCA561 来说, 在启动同步传输之前必须设置相应的接口号。

不同的接口号决定将要发送多大的信包容量, 如接口号1 每次发送的信包容量是128 字节, 接口号6 的信包容量是896字节。

接口号通过USB标准设备请求SET _INTERFACE 来设置。

由于CH374 的缓冲区最大为128字节, 所以本设计中使用接口号1, 同步传输每接收一个信包的大小是128 字节容量的信包。

4. 4 视频数据采集过程如图4.4所示, 视频信号由摄像头SPCA561A采集得到, 经过内部的图像处理芯片后编码为规定的格式, 一般为RGB 或者YUV 格式, 但是SPCA561 采用比较特殊的S561 图像格式( 类似于RGB 格式) 。

因为一帧图像的数据量很大, 无法在一个同步信包内传送, 所以将其分割成多个单元, 每个单元前添加包头( 包头的内容包括当前包序号和此图像帧信息) , 组成多个同步信包, 通过FIFO缓冲发送到USB总线上。

主机控制器用同步方式接收每个信包, 并去除包头合并成S561 格式的数据, 组成一个完整的图像帧。

最后由软件将此图像帧预编码成为YUV420格式的图像数据, 以便后续的压缩处理。

图4.4 视频数据采集示意图五、软件设计5. 1 USB 摄像头初始化初始化一个USB 摄像头有两个步骤, 第一步是摄像头的枚举, 第二步是摄像头的自定义设置。

( 1) 设备枚举设备的枚举就是标准设备请求的过程。

对USB 摄像头来说, 枚举的过程依次如下:①获取设备描述符。

通过设备描述符得到端点0 的负载, 也就是最大传送包容量。

②设置地址。

给设备分配一个默认地址0 之外的地址。

③获取配置描述符。

这个过程包括两个阶段, 第1次获取的配置描述符的前4 个字节得到配置描述符的真实长度; 再以真实长度第2 次获取配置描述符, 此描述符包含了设备的配置信息和多个接口信息。

可以从这里得到可以使用的接口号和对应的信包负载。

④设置配置信息。

设置的主要信息是配置描述符中的第5个字段bConf igurationValue。

⑤设置接口。

USB摄像头不同的接口号对应不同的信包负载。

本设计选定的接口号为2, 对应信包负载是128字节。

( 2) 自定义设置USB 摄像头并不是标准USB 外设, 需要很多自定义设置, 可以称之为/ 自定义设备请求0, 它是用标准设备请求包方式传送的, 目的是修改内部寄存器, 对采集图像和压缩方式进行配置。

自定义设备请求的内容非常丰富, 它包含以下几个方面:①时序产生设置。

包括图像采集频率和振荡器的设置等。

②图像处理设置。

包括图像窗口大小、压缩类型、色彩分配等配置属性。

③存储器设置。

对图像缓冲进行设置。

④控制及状态设置。

包括启动及停止图像采集、数据传输方式、当前状态等配置属性。

初始化结束后, 可以根据需要进行图像格式的设定, SPCA561A 支持SQVGA ( 160 x 120) 、QCIF( 176x 144) 、QVGA( 320 x 240) 、CIF( 352 x288) 四种格式。

设定结束后启动摄像头采集, 进行数据传输。

5. 2 同步传输和图像帧处理同步传输的过程非常简单, 甚至不包含握手信息; 但是因为同步传输对时序的要求很高, 所以对同步传输数据的处理颇困难。

此驱动的设计将同步数据的接收用中断服务程序进行处理, 同步数据的处理放在中断服务之外执行。

图5.2.1 同步传输中断①中断服务程序流程如图5.2.1所示。

相关主题