USB接口的高速数据采集卡的设计与实现

发布者:自由思想最新更新时间:2006-12-26 来源: 电子技术应用关键字:测量  主机  传送  中断 手机看文章 扫描二维码
随时随地手机看文章
现代工业生产和科学研究对数据采集的要求日益提高,在瞬态信号测量、图像处理等一些高速、高精度的测量中,需要进行高速数据采集。现在通用的高速数据采集卡一般多是PCI卡或ISA卡,存在以下缺点:安装麻烦;价格昂贵;受计算机插槽数量、地址、中断资源限制,可扩展性差;在一些电磁干扰性强的测试现场,无法专门对其做电磁屏蔽,导致采集的数据失真。

通用串行总线USB是1995年康柏、微软、IBM、DEC等公司为解决传统总线不足而推广的一种新型的通信标准。该总线接口具有安装方便、高带宽、易于扩展等优点,已逐渐成为现代数据传输的发展趋势。基于USB的高速数据采集卡充分利用USB总线的上述优点,有效解决了传统高速数据采集卡的缺陷。

1 USB数据采集卡原理

1.1 USB简介

通用串行总线适用于净USB外围设备连接到主机上,通过PCI总线与PC内部的系统总线连接,实现数据传送。同时USB又是一种通信协议,支持主系统与其外设之间的数据传送。USB器件支持热插拔,可以即插即用。USB1.1支持两种传输速度,既低速1.5Mbps和高速12Mbps,在USB2.0中其速度提高到480Mbps。USB具有四种传输方式,既控制方式(Control mode)、中断传输方式(Interrupt mode)、批量传输方式(Bulk mode)和等时传输方式(Iochronous mode)。

考虑到USB传输速度较高,如果用只实现USB接口的芯片外加普通控制器(如8051),其处理速度就会很慢而达不到USB传输的要求;如果采用高速微处理器(如DSP),虽然满足了USB传输速率,但成本较高。所以选择了TI公司内置USB接口的微控制器芯片TUSB3210,开发了具有USB接口的高速数据采集卡。

1.2 系统原理图

系统原理图如图1所示。


整个系统以TUSB3210为核心,负责启动A/D转换,控制FIFO的读写及采样频率的设定,与主机之间的通信及数据传输。

2 USB数据采集卡硬件

2.1 TUSB3210芯片

TUSB3210是TI公司推出的内嵌8052内核并带有USB接口的微控制器芯片。TUSB3210有256字节的内部RAM,8K字节的程序RAM,512字节的USB数据缓冲和端点描述块EDB(Endpoint Descriptor Blocks),4个通用的GPIO端口P0、P1、P2、P3,I2C接口电路,看门狗电路等。

TUSB3210的USB接口符合USB1.1协议,有4个输入端点(Input Endpoint)和4个输出端点(Output End-Point),支持全速和低速传输速率,并具有USB协议所规定的4种传输方式。TUSB3210的USB接口采用串行接口引擎(SIE)编码和解码串行数据,并且进行校验、位填充,执行USB所需要的其他信号。这样采用硬件完成USB协议,简化了固件代码的编制。

TUSB3210采用基于内部RAM的解决方案,允许通过I2C总线从串行EEPROM中读入固件或从主机中下载固件程序。这项功能便于设备的开发与在线升级。

2.2 A/D芯片MAX1449

MAX1449是MAXIM公司生产的10位、105MSPS、单3.3V电源、低功耗的高速A/D芯片。它采用差分输入,带有高宽带采样/保持(T/H)的10阶段流水线(pipeline)型结构的ADC,如图2。采样信号每半个时钟周期通过一个流水线段,完成连续转换到数据输出共需5.5个时钟周期。每个流水线首先通过一个1.5位的闪速ADC对输入电压量化,由DAC产生一个对应于量化结果的电压并与输入电压作差,输出电压放大2倍后送到下一级流水线处理。每级流水线提供1位的分辨率,并进行差错校正,得到良好的线性和低失调。


MAX1449提供一个2.048V的精确带隙基准源,用来设定ADC满量程范围,也可以用外部基准源改变量程范围。MAX1449的最大差分输入电压范围为2V。

2.3 输入信号处理电路

MAX1449芯片的输入信号为差分输入时有最佳的采样效果。在本系统中用TI的HTS4503作为单端输入到差分输出的转换电路。THS4503高性能的全差分运放,带宽可达270MHz,具有非常好的线性,在100MHz下可支持11位的A/D转换要求,适合作为A/D变换的前端接口电路。具体电路见图3所示。

2.4 FIFO和时钟发生电路

高速A/D变换的数据不能直接通过USB送入主机,系统中通过FIFO来缓冲数据。本系统采用TI公司SN74V293芯片。它的容量为65536×18或131072×9,最快读写周期为6ns,可以满足100MHz采样数据的存储。用户可以选择输入、输出宽度,当选择输入、输出宽度为18时,可存储64K×10位的数据。如果选择输入、输出为9位,则可使存储容量扩大到128×9位,这样对精度要求不高的用户可以获得更多数据。

SN74V293有独立的读写时钟控制电路,允许读写操作同时进行。SN74V293内部有满、空、半满输出信号以及可编程设定的几乎满和几乎空输出信号,通过这些信号控制器可以灵活控制FIFO的读写操作。

对于高速数据采集系统,时钟信号很重要。在本系统中选用DALLAS公司的DS1073时钟芯片。DS1073是无需外部元件的频率振荡器。通过DALLAS独有的1-wire技术,可以设定内部的分频器数值,实现输出频率从27.3kHz~100MHz可调,从而方便地改变采样时钟,简化电路设计。MAX1449数据输出时下降沿有效,而FIFO写入时上升沿锁存数据。系统中采用DS90LC028A实现对时钟信号的取反。


  2.5 PCB板制作

由于是高速A/D采集,在制作PCB板时有一些需要注意的地方。电路板最好使用多层板,元件尽量选用表面封装器件。这样可以减小元器件之间的距离,减小寄生电感、寄生电容,同时减小电路板的尺寸。所有的旁路电容都要尽量靠近芯片的电源管脚。模拟公共地和数字公共地要分开,选一点通过低值表贴电阻(1~5Ω)、磁珠或直接连接,以免数字地电流干扰模拟地。电源最好用线性稳压电源,A/D和前端处理电路要用同一电源地输出,减小电源波动对采集的影响。

3 USB高速数据采集卡的软件

开发一个USB设备,软件设计是必不可少的。USB应用系统软件设计分为三部分:USB外设端的固件(Firmware)、主机操作系统上的客户驱动程序以及主机应用软件。主机应用软件通过客户驱动程序与系统USBI(USB Device Interface)进行通信,由系统产生USB数据的传送动作;固件则响应各种来自系统的USB标准请求,完成各种数据的交换工作和事件处理。

3.1 USB接口编程

固件程序主要是实现USB通信。TUSB3210采用SIE来管理USB通信。当主机与芯片进行USB通信时,会产生外部中断0,通过中断矢量寄存器判断。Setup_packed_Int、Input_endpoint0_Int、Output_endpoint0_Int这三个中断主要用于与主机建立连接、进行控制传输或中断传输;Input_endpoint1_Int、Output_endpoint1_Int这两个中断主要在批量传输时使用。在固件中分别执行不同的中断程序来实现USB的数据传输。

Void EX0_int(void) interrupt 0 //外部中断0

{

EA=DISABLE; //关中断

switch (bBECINT)(//确定中断ID

case VECINT_OUTPUT_ENDPOINT0:

bVECFINT=0x00;

Ep0QutputInterruptHandler();

break;

case VECINT_INPUT_ENDPOINT0:

bBECINT=0x00;

Ep0InputInterruptHandler();

break;

case VECINT_OUTPUT_ENDPOINT1:

bVECINT=0x00;

Ep 1 OutputInterruptHandler();

Break;

case VECINT_INPUT_ENDPOINT1:

bVECINT=0x00;

Ep1InputInterruptHandler();

break;

case VECINT_SETUP_PACKET_RECEIVED:

SetupPacketInterruptHandler();

bUSBSTA=USBSTA_SETUP;

bVECINT=0x00;

break;

default:break; //不知道中断ID

EA=ENABLE; //开中断

}

3.2 主机软件设计

笔者首先开发TUSB3210在主机中的驱动程序。用WinDK3.0开发了Win2000下的驱动程序,实现了控制传输、中断传输和批传输的标准接口函数。

在应用程序开发中,可用VC++编制应用程序。可以把USB设备当成文件来操作,利用CreateFile得到USB句柄,用DeviceIoControl来进行控制传输,用ReadFile、WriteFile进行批量传输。程序实例如下:

HANDLE m_hUsbSample; //USB句柄

m_hUsbSample=CreateFile(\.USBSampl0,GENERIC_READ|

GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULI,OPEN_EXISTING,0,NULL); //打开USB句柄

DeviceIoControl(m_hUsbSample,IOCTL_USBSAMPL_REBOOT, NULL,0,NULL,0,&length,NULL); //控制传输

WriteFile(m_hUsbSample,pBuffer,writelength,&writelength,NULL); //批量输出传输

ReadFile(m_hUsbSample,pBuffer,64,&lgngth,NULL); //批量输入传输

CloseHandle(m_hUsbSample); //关闭USB句柄

使用上述函数编制USB高速数据采集卡的主机软件。

通过以上设计实现了基于USB数据采集卡的基本功能。但还有一些如信号的触发、事件的捕获功能还需完善;需开发基于USB2.0的系统,进一步提高数据传输的速率。

关键字:测量  主机  传送  中断 引用地址:USB接口的高速数据采集卡的设计与实现

上一篇:RS-232串行通信消除干扰噪声的设计方法分析
下一篇:基于SAA7111A的模拟视频转换接口设计

推荐阅读最新更新时间:2024-05-13 18:16

高通选用罗德与施瓦茨的测试系统以测量5G射频收发机
罗德与施瓦茨公司将为高通SDR051系列5G射频收发机芯片的工程样片测试提供测试系统。 高通技术有限公司宣布选择罗德与施瓦茨,为其5G射频收发机SDR051的测试搭建平台。基于罗德与施瓦茨仪器的优异性能和强力的技术支持,高通做出以上决定。 高通在2016年10月发布了Snapdragon™ X50 5G调制解调器平台,该平台初期会支持28GHz毫米波频段,设计传输载速率为5 Gbps。预计在今年下半年开始提供X50的工程样片,在此之前,需要对该芯片进行完成的测试和性能验证。 优秀的技术参数,良好的演示效果,以及面向生产环境的稳定性和可靠性,促使高通选择R&S TS7830测试系统作为其新产品的生产测试方案。该系统主要由R&S
[测试测量]
如何测量由于电源噪声和纹波引起的抖动
低电平组件需要超稳定的电源,而高速数字信号则需要具有可重复的边沿转换时间。数字信号的两个方面是相关的,您需要抑制电源噪声的所有方面以减少数字系统中的抖动。在设计调试期间,如果要隔离和消除电源噪声源,则需要在整个电路板上收集测量结果。这是您如何隔离直流线上会引起抖动的确定性强噪声源的方法。 电源噪声和抖动源 如果您曾经覆盖过数字信号的时域轨迹,那么您就对抖动很熟悉。该术语(有时与相位噪声互换使用)是指数字信号的边沿触发和通过逻辑电路的传播延迟中的波动。抖动与电源噪声密切相关,在电源噪声中,直流电源电平的波动会导致数字信号延迟触发或延迟触发。下表显示了一般半导体器件和PCB中电源噪声的主要来源。 噪声源 噪声类型 描述 开关
[测试测量]
如何<font color='red'>测量</font>由于电源噪声和纹波引起的抖动
汽修示波器测量汽车凸轮轴位置传感器信号
凸轮轴位置传感器,又称为凸轮轴转角传感器、相位传感器、气缸识别传感器,有的车上还称为1缸上止点传感器。现代汽车最常出现的名称还是凸轮轴位置传感器。 凸轮轴位置传感器的作用主要是检测凸轮轴位置和转角,从而确定第1缸活塞的压缩上止点位置。在启动时,发动机ECU根据凸轮轴位置传感器和曲轴位置传感器提供的信号,识别出各个气缸活塞的位置和冲程,控制燃油喷射顺序和点火顺序,进行准确的喷油和点火控制。 凸轮轴位置传感器常见的可以分为霍尔式、感应式、交流励磁式。 下面我们以示波器测量霍尔式的凸轮轴位置传感器信号举例。 首先给示波器的通道一接上一根BNC转香蕉头线,然后给黑色香蕉头接入一个鳄鱼夹,夹在蓄电池的负极接地,给红色香蕉头接
[测试测量]
汽修示波器<font color='red'>测量</font>汽车凸轮轴位置传感器信号
蔡司测量系统:精度更高,动力更强
作为一家为航空航天工业,以及为石油、天然气和航运业提供涡轮机和压气机叶片的领先制造商之一,Pietro Rosa公司在关键部件得到高性能应用方面颇有心得。从钢、镍到钛,材料仅仅起着从属的作用,意大利人对其组合有着深思熟虑的计划。Pietro Rosa制造的零部件的大小千差万别,所加工的叶片规格小到仅仅35mm,大到 1.7 米。然而无论零部件大小,有一点是相同的:质量检验的重要程度与其复杂程度成正比。 “使用蔡司的测量系统使我们感到非常自豪,这个名字就意味着质量和精度。”Pietro Rosa公司维护和自动化经理Stefano Pradolin先生介绍说:“这些机器大大提高了我们的测量结果。” 外形和控制是一种挑战 在发电涡轮
[测试测量]
蔡司<font color='red'>测量</font>系统:精度更高,动力更强
3C2440A的中断控制器和定时器
看了开发板配套光盘中的非操作系统示例代码,试着进行简化,只留下最核心的启动代码,然后自己编写makefile进行编译,烧录到开发板中进行实验,总算成功了。第一个程序运行后只是简单地让4个LED轮流开启关闭,虽然没有看懂是怎么做到控制LED的,但看懂了系统启动部分,而且把有点乱的代码整理得整齐了些;第二个程序运行后可以从串口输出文本,这对以后的进一步学习很重要,因为串口输出是很重要的调试手段(从显示屏输出文本太复杂,不是初学者可以容易搞定的)。此外,看了《基于ARM的嵌入式系统开发与实例》,虽然第4章,第5章看得很晕,因为存储器控制器比较复杂,书中讲了好多硬件连接以及操作时序的问题,以前完全没接触过,基础不够,看不懂。但第6章和第7章
[单片机]
用高准确度 60V 电量计进行电量测量
随着时间流逝,我们对每种设备的准确度水平也有点熟悉了,而且知道对设备报告的数字信赖到什么程度,例如剩余 10% 电量。在较大功率的多节电池应用中,如果用户发现没有充足的电量,情形可能更加紧急,例如使用电动自行车、电池备份系统、电动工具或医疗设备等情况。 引言 我们很多人都会用到电池供电设备,这类设备会显示当前还有多少电量或运行时间,特别是因为,我们被家里的众多小器具所包围。从电动刮胡刀到平板电脑,我们依靠各种各样的电池电量指示器,帮助确定是否以及怎样继续使用这些设备。随着时间流逝,我们对每种设备的准确度水平也有点熟悉了,而且知道对设备报告的数字信赖到什么程度,例如剩余 10% 电量。在较大功率的多节电池应用中,如果用户
[测试测量]
用高准确度 60V 电量计进行电量<font color='red'>测量</font>
C51教程 第四个51程序:中断控制--外部中断0
内部资源之外部中断 中断类型 中断入口地址 中断序号 外部中断0(INT0)P3.2 0003H 0 外部中断1(INT1)P3.3 0013H 2 定时计数器0(T0) 16bit 000BH 1 定时计数器1(T1) 001BH 3 定时计数器2(T2) 002BH 5 异步串行通信口(UART) 0023H 4 CPU外围模块的掌握方法: (1)相关口线 (2)相关控制字 (3)模块的工作方式 一、外部中断 (1)相关口线 P3.2:int0,外部
[单片机]
C51教程 第四个51程序:<font color='red'>中断</font>控制--外部<font color='red'>中断</font>0
一种新型的转子旋转速度大小及方向的测量装置
目前现有技术中比较先进的转子速度测量装置主要是利用转子的旋转带动测量装置内的转盘转动,再对转盘进行光电的或电磁的测量,将转盘的转速信号转换为电信号,然后再通过后续处理电路(或二次仪表)进行处理,输出转子速度的大小及方向。由于进行转速测量时,测速装置的转盘要与转子直接接触,毫几无疑问对转子本身的旋转会有影响,并且采用该方法进行检测时,安装结构也比较复杂。近年来,随着光电子技术的发展,也出现了一些与待测转子非接触的转子速度测量装置,主要是在转子的径向方位上进行检测,这类测速方法通常一个测速 传感器 只能够用来测量转子的速度大小,而不能判断转子的旋转方向。 实际工业测量中,特别是航空、航天等一些特殊场合,既要检测转子的速度大小,又
[传感器]
一种新型的转子旋转速度大小及方向的<font color='red'>测量</font>装置
小广播
最新应用文章
换一换 更多 相关热搜器件

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved