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

发布者:CelestialSoul最新更新时间:2007-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章。对USB摄像头来说,枚举的过程依次如下:

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

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

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

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

⑤设置接口。USB摄像头不同的接口号对应不同的信包负载。本设计选定的接口号为2,对应信包负载是128字节。

(2) 自定义设置

USB摄像头并不是标准USB外设,需要很多自定义设置,可以称之为“自定义设备请求”,它是用标准设备请求包方式传送的,目的是修改内部寄存器,对采集图像和压缩方式进行配置。标准设备请求和自定义设备请求包的不同内容如表1所列。自定义设备请求的内容非常丰富,它包含以下几个方面:

①时序产生设置。包括图像采集频率和振荡器的设置等。

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

③存储器设置。对图像缓冲进行设置。

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

程序中的初始化设置有近百条,具体设置请见参考文献[1]的开源代码。初始化结束后,可以根据需要进行图像格式的设定,SPCA561A支持SQVGA(160×120)、QCIF(176×144)、QVGA(320×240)、CIF(352×288)四种格式。设定结束后启动摄像头采集,进行数据传输。

2.2 同步传输和图像帧处理

同步传输的过程非常简单,甚至不包含握手信息;但是因为同步传输对时序的要求很高,所以对同步传输数据的处理颇困难。此驱动的设计将同步数据的接收用中断服务程序进行处理,同步数据的处理放在中断服务之外执行。

①中断服务程序流程如图6所示。每次同步中断发生时,首先从USB主机控制器的缓冲区内读取接收到的128字节同步信包,将数据存储到数据处理程序提供的存储单元中。再发送PID_IN标志和端点号,设置同步传输类型并启动下一次传输。CH374主机会在每1 ms发送1个SOF同步标志,USB设备接收到SOF标志后,会传送下一个同步信包。

②同步数据处理程序如图7所示。中断结束后,执行数据处理程序,程序读取同步信包的第一个字节,确认包的序号,此序号的范围是0~0xFF。如果此序号为0xFF,则说明是无效包,需要丢弃。如果此序号为0,则可能是首次采集得到的第一个同步数据包,直接存储此数据到图像帧;也可能是当前图像帧结束后开始的下一帧图像的第一个同步信包,则需要处理已经结束的当前帧图像,同时将当前帧设置为下一帧。至此得到了一帧图像数据。

 

 

2.3 图像数据的预编码

经过处理后的图像帧为S561格式数据,它是一种RGB格式的图像,无法被后续的图像编码器利用。常用的视频压缩标准(如H.263、MPEG4等)输入的视频数据为YUV420格式,所以必须对当前的S56l格式数据进行预编码,使之成为YUV420格式。因为算法比较复杂,在此不详细叙述,请参考文献[1]中bayer_decode( )函数的的源代码。至此,基于CH374的摄像头驱动完成。

3 设计心得

由于此USB主机基于低端嵌入式硬件系统,没有操作系统支持,也没有BUSHOUND类似的USB数据流分析软件支持,难以找到基于嵌入式平台USB同步传输参考程序,所以设计的难度很大。笔者的设计经验是重在参考程序的选择。

此课题的设计可以分成两个部分:一个是底层的CH374主机控制器驱动,主要包括没备探测和枚举(这部分程序的设计可以参考类似主机控制器的驱动程序,如Cypress公司的SL811HS芯片主机驱动程序[3]);另一部分是摄像头初始化、视频数据读取及处理程序,仅有的参考资料是Linux下的开源USB摄像头驱动。在设计过程中首先需要了解Linux设备驱动原理,很好地分析USB摄像头驱动之后才能有设计思路。

结 语

将本驱动加到已有的视频压缩程序中,通过网络传送视频到PC后播放,在大小为QVGA(160×120)的图像属性下,可以达到每秒7帧,基本满足了实际需要。基于CH374的USB摄像头驱动,提供了低成本嵌入式平台实现视频采集的方案,便利视频采集系统不再高不可攀,对视频监控的普及起到了积极作用。

关键字:视频  压缩  接口  同步 引用地址:基于CH374的USB摄像头驱动设计

上一篇:背投电视技术
下一篇:USB2.0摄像头微处理器硬件设计

推荐阅读最新更新时间:2024-05-03 10:59

