基于USB接口的数据采集系统设计(精选6篇)由网友“西西弗之梦”投稿提供,以下是小编为大家准备了基于USB接口的数据采集系统设计,欢迎参阅。
篇1:基于USB接口的数据采集系统设计
摘要:以自行开发的基于USB接口的数据采集系统为例,介绍了USB接口的硬件和软件开发过程。
关键词:USB数据采集 PDIUSBD12
1USB协议和芯片选择
理解好USB协议是USB系统开发的第一步。USB协议版本包括1.0、1.1和2.0,USBOTG是对2.0版本协议的补充。虽然USB协议内容繁多且复杂,然而,对USB开发影响较大的却只是少数部分,以下对协议版本1.1[1]中这些部分进行介绍。
1.1USB协议
一般,每个USB设备由一个或多个配置(Configuration)控制其行为。使用多配置原因是对操作系统的支持;一个配置由接口(Interface)组成;接口则是由管道(Pipe)组成;管道与USB设备的端点(Endpoint)对应,一个端点可以配置为输入输出两个管道。在固件编程中,USB设备、配置、接口和管道都用描述符报告其属性。
图1为USB多层次通信模型。端点0默认配置为控制管道,用来完成所规定的设备请求(USB协议第九章)。其它端点可配置为数据管道。对开发而言,主要的大数据传输都是通过数据管道完成的[2]。
USB传输类型包括批量传输、等时传输、中断传输和控制传输,每种传输类型的传输速度、可靠性以及应用范围都不同[3]。控制传输可靠性是最高的,但速度最慢;等时传输速度快,满足实时性,但可靠性低。在具体应用中,端点传输类型可根据传输速度和可靠性选择。
在USB通信协议中,主机取得绝对主动权利,设备只能是“听命令行事”,通过一定的命令格式(设备请求)完成通信。USB设备请求包括标准请求、厂商请求和设备类请求。设备的枚举是标准请求命令完成的;厂商请求是用户定义的请求;设备类请求是特定的USB设备类发出的请求,例如海量储存类、打印机类和HID(人机接口)类。固件编程中设备请求必须遵循一定的格式,包括请求类型、设备请求、值、索引和长度。
1.2USB接口芯片选择
USB接口芯片的类型有:
(1)按传输速度的高低:低速(1.5Mbps)和全速(12Mbps)可选USB1.1接口芯片,例如Philips公司的PDIUSBD12和Cypress公司的EZ-USB2100系列;高速(480Mbps)可选USB2.0接口芯片,例如Philips公司的ISP1581和Cypress公司的CY7C68013。
(2)是否带MCU(微控制器):一般Philips公司的都不带MCU,Cypress公司大多都带,例如AN2131。
(3)是否带主控器功能:不需要主机参与,主从设备间可进行数据传输,芯片有Philips公司的ISP1301和Cypress公司的SL811HS等。
还有专门用途USB芯片,例如闪存专用芯片IC1114。工程中用户可根据自己的需求选择一款性价比高的芯片。另外可用开发资源也是要考虑的重要方面,例如开发板和芯片厂商提供的网上资源,可大大降低开发的难度。
篇2:基于USB接口的数据采集系统设计
2.1系统简介
该系统能够实现16路温度数据自动采集,系统的组成框图如图2所示。主要包括8个组成部分:中央处理器选用AT89C52芯片,完成各部分控制功能和USB传输协议;实时时钟记录当前测量温度的时间;温度传感器和接口电路主要完成温度采集,并读入MCU处理;复位电路完成对MCU的上电复位和电源电压监视;看门狗电路用来监视MCU是否工作;存储电路主要存储采集到的温度数据以及采集的实时时间;电源电路主要为各部分提供要求的电源;外设与主机间的通信电路采用USB接口。
2.2接口芯片选择
接口电路采用Philips公司的PDIUSBD12[4](以下简称为D12)芯片。主要因为D12芯片信息、开发资源丰富,具有较高的性价比。
D12芯片的主要特点包括:
・符合USB1.1版本规范;
・可与任何外部微控制器/微处理器实现高速并行接口(2MB/s);
・采用GoodLink技术的连接指示器,在通信时使LED闪烁;
・主端点的双缓冲配置增加了数据吞吐量并轻松实现实时数据传输;
・在批量和等时模式下均可实现1MB/s的数据传输率;
・完全自治的直接内存存取DMA操作。
2.3接口硬件设计
由D12接口组成的`通信电路原理如图3所示。关于D12的各引脚说明见参考文献[4]。多路地址/数据总线ALE接单片机的ALE脚,这样使用MOVX指令可以与D12接口,对D12操作就象对RAM操作一样,此时忽略A0(命令口和数据口地址线)的输入。因为没有使用DMA传输方式,所以没有用到DMACK_N、EOT_N和DMREQ_NDMA引脚。INT_N是USB中断请求脚,发出USB中断请求;GL_N是GoodLink指示灯,在调试过程中非常有用,在通信时会不停闪烁。如果一直亮或者一直暗,表示USB接口有问题,如果D12挂起,则LED关闭。CLKOUT是D12的时钟输出,可以通过固件编程改变其频率,在调试固件时,可作为参考。
2.4接口程序设计
USB接口程序设计是USB开发的核心。USB接口程序设计包括三部分:单片机程序开发、USB设备驱动程序开发、主机应用程序开发。三者互相配合,才能完成可靠、快速的数据传输。
2.4.1单片机程序设计
单片机程序(又称固件)采用模块化程序设计,主要模块包括:数据采集模块、数据处理、监控模块和数据通信模块。模块化设计的优点是可靠性高、可读性好、升级简单。
通信模块固件结构如图4所示。主循环和中断服务程序之间的数据交换可通过事件标志和数据缓冲实现。图3中USB中断引脚INT_N发出中断请求,中断服务程序根据中断请求类型操作,设置事件和填充数据缓冲区再传输给主循环;标准设备请求程序是对标准请求进行处理;用户可以根据实际需要编写厂商请求,例如发出启动或停止数据采集命令。
图3USB接口连接示意图
2.4.2驱动程序设计
驱动开发工具有DDK和第三方开发工具。其中DDK开发难度最大,第三方开发工具有DriverStudio和Windriver等。DriverStudio难度适中,而Windriver则属于应用层驱动开发,难度小,但效率低,并存在发布问题。
DDK驱动程序开发工作包括:开发环境设置(VC编译环境)[5]、驱动程序设计[6]、安装文件(INF文件)设计。
驱动程序设计采用WDM(WindowsDriveMode)。WDM设备驱动程序提供了一个参考框架,大大降低了由DDK书写驱动程序带来的难度。
D12驱动使用的例程包括:DriverEntry、AddDevice、DispatchPnp、DispatchRead、DispatchWrite和DispatchDeviceControl例程,以下是D12的WDM驱动程序函数:
DriverObject->MajorFunction[IRP_MJ_CREATE]=D12_Create;
DriverObject->MajorFunction[IRP_MJ_CLOSE]=D12_Close;
DriverObject->DriverUnload=D12_Unload;
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL;
=D12_ProcessIOCTL;
DriverObject->MajorFunction[IRP_MJ_WRITE]=D12_Write;
DriverObject->MajorFunction[IRP_MJ_READ]=D12_Read;
DriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL;
DriverObject->MajorFunction[IRP_MJ_PNP]=D12_Dispatch;
DriverObject->MajorFunction[IRP_MJ_POWER]=D12_Process-PowerIrp;
DriverObject->DriverExtension->AddDevice=D12_PnPAddDevice;
驱动程序与应用程序和硬件之间通信都是IRP(I/O请求包)完成的。IRP_MJ_PNP主要是实现USB即插即用,例如设备的添加、删除和资源的分配;IRP_MJ_POWER实现电源管理,例如设备的挂起和唤醒;IRP_MJ_CREATE(创建)、IRP_MJ_CLOSE(关闭)、IRP_MJ_
DEVICE_CONTROL(设备控制)、IRP_MJ_WRITE(读)和IRP_MJ_READ?穴写?雪是主要完成数据通信的函数,实现管道的创建、关闭
和数据读写。其中设备控制具有输入输出缓冲区,可实现读和写功能;AddDevice和DriverUnload实现设备管理,在设备添加和卸载时,创建和删除设备,以及管理资源分配。
驱动程序通过安装文件(.inf文件)中PID(产品识别号)和VID(厂商识别号)识别USB设备。
2.4.3应用程序设计
主机应用程序的编写使用VC编译环境中的API函数实现。
应用程序的编程方法与串口编程类似。首先必须查找设备,打开设备的句柄;然后进行读写和控制操作;最后是关闭设备句柄。为了提高效率,可使用多线程技术实现读写。
应用程序通过GUID(注册表驱动唯一识别号)查找驱动程序。
2.5调试
首先是固件调试,可用仿真机完成,驱动开发工具Windriver也是很好的固件调试工具,例如测试标准请求、厂商请求和管道读写。其次是驱动调试,这是USB接口开发最困难的部分,调试工具可用DriverStudio中Softice工具和文献[6]中DebugPrint跟踪工具,监视工具BusHound可监视USB的实际数据传输情况。需要注意的是,驱动调试必须在应用程序正确调用的前提下。
2.6USB传输速度
主机每过1ms发出一个SOF(起始帧),四种USB传输类型都分布在1ms的帧内。所以为了提高传输速度,可加大端点缓冲区的大小和使用双缓冲(有些芯片还有四缓冲),在1ms内尽量多传输数据;采用DMA传输方式,USB设备不通过微控制器直接完成数据传输,当然相应硬件和软件开发的难度增加;如果单片机数据加载速度较慢,则可考虑使用高速指令的单片机;如果速度要求在1MB/s以上,则考虑采用USB2.0接口芯片。
本文以USB接口程序在16路温度采集系统中的应用为例,介绍了USB的接口标准和程序设计。该系统经过一段时间运行,稳定可靠,目前已广泛应用于航空电子设备的测温系统。
篇3:基于USB接口的数据采集系统设计
基于USB接口的数据采集系统设计
摘要:以自行开发的基于USB接口的数据采集系统为例,介绍了USB接口的硬件和软件开发过程。关键词:USB 数据采集 PDIUSBD12
1 USB协议和芯片选择
理解好USB协议是USB系统开发的第一步。USB协议版本包括1.0、1.1和2.0,USB OTG是对2.0版本协议的补充。虽然USB协议内容繁多且复杂,然而,对USB开发影响较大的却只是少数部分,以下对协议版本1.1[1]中这些部分进行介绍。
1.1 USB协议
一般,每个USB设备由一个或多个配置(Configuration)控制其行为。使用多配置原因是对操作系统的支持;一个配置由接口(Interface)组成;接口则是由管道(Pipe)组成;管道与USB设备的端点(Endpoint)对应,一个端点可以配置为输入输出两个管道。在固件编程中,USB设备、配置、接口和管道都用描述符报告其属性。
图1为USB多层次通信模型。端点0默认配置为控制管道,用来完成所规定的设备请求(USB协议第九章)。其它端点可配置为数据管道。对开发而言,主要的大数据传输都是通过数据管道完成的[2]。
USB传输类型包括批量传输、等时传输、中断传输和控制传输,每种传输类型的传输速度、可靠性以及应用范围都不同[3]。控制传输可靠性是最高的,但速度最慢;等时传输速度快,满足实时性,但可靠性低。在具体应用中,端点传输类型可根据传输速度和可靠性选择。
在USB通信协议中,主机取得绝对主动权利,设备只能是“听命令行事”,通过一定的命令格式(设备请求)完成通信。USB设备请求包括标准请求、厂商请求和设备类请求。设备的枚举是标准请求命令完成的;厂商请求是用户定义的请求;设备类请求是特定的.USB设备类发出的请求,例如海量储存类、打印机类和HID(人机接口)类。固件编程中设备请求必须遵循一定的格式,包括请求类型、设备请求、值、索引和长度。
1.2 USB接口芯片选择
USB接口芯片的类型有:
(1)按传输速度的高低:低速(1.5Mbps)和全速(12Mbps)可选USB1.1接口芯片,例如Philips公司的PDIUSBD12和Cypress公司的EZ-USB2100系列;高速(480Mbps)可选USB2.0接口芯片,例如Philips公司的ISP1581和Cypress公司的CY7C68013。
(2)是否带MCU(微控制器):一般Philips公司的都不带MCU,Cypress公司大多都带,例如AN2131。
(3)是否带主控器功能:不需要主机参与,主从设备间可进行数据传输,芯片有Philips公司的ISP1301和Cypress公司的SL811HS等。
还有专门用途USB芯片,
[1] [2] [3] [4]
篇4:基于USB接口的心电信号数据采集系统
摘要:介绍了基于USB接口的心电信号数据采集系统,给出了该系统的硬件组成原理及软件设计方法。由于该系统使用了高性能的USB专用芯片CY7C64613,因而具有使用方便、即插即用等特点。与笔记本电脑相连即可构成移动式心电信号检测分析仪器,具有较高的实用推广价值。
关键词:USB;心电;数据采集
1引言
心电信号是最广泛的临床检查项目之一。心电信号数据采集系统是心电信号检查的关键部件,它能在较强的噪声背景下,通过电极将0.05~100Hz的微弱心电信号检测出来,然后经放大、A/D转换后送入计算机进行处理。计算机的使用使得该系统在信号分析、储存、打印等方面比传统的心电图机具有明显的优势。但采集系统与计算机的通讯接口都存在插卡插拔麻烦,安全性差,且扩展槽数目有限等不足。为此?本文提出的基于USB接口的心电信号数据采集系统使用了目前最为先进的USB接口技术,能够支持即插即用和热插拔功能。这是其它非USB接口无法比拟的。同时也可以与笔记本电脑相连以构成移动式心电检测分析仪。
2系统的硬件组成
2.1系统组成
图1所示为基于USB接口的心电信号数据采集系统的组成框图。图中?电极传感器检测到的心电信号经输入保护电路进行电压限幅、高频滤波后,再进行前置放大,然后经光电隔离后,再次进行电压放大,最后经干扰抑制电路消除干扰后,在多路模拟开关的控制下将其中某一路信号接入A/D。CY7C64613是带智能USB接口的单片机,通过它可以把A/D转接后的数字信号经USB接口传输到计算机。
下面就数据采集系统的抗干扰措施、信号放大及USB通信等问题进行重点论述。
2.2系统抗干扰
作为医疗器械的心电信号数据采集系统,由于其检测对象是低频、微弱的心电信号,干扰较大,因此?系统的抗干扰能力及安全可靠性至关重要。针对这种情况,本系统采取了多方面措施。图2所示为输入保护电路和高频滤波电路。其中输入保护电路是在每个电极和地之间加入两个并联的硅二极管以进行电压限幅,从而限制输入电压不超过±600mv,确保病人和仪器的.安全。高频滤波电路用于阻止高频干扰信号进入数据采集系统。本设计使用以FX101芯片为核心的低通滤波器。滤波截止频率为:
fc=1/[2p(R1R2C1C2)1/2]
使用光电隔离电路和干扰抑制电路可进一步提高抗干扰能力。干扰抑制电路包括50Hz干扰抑制电路和肌电干扰抑制电路。前者用来滤掉50Hz工频干扰(这是心电信号的主要干扰源),它是一个无源RC双T网络。后者用来抑制电极与皮肤接触时引进的肌电信号,它是一个高载RC滤波器。
此外,还可采用软件滤波的方法。可通过在软件中设置50Hz干扰滤波和漂移滤波等程序来进一步提高系统的抗干扰能力。
2.3放大电路
放大电路也是设计重点之一。一般情况下,心电信号必须进行放大才能送往计算机进行处理。由于极化电压的影响,放大器的增益不能太高,因而本系统采用了前置放大电路和电压放大电路两级放大的方法。对前置放大电路的要求是:输入阻抗高、失调温漂小、共模抑制比高、输入噪声小。为此笔者选用了INA121芯片。INA121是TexasInstrumentsBB公司生产的低功耗仪器放大电路,性能优越,它的差模输入电阻为1012Ω,共模抑制比为106dB,输入失调电压为±200μv,输入失调温漂为±2μv/℃,输入噪声为20nV?Hz?1/2。前置放大电路的放大倍数设置为50。较小的前置放大倍数可以避免极化电压的影响。电压放大电路的放大倍数设置的较高(取为100倍),则可以保证总的放大倍数。
2.4USB专用芯片的选择
目前各个厂商推出的USB芯片类型众多,功能各异。本系统选用Cypress半导体公司推出的EZ-USBFX全速系列中的CY7C64613-128NC芯片。EZ-USBFX系列芯片是带智能USB接口的单片机,它以8051为核心。对于复杂与繁琐的USB通信,该器件可提供EZ-USB固件函数库与固件架构,从而可大幅度地降低编写固件程序代码的困难程度。CY7C64613支持USB协议1.1,同时可支持12Mbps的全速传输。此外,它还带有增强版的8051核心和4kB或8kB的RAM,端点数量为32个,可采用智能型的USB核心程序。
3软件设计
本系统的软件设计包括三部分:固件设计、驱动程序设计、应用程序设计。
篇5:基于USB接口的心电信号数据采集系统
划为人工接口设备HID群组。该HID群组原是针对键盘、鼠标等输入设备而设置与规划的。但是,对于需要以双向、适当的频率来进行数据交换的其它设备而言,也是一个非常好的设计范例与基础架构。因此,可以将这些设备规划为HID群组,只要它们符合HID规范中所定义的各种特性与条件,就可以执行HID设备的功能。在windows98与windows2000等操作系统中都已包含了HID群组的驱动程序,因此,用户开发新设备时,无须重新编写驱动程序。
3.1固件(Firmware)设计
由于EZ-USBFX系列已提供了固件架构(frameworks)。因此,可以利用这一架构来简化固件的开发。用户仅需提供其USB描述符以及实现外围功能的程序代码?在PERIPH.C文件中?,即可完成完全兼容的USB设备设置。此外,Cypress公司还提供了副函数钩子(functionhooks),利用该功能可以帮助用户进行固件的设计。
在程序开始执行后,固件架构会执行以下步骤:第一步,设置内部状态变量的起始值;第二步,调用用户的初始设置函数TD-Init;第三步,在1s间隔后重新设备列举(ReNumerate),直到收到SETUP封包为止;第四步,一旦SETUP封包被检测到,固件架构立即启动与其合作的工作分配器。
TD_Init可用来对用户设备(即数据采集系统)进行初始化,并重新寻址描述符表。其程序代码如下:
TD_Init();
pDeviceDscr=(WORD)&DeviceDscr;
pConfigDscr=(WORD)&ConfigDscr;
pStringDscr=(WORD)&StringDscr;
if((WORD)&DeviceDscr&0xe000)
pReportDscr=(WORD)&ReportDscr
{
IntDescrAddr=INTERNAL_DSCR_ADDR;
ExtDescrAddr=(WORD)&DeviceDscr;
DevDescrLen=(WORD)&UserDscr(WORD)&De-viceDscr+2;
for(i=0;i<DevDescrLen;i++)
*((BYTExdata*)IntDescrAddr+i)=0xCD;
for(i=0;i<DevDescrLen;i++)
*((BYTExdata*)IntDescrAddr+i)=*((BYTExdata*)ExtDescrAddr+i);?
pDeviceDscr=IntDescrAddr;
offset=(WORD)&DeviceDscr_INTERNAL_DSCR_ADDR;
pConfigDscr-=offset;
pStringDscr-=offset;
pReportDscr-=offset;
}
EZUSB_IRQ_ENABLE;
EZUSB_ENABLE_RSMIRQ();
.
3.2驱动程序设计
在Windows操作系统中,USB驱动程序是基于Win32DriverModel?WDM?的,它用阶层式驱动程序模式,每个驱动程序阶层负责处理一部分通信工作,具体框图如图3所示。设备驱动程序(含群组驱动程序)可与系统的总线驱动程序进行通信,总线驱动程序用来处理USB的硬件。用户应用程序并不直接与硬件打交道,而是使用Win32API调用函数对Win32子系统进行调用,同时给设备驱动程序发I/O请求包(IRP)。由于Windows操作系统中已包含了总线驱动程序和一些群组驱动程序,因此用户只需编写自己的用户设备驱动程序或选用Windows提供的群组驱动程序即可。
在Windows系统中,HIDDEV.INF文件中已提供有HID群组的驱动程序,可以直接引用。从而省去了编写繁琐的用户驱动程序的麻烦。
3.3应用程序设计
在应用程序中,需要设置与固件程序及驱动程序中相同的PID/VID码,才能在设备管理中找到对应的USB设备(数据采集系统
)。具体的设置程序代码如下:
ConstMyVendorID=&H1234
ConstMyProductID=&H5678
在Windows98驱动程序开发工具组(DDK)中,一般都具有用户模式(即应用程序阶层)HID通信部分的完整指导准则。用户通过调用API函数,可以找到与设备描述符内设置的VID/PID码相符合的HID设备(即数据采集系统)。有了API函数传回的设备路径名称,就能用GreateFile()函数打开设备的指示(handle),然后使用HID特定的API函数来读取VID/PID码,最后再使用ReadFile()与WriteFile()函数来准备交换数据。具体编程方法可参阅Windows98DDK。
4结论
基于USB接口的心电信号数据采集系统具有优越的性能。试验表明,其使用方便,性能稳定。尤其是它与笔记本电脑相结合可构成移动式心电信号检测分析仪,从而方便地应用于野外、救护车、病房等传统心电分析仪不便使用的场合,具有很高的实用推广价值。
篇6:基于USB接口的心电信号数据采集系统
基于USB接口的心电信号数据采集系统
摘要:介绍了基于USB接口的心电信号数据采集系统,给出了该系统的硬件组成原理及软件设计方法。由于该系统使用了高性能的USB专用芯片CY7C64613,因而具有使用方便、即插即用等特点。与笔记本电脑相连即可构成移动式心电信号检测分析仪器,具有较高的实用推广价值。关键词:USB;心电;数据采集
1 引言
心电信号是最广泛的临床检查项目之一。心电信号数据采集系统是心电信号检查的关键部件,它能在较强的噪声背景下,通过电极将0.05~100Hz的微弱心电信号检测出来,然后经放大、A/D转换后送入计算机进行处理。计算机的使用使得该系统在信号分析、储存、打印等方面比传统的心电图机具有明显的优势。但采集系统与计算机的通讯接口都存在插卡插拔麻烦,安全性差,且扩展槽数目有限等不足。为此?本文提出的基于USB接口的心电信号数据采集系统使用了目前最为先进的USB接口技术,能够支持即插即用和热插拔功能。这是其它非USB接口无法比拟的。同时也可以与笔记本电脑相连以构成移动式心电检测分析仪。
2 系统的硬件组成
2.1 系统组成
图1所示为基于USB接口的心电信号数据采集系统的组成框图。图中?电极传感器检测到的心电信号经输入保护电路进行电压限幅、高频滤波后,再进行前置放大,然后经光电隔离后,再次进行电压放大,最后经干扰抑制电路消除干扰后,在多路模拟开关的控制下将其中某一路信号接入A/D。CY7C64613是带智能USB接口的单片机,通过它可以把A/D转接后的.数字信号经USB接口传输到计算机。
下面就数据采集系统的抗干扰措施、信号放大及USB通信等问题进行重点论述。
2.2 系统抗干扰
作为医疗器械的心电信号数据采集系统,由于其检测对象是低频、微弱的心电信号,干扰较大,因此?系统的抗干扰能力及安全可靠性至关重要。针对这种情况,本系统采取了多方面措施。图2所示为输入保护电路和高频滤波电路。其中输入保护电路是在每个电极和地之间加入两个并联的硅二极管以进行电压限幅,从而限制输入电压不超过±600mv,确保病人和仪器的安全。高频滤波电路用于阻止高频干扰信号进入数据采集系统。本设计使用以FX101芯片为核心的低通滤波器。滤波截止频率为:
fc=1/[2p(R1R2C1C2)1/2]
使用光电隔离电路和干扰抑制电路可进一步提高抗干扰能力。干扰抑制电路包括50Hz干扰抑制电路和肌电干扰抑制电路。前者用来滤掉50Hz工频干扰(这是心电信号的主要干扰源),它是一个无源RC双T网络。后者用来抑制电极与皮
[1] [2] [3] [4]
【基于USB接口的数据采集系统设计(精选6篇)】相关文章:
什么是主板扩展插槽数2022-07-15
相似技术教学法在体育教学中心环节中的应用研究2022-12-24
劣质机箱作怪!移动硬盘无法读写数据排除一例2022-04-29
功能服务器?什么是接口2022-05-08
led大屏幕租赁合同2022-08-04
拭目以待:WiGig无线技术2022-09-11
USB的硬件结构2023-11-03
移动硬盘为何不能被识别2022-05-07
单片机的实习报告2023-09-02
单片机实习报告2022-11-21