基于USB摄像头的嵌入式图像采集系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 万像素, 每秒帧数较少, 然而非常适合应用于图像要求不高的小型监控系统。