分享一个STM8的ADC接口
结构体 /* ADC采样数据类型 */ typedef struct _adc_s_ { // 采样结果AD值和电压值 uint16_t adc_val; // AD值 float adc_voltage; // 电压值 uint16_t adc_max; // ADC最大值 float vref; // 参考电压 uint16_t sampling_times; // 采样次数 } adc_s; 头文件 #ifndef __ADC1_H__ #define __ADC1_H__ #include stm8s_adc1.h #include stm8s_gpio.h #include stm8s
[单片机]
嵌入式系统接入网及其网络接口技术研究
      嵌入式系统以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应了各种应用系统中对功能、可靠性、成本、体积、功耗等的严格要求,因此它赢得了巨大的市场,在应用数量上远远超过了各种通用计算机。嵌入式接入Internet是近几年随着计算机网络技术的普及和发展而发展起来的一项新兴概念和技术,它通过为现有嵌入式系统增加因特网接入能力来扩展其功能,一般指设备通过嵌入式模块而非PC系统直接接入Internet,以Internet为介质实现信息交互的过程,通常又称为非PC接入。   嵌入式系统利用网络接口控制芯片实现与网络的通信功能,成本低,控制方便可靠,满足系统对通信的要求。考虑到本身的特点,在大量工业领域中应用嵌入式设备功能比
[嵌入式]
Intersil推出高集成度的3232视频交叉点开关
Intersil公司宣布推出32×32视频矩阵开关——ISL59532。该器件是新型开关,集成了4个常用的单独的16×16交叉点开关,组成一个32×32开关矩阵(或两个32×16开关)。为了进一步节省空间和降低成本,ISL59532在每个输入端集成了一个直流恢复箝位电路。每个输出有一个快速OSD(同屏显示)开关,不需要在器件周围附加外围器件。该器件是安全视频,视频交换机和路由器,KVM(键盘、显示器、鼠标),广播视频和其他视频应用的理想选择。 ISL59532是32×16和16×16系列矩阵开关中的首个产品。所有开关都具有单端输入和差分输入两个类型,使用相同的引脚,很容易进行尺寸大小设计。根据ISL59532的这些特点,也很容易
[新品]
ST 推出针对内置以太网接口的基于STR9 ARM966E内核的微控制器的超低成本开发工具
价值49美元的U盘式开发工具让联网嵌入式系统的开发变得更容易 中国,2007年5月23日 — 全球微控制器的领导厂商意法半导体(纽约证券交易所:STM)今天针对其功能强大的STR91x系列32位微控制器推出一个功能完整且价格极低的评估及开发工具。STR91x系列微控制器芯片基于ARM966E 内核,特别适合联网的嵌入式应用。新工具STR9-comStick被设计成一个带USB接口的U盘形状,所以可以直接插入一台PC机的主机内,厂家建议零售价仅为49美元,该工具还配有一套完整的Hitex软件工具。 STR91x是一系列通用闪存微控制器产品,以ARM9E处理器为内核,内置大容量的静态RAM和闪存,并配备10/100-Mbit以太网
[新品]
基于FPGA和DSP的机载高清视频图像系统
引言 无人机广泛应用于军事侦察以及民用测绘等领域,其中的机载视频图像系统是机载电子系统中的重要环节之一。无人机在高空飞行中对地面景物摄像,所得图像帧内目标像素小且目标数量大,这要求增大图像分辨率以提高目标物体的辨识度。此时数据量随之显着增加,与有限的无线带宽资源成为矛盾,故要求应用高效的视频编解码技术。在侦察等特殊应用领域要求视频传输的实时性,此时需要保证实时的视频编解码以及较小的图像延迟。在需多路视频传输且总数据率固定的情况下,可通过降低单路视频分辨率或提高单路压缩比来实现,故系统应可动态切换分辨率和压缩比,具备较大的灵活性。无人机与地面的通信中,除了要回传视频数据以外,还要向地面传输飞行器本身的下行遥测数据,若采用两个独立信道
[电源管理]
索尼新机不支持Type-C接口 相机更重要
     谷歌在最新的Android M系统中,首次加入了对Type-C接口的支持,这也意味着未来会有越来越多的智能手机使用这种接口。然而在短期内我们可能还看不到索尼有新机会应用Type-C。 索尼新机或不支持Type-C接口     据国外媒体报道称,索尼在现阶段更加注重其自家智能手机在相机拍照功能以及屏幕显示方面的提升,并且对于崇尚超薄机身的索尼来说,应用Type-C接口并不会在这方面产生革命性的影响。   不过各手机厂商之间竞争十分激烈,Type-C这种更为先进的接口可能在短时间内就会普及开来,目前为止,国内的乐视超级手机便已经采用了这项技术。索尼虽然在现阶段并未表示对Type-C的兴趣,但是在将来Xperia系列
[手机便携]
MAX3222E具备ESD保护的通信接口芯片
 MAX3222E/MAX3232E/MAX3237E/MAX3241E/MAX3246E为+3.0V供电的EIA/TIA-232和V.28/V.24通信接口芯片,具有低功耗、高数据速率、增强型ESD保护等特性。增强型ESD结构为所有发送器输出和接收器输入提供保护,可承受±15kV IEC 1000-4-2气隙放电、±8kV IEC 1000-4-2接触放电(MAX3246E为±9kV)和±15kV人体放电模式。MAX3237E的逻辑引脚及接收器I/O引脚均提供上述保护,而它的发送器输出引脚提供±15kV人体放电模式的保护。   采用专有的低压差发送输出级,+3.0V至+5.5V供电时利用内部双电荷泵提供真正的RS-232性能。工作
[单片机]
MAX3222E具备ESD保护的通信<font color='red'>接口</font>芯片
同步图形存储器IS42G32256的原理与应用
    摘 要: IS42G32256是高速度16M bit  CMOS同步图形存储器(SGRAM),适用于高性能计算机的显示卡、图形工作站、电视机顶盒、游戏卡、二维/三维图形处理等场合。对其功能、特点、工作原理及其应用进行了介绍。    关键词: SGRAM CMOS IS42G32256 图形处理    半导体存储器是计算机系统的重要组成部分,随着计算机技术的迅速发展,CPU的速度越来越高,以往采用的普通动态存储器(DRAM)速度低,带宽窄,已无法适应高速CPU。为了适应各种实际应用的需要,出现了采用新技术的DRAM。其中同步DRAM(SDRAM)的出现,大大地提高了存储器的速度,改善了其性能。在高性能计算机系
[缓冲存储]
小广播
最新手机便携文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved