微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 消费类电子 > 基于CH374的USB摄像头驱动设计

基于CH374的USB摄像头驱动设计

时间:04-10 来源:单片机及嵌入式系统应用 /李明 点击:
现有视频监控系统的设计大都采用USB视频采集和以太网传输,并且需要视频压缩方案,通常需要操作系统支持;因此选取的开发平台价格昂贵,造成视频临控系统的成本居高不下,以致使小型工厂和家庭用户难以接受。

  本课题采用S3C44BO微处理器的ARM7开发平台,驱动USB接口芯片CH374进行视频数据采集,提供了低成本的视频采集方案。USB视频采集涉及USB同步传输,但是在众多USB主机芯片的设计中,多以控制传输和批量传输为主,对同步传输的讲解极为少见。本文提供了USB同步传输的设计范例。

  1 系统工作原理

  典型的USB视频采集系统如图1所示。USB系统包含主机和物理设备两个最基本的元素,一个USB系统只能有一个USB主机,可以连接多个物理设备。本设计中的设备是USB摄像头,USB主机由USB主机控制器、微处理器及驱动软件构成。USB系统工作层次分明:USB接口层提供主机控制器和设备的物理连接;设备层中,USB主机调用驱动程序通过端点0发送并获取USB设备的控制信息;功能层进行实际数据的传输,主机必须选择合适的接口和端点,调用底层驱动提供的接口函数获取USB摄像头的视频数据流。

  
  1.1 USB摄像头SPCA561A

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

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

  1.2 USB主机控制器CH374

  CH374是一个嵌入式USB总线的通用接口芯片,支持USB主机方式和USB设备方式,支持低速和全速的控制传输、批量传输、中断传输以及同步传输。在本地端,CH374具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到DSP/MCU/MPU等控制器的系统总线上。大多数嵌入式的USB主机接口芯片并不提供同步传输模式,而CH374的一大特点就是提供了同步传输,使得视频和音频流的传输成为可能。

  本系统使用CH374作为USB主机控制器,如图3所示。CH374用总线方式与S3C44B0相连,微控制器通过读写CH374寄存器实现USB主机驱动。

  
  1.3 USB同步传输原理

  同步传输主要用来传输音频或视频信号。这种信息是周期的,又是实时的,对信息实时性有很高的要求,但是对误码率却可以容忍。所以USB为这种信息保留90%的带宽,其他类型的传输在同步传输期间不可以占用。

  为保证数据传输的实时性,同步传输不进行数据错误的重传,也不在硬件层次上响应一个握手资料包。同步传输的主机每隔l ms发送一个SOF同步信号,随后接收设备发送的信号,其数据流程如图4所示。

  
  在同步传输中,每一个信包的容量是一定的。拿SPCA56l来说,在启动同步传输之前必须设置相应的接口号。不同的接口号决定将要发送多大的信包容量,如接口号1每次发送的信包容量是128字节,接口号6的信包容量是896字节。接口号通过USB标准设备请求SET_INTERFACE来设置。由于CH374的缓冲区最大为128字节,所以本设计中使用接口号l,同步传输每接收一个信包的大小是128字节容量的信包。

  1.4 视频数据采集过程

  如图5所示,视频信号由摄像头SPCA561A采集得到,经过内部的图像处理芯片后编码为规定的格式,一般为RGB或者YUV格式,但是SPCA561采用比较特殊的S561图像格式(类似于RGB格式)。因为一帧图像的数据量很大,无法在一个同步信包内传送,所以将其分割成多个单元,每个单元前添加包头(包头的内容包括当前包序号和此图像帧信息),组成多个同步信包,通过FIFO缓冲发送到USB总线上。主机控制器用同步方式接收每个信包,并去除包头合并成S561格式的数据,组成一个完整的图像帧。最后由软件将此图像帧预编码成为YUV420格式的图像数据,以便后续的压缩处理。

  
  2 USB摄像头驱动的实现

  USB摄像头并非标准的USB外设。与其他USB外设不同的是,每个厂商的摄像头芯片都有自己定义的设备请求,而这些摄像头芯片数据手册并不对外公开,所以编写摄像头驱动的难度很大,想要驱动支持更多的摄像头,程序会非常复杂。本文只介绍SPCA561A摄像头驱动的方法。

2.1 USB摄像头初始化

  初始化一个USB摄像头有两个步骤,第一步是摄像头的枚举,第二步是摄像头的自定义设置。

  (1) 设备枚举

设备的枚举就是标准设备请求的过程,这部分内容包含于USB协议第9章

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top