新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > CCD信号采集系统的USB接口设计

CCD信号采集系统的USB接口设计

作者:时间:2011-04-07来源:网络收藏

(ChargeCoupledDevices)电荷耦合器件是20世纪70年代初发展起来的新型半导体集成光电器件。由于器件具有诸多优点:灵敏度高、光谱响应宽、动态范围大、空间自扫描等,使得近30年来,器件及其应用技术的研究取得了惊人的进展,特别是在图像传感和非接触测量领域的发展更为迅速。目前,CCD应用技术已成为集光学、电子学、精密机械及微计算机为一体的综合性技术,在现代光子学、光电检测技术和现代测量技术中成果累累。随着CCD技术的迅猛发展,针对CCD之后的如何与计算机进行信息通信就成为CCD应用的一个重要问题,而能够针对CCD每一个象素进行高速并实时的传输给计算机处理,将会大大的提高采集到的CCD的精度并解决实时处理的问题,这在CCD信号采集和处理领域都将有非常广阔的前景。

本文引用地址:http://www.eepw.com.cn/article/150883.htm

通用串行总线(UniversalSerialBus)是1995年由康柏、微软、IBM,DEC等公司为解决传统总线不足而推广的一种新型的通信标准。总线具有较高的数据传输率、使用灵活、易扩展等优点,非常适合CCD的数据采集。他有低速、全速和高速三种工作方式,即l.1版本中.的低速模式和全速模式,低速模式的传输速率为1.5Mb/s,支持一些不需要很大数据吞吐量和很高实时性的设备,如鼠标、键盘等;全速模式的传输速率可以达到12Mb/s。,可以外接速率更高的外设,适合用于线阵CCD的数据采集。在USB 2.0版本中,增加了一种高速模式,其数据传输率最高可以达到480Mb/s,完全可以满足高速CCD数据采集的需要。

2 硬件组成

选用高速的AD(模数)转换器,用于采集CCD信号,配以先进先出(FIFO)存储器作为数据高速缓冲器,用于存储AD转换后的数据,并采用具有微控制器的USB芯片,从而通过USB接口将采集到的数据输入计算机。原理框图如图1所示。

其中使用CPLD技术完成本采集系统的控制模块。CPLD(可编程逻辑器件)技术已经成为当今数字电路最为流行的方式,他可以将数字电路集成到一块芯片上,大大减小了电路板的体积和可靠性,而且他的可编程性使得好的电路在升级和修改上变得非常简单和方便。

USB控制芯片选用Cypress公司EZ-USB系列的AN2131QC,片内嵌有一个增强型的8051微控制器,并使用片内RAM作程序和数据存储器,使得芯片具有软特性,允许客户随时不断地设置和升级。内部框图如图2所示。

EZ-USBAN2131QC符合USB规范1.1版本,有4种传输方式:控制传输、中断传输、批量传输和同步传输。其中同步传输又有2种方式,即普通读写方式和快速读写方式。在本系统中采用的是快速读写方式,使得芯片可以在0.5 ms内读写1 kB的数据。

3 软件

软件主要分为3部分:USB芯片的固件程序、USB设备驱动程序以及主机的用户应用程序。固件响应各种来自系统的USB标准请求,完成各种数据的交换工作和事件处理。USB-驱动程序为USB采集系统提供了应用软件与USB设备的接口,他的开发使USB广泛应用于数据采集系统成为可能。而应用软件则实现用户与采集系统的交互,完成数据采集命令,进行实时显示。

3.1 固件程序代码

由USB芯片集成的加强型8051单片机来处理,当EZ-USB设备连接到USB口时,主机进行总线枚举,根据设备ID先使用系统程序将固件下载到芯片内部,然后进行重枚举,固件作为用户的功能设备开始执行。

Cypress公司提供固件程序框架,来完成控制传输和大部分的数据传输工作。本采集系统的固件程序就是基于此固件框架开发的,使用KeilC进行编译。程序流程图如图3所示。

图3中:TD_Init()为初始化全局变量;TD_Poll()为用户功能;TD_Suspend()为响应挂起事件;TD_Resume()为响应外部唤醒事件。

EZ-USB使用8051的INT2来响应21种USB中断,自动矢量(Autovector)机制帮助使8051内核进入相应的ISR(Interrupt Service Routine中断服务例程)。在初始化函数中加入使能EZ-USB的SOF(帧起始)中断语句,可以开始同步传输。每1 ms开始发生SOF中断,标志帧的开始。在SOFISR中从外部FIFO读取一个包长度的字节数据到端点缓冲区中。

3.2 驱动程序设计

USB客户驱动程序是支持即插即用功能的标准WDM(Windows Driver Model)驱动程序,这是分层的驱动程序模型,即设备驱动被分成了若干层,典型地分成:高层驱动程序、中间层驱动程序、底层驱动程序。每层驱动再把I/O请求划分成更简单的请求,以传给更下层的驱动执行。最底层的驱动程序在收到I/O请求后,通过硬件抽象层,与硬件发生作用,从而完成I/O请求工作。在这样的架构下,上面的驱动层就不需要对每个操作系统都要开发一遍了。USB客户驱动程序接收I/O管理器发来的IRP(I/ORequestPacket),构造URB(USBRequest Block)传递给主控制驱动程序接口USBDI。在USBDI的基础上进行编程将大大简化,用户不用关心IRP的类型,而只需要在相应的分发例程中通过构造URB(USBRequestBlock)并将其通过USBDI发送下去就可以实现对USB设备的控制了。

开发USB设备驱动程序的工具目前广泛应用的主要有2类:


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