计算机应用技术
基于单片机和USB接口的数据采集系统设计
李国柱
(西安文理学院陕西西安710065)
摘要:以EZUSBFX2作为USB接口芯片设计一种数据采集系统。该系统应用EZUSBFX2芯片构建单片机和主机的数据管道,接口符合USB2.0协议。详细介绍该系统的硬件组成和软件设计,包括FX2的固件设计和主机用户程序。EZUSBFX2芯片工作在从属FIFO方式下,通过适当的配置可与单片机方便地进行连接,单片机可以像访问外部存储器一样访问FX2的端点。主机应用程序通过USB接口向设备发送相应的命令来控制采样过程。该系统硬件扩展方便、编程简单。
关键词:FX2;SlaveFIFO;USB;数据采集
中图分类号:TP334文献标识码:B文章编号:1004373X(2009)0406503
DesignofDataAcquisitionSystemBasedonSingleChipComputerandUSBInterface
LIGuozhu
(XianUniversityofArtsandScience,Xian,710065,China)
Abstract:AdataacquisitionsystemisdesignedbasedontheUSBinterfacechipEZUSBFX2.ThesystemusesEZUSBFX2chiptoformthedatapipelinebetweenmicroprocessorandcomputer.TheinterfaceconformstotheUSB2.0protocol.EZUSBFX2chipworksintheslaveFIFOway.Thechipcanbeconnectedwithmicroprocessorconvenientlybysuitableconfigure.ThemicroprocessorcanaccesstoFX2sendpointbythesamewayasaccesstoexternalmemory.TheusersapplicationprogramcontrolsthesamplingprocessthroughUSBinterfacebytransmissioncorrespondingcommandtotheequipment.Tothesystem,theexpansionofhardwareisconvenientandtheprogrammingissimple.Inthispaper,bothhardwaredesignandsoftwaredesignofthesystemarediscussedingreatdetail,includingthefirmwareofFX2andusersapplicationprogramofthecomputerside.
Keywords:FX2;SlaveFIFO;USB;dataacquisition
在工业生产和科学技术研究中,常利用PC或工控
机对各种数据进行采集,以获得所需要的控制信息和实验数据。传统的数据采集系统多以ISA,EISA或PCI插卡的形式完成数据传输,这种方式存在安装麻烦,受计算机插槽数量、地址、中断资源限制,可扩展性差等缺点。由于通用串行总线(UniversalSerialBus,USB)具有自动被系统识别,自动安装驱动程序、自行进行系统配置,以及支持不同速率的同步和异步传输方式,支持热插拔和即插即用(PlugandPlay,PNP)等优点,已逐渐成为现代数据传输的发展趋势。目前实现USB数据传送多采用专用的USB接口芯片,文献[1,2]采用的PDIUSBD12可支持USB1.1协议,文献[3]采用的接口芯片为USB100也仅支持USB1.1协议,文献[4]采用CP2102符合USB2.0协议,其通用的驱动程序可将设备作为虚拟的COM端口设备进行操作,文献[5]采用Philips公司ISP1581芯片作为USB2.0的接口芯片。这里采用Cypress公司的CY7C68013作为USB接口芯片,设计实
[1]
现了基于单片机和USB2.0的数据采集系统。该系统可实现单通道模拟信号的采集,主机应用程序负责启动和停止采样,采样间隔时间由主机应用程序设置调整,采样数据传给主机应用程序显示并保存。1系统硬件设计1.1系统硬件组成
整个系统的硬件结构如图1所示。AT89C52为主控单片机,负责控制A/D转换、上传采集数据、接收并执行主机的命令。CY7C68013为USB接口芯片。A/D转换芯片采用TI公司生产的TLC549,AD780是一款高精度参考电压芯片,可为TLC549提供2.5V或者3.0V的参考电压。系统+5V电源由主机的USB接口提供,CY7C68013所需的电源为+3.3V,由+5V电源接稳压芯片AP1117提供,图中没有画出。1.2TLC549
TLC549[6]是以8位开关电容逐次逼近A/D转换器为基础而构造的CMOSA/D转换器,将其设计成能通过三态输出与微处理器或外围设备串行接口。
收稿日期:20080616
基金项目:西安文理学院专项科研基金资助项目(KY200643)
65
嵌入式技术李国柱:基于单片机和USB接口的数据采集系统设计
可以对许多通用总线接口进行访问,如ASIC,DSP和存储器等。文献[9,10]利用FX2的GPIF方式构建了USB数据传输通道。SlaveFIFO方式是将FX2的FIFO作为外部控制器(如FPGA或单片机)的从属FIFO,外部控制器可像普通FIFO操作一样对FX2的FIFO进行读写,而不考虑该包的大小,传输速率可明显提高,文中FX2在SlaveFIFO模式下工作。FX2有3种封装形式:128引脚、100引脚和56引脚,这里选用FX2的56引脚的封装形式。
FX2芯片在使用时必须先下载固件程序,固件程序主要负责完成芯片初始化,对芯片进行必要的配置、处理设备请求、进行数据传输等相应工作。用户通过编写适当的固件程序完成对FX2的设置。Cypress公司提供了一个固件程序开发框架可以大大简化FX2芯片固件程序的开发难度。通过编写用户初始化函数TD_Init(),用户可以规定各种端点资源的使用以及配置外围接口的输入/输出等。其主要配置语句如下:
IFCONFIG=0xCB;
//FX2配置为异步SlaveFIFO方式,内部时钟48MHzEP2CFG=0xA0;//EP2,4#512B,BULK,OUTEP2FIFOCFG=0x10;//EP2自动OUT,8位EP6CFG=0xE0;//EP6,4#512B,BULK,INEP6FIFOCFG=0x08;//EP6自动IN,8位EP4CFG=0x20;//EP4无效EP8CFG=0x60;//EP8无效PINFLAGSAB=0x8E;
//FLAGA固定为EP6FF,FLAGB固定为EP2EF
PINFLAGSCD=0x04;//FLAGC固定为EP2PFPORTACFG|=0x40;//PA7引脚配置为SLCSFIFOPINPOLAR=0x00;//所有引脚低电平有效EP2FIFOPFH=0x00;
//FP2端点的整个FIFO大于等于1时,
FP2的可编程标志激活
EP2FIFOPFL=0x01;
TLC549用输入/输出时钟(I/OCLOCK)和芯片选择(CS)输入作数据控制,转换结果由DATAOUT引脚输出。I/OCLOCK端的最高频率可达1.1MHz。TLC549片内系统时钟工作在4MHz(不需要外部时钟)。片内系统时钟使内部器件的操作独立于串行输入/输出时序并允许TLC549像许多软件和硬件所要求的那样工作。I/OCLOCK和内部系统时钟可以实现高速数据传送,使得TLC549可实现40kHz的采样频率。TLC549具有通用控制逻辑及自动工作或在微处理器控制下工作的片内采样/保持电路,差分高阻抗基准电压输入端,易于实现比例转换的高速转换器,定标及隔离电路。整个开关电容逐次逼近转换器电路的设计允许在小于17s的时间内,以最大误差∀0.5为最低有效位的精度实现转换。
图1系统的硬件连接图
1.3CY7C68013及其固件程序
EZUSBFX2系列芯片CY7C68013是业界第一个支持USB2.0,同时向下兼容USB1.1规范的单片机,为描述方便以下简称该芯片为FX2。FX2支持全速传输(12Mb/s)和高速传输(480Mb/s),该芯片将USB2.0收发器、串行接口引擎SIE、增强的8051内核、GPIF等集成于一体。FX2内含4KB的端点缓冲区FIFO,可以被配置为具有不同大小缓冲区的IN或OUT端点(EP2,EP4,EP6,EP8),具有USB协议所规定的4种传输方式,即控制方式、中断方式、批量传输、和同步传输方式[7]。Cypress公司为FX2提供了完善的软件开发工具包,降低了开难度,加快了开发进度。
FX2可以工作在3种不同的模式下完成USB数据的传输,即Ports模式、GPIF模式和SlaveFIFO模式。Ports模式
[8]
固件程序将FX2配置为异步SlaveFIFO模式,总
线宽度8位,在4个端点中,EP4和EP8未被使用,EP2和EP6的配置如表1所示。由于采用自动输入/输出模式,主机和单片机通过旁路FX2的CPU直接连接,所有数据被直接通过FIFO管道提交,不需固件程序干预。在FX2的SlaveFIFO模式下,FIFOADR[1∃0]引脚作为地址线选择某个端点,SLCS相当于片选信号,SLWR(写)与单片机的WR引脚相连,SLRD(读)和SLOE(输出使能)与单片机的RD引脚相连。单片机通过访问地址为0x00的外部存储器的方式就可以实现对EP2的访问,同理可访问EP6端点。
表1EP2和EP6端点配置
端点EP2EP6
缓冲区大小4倍512B4倍512B
输入/输出自动输出(主机传向设备)自动输入(设备传向主机)
传输种类访问地址批量传输批量传输
0x000x02
下其USB数据的传输主要在FX2的8051
内核参与下完成,数据传输通过执行指令实现,因此数据的传输率比较低,对大批量数据传输一般采用后两种方式。GPIF方式,称为通用可编程接口方式,在此模式下,FX2的FIFO是由内部的GPIF控制的,FX2利用由软件编程输出读写控制波形读取FIFO标志,控制FIFO的选通,并且对外部设备提供了用户专用接口,66 现代电子技术!2009年第4期总第291期
单片机通过FX2的3个标志引脚(FALGA,FLAGB,FLAGC)来全面掌握FX2的各端点FIFO的状况。FLAGA定义为输入端点EP6的满标志,当输入数据满时该引脚为低电平;FLAGB被定义为输出端点EP2的空标志,当主机传来的数据被读空时该引脚为低电平;FLAGC定义为当EP2端点整个FIFO中的字节数大于等于1时为低电平。假设当前主机没有传送命令,则FLAGC为高电平,当主机发送命令后,EP2的字节数大于等于1,则FLAGC变为低电平。这样在FALGC引脚上产生了一个下降沿,将此引脚与单片机的INT0引脚相连,则当主机发送命令后单片机会触发INT0中断,在INT0的中断处理程序中单片机读取并执行传来的命令。2系统软件设计
2.1驱动程序
在EZUSBFX2开发包中,提供有通用的驱动程序包,对该程序包稍加修改就可生成一个具有下载固件并完成设备重枚举功能的设备驱动程序。文献[7]对驱动程序的开发步骤有详细的记述,这里采用的就是这个通用驱动程序(GPD)。2.2主机应用程序
主机应用程序主要实现向设备发送命令数据包,接收设备传送的数据并进行显示,主机应用程序通过通用驱动程序来完成对设备的控制和通信。应用程序采用VC6.0编写,与设备通信时,首先通过调用Win32函数CreateFile()来取得访问设备驱动程序的句柄。该函数的语句实例如下:
HANDLEDeviceHandle;
DeviceHandle=CreateFile(\"\\\\\\\\.\\\\ezusb0\GENERIC_WRITE,FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL);
计算机应用技术
&BytesReturned,//实际返回的字节数NULL);//写操作
status=DeviceIoControl(g_hDevice,//输出设备句柄IOCTL_EZUSB_BULK_WRITE,
//批量写数据的IOCTL控制码
&bulkControl,
//输入缓冲区,指向BULK_TRANSFER_CONTROL结构的指针
sizeof(BULK_TRANSFER_CONTROL),
//输入缓冲区长度
outBuffer,//保存要写到设备的数据缓冲区指针nBufferSize,
//USB传送数据的总长度,必须小于64KB
&BytesReturned,//实际返回的字节数NULL);//关闭设备
CloseHandle(g_hDevice);
应用程序中有两个线程,辅助线程为采样线程,采样线程的流程如图2所示。
图2采样线程流程图
采样线程负责从设备读取数据,并通过消息传送机制与主线程通信;主线程负责采样数据的显示、存盘,向设备发送命令数据包,以及启动/停止采样线程。当执行启动采样命令时,主线程先向设备发送启动命令数据包,然后启动采样线程准备接收数据;当执行停止采样命令时,主线程先向设备发送停止命令数据包,然后停止采样线程结束数据的接收。命令数据包大小为4B,包含有命令字和采样间隔时间参数等信息。2.3单片机程序
如上所述,单片机的INT0中断一旦触发,表示主机有命令数据包传送到。在INT0的中断处理程序中,单片机读取EP2端点的数据直到EP2端点为空(FLAGB为低电平),获得上位机发送的命令数据包。若接收到启动命令,则根据命令数据包的采样间隔时间参数来设置计数变量和定时器T0的初值并启动T0;若接收到的命令为停止命令,则停止定时器T0。在T0的中断处理程序中若相应的计数变量达到设定值,则完成A/D转换、读取数据以及将数据写入EP6端点的操作。计数变量和T0的初值均根据命令数据包的参数进行设置,因此设备的采样间隔时间可以由主机程序进行调整。
(下转第75页)
用户得到设备句柄后,就可以使用Win32函数DeviceIoControl()来向设备提交相应的IOCTL控制码,进行读写和控制操作,完成相应操作后应用程序通
过Win32函数CloseHandle()关闭设备句柄结束1次操作。以下是部分操作的代码实例:
//读操作
BOOLstatus=FLASE;//执行结果status=DeviceIoControl(g_hDevice,//输入设备句柄IOCTL_EZUSB_BULK_READ,
//批量读取数据的IOCTL控制码
&bulkControl,
//输入缓冲区,指向BULK_TRANSFER_CONTROL//结构的指针,该结构主要用来提供管道号sizeof(BULK_TRANSFER_CONTROL),
//输入缓冲区长度
inBuffer,//保存读取数据的缓冲区指针FX2_BufferSize,
//USB传送数据的总长度,必须小于64KB
67
现代电子技术!2009年第4期总第291期3结语
在利用LabVIEW实现BP神经网络的计算,方法一通过直接调用Matlab程序,简单易行,只是事先需要装有Matlab5.0以上的版本。方法二运用图形化编程对BP神经网络进行仿真,具有形象、直观、便于使用和理解的优于传统文本编程语言的特点。
计算机应用技术
ComputerControlledExperimentsinGeneralChemistryLaboratoryInstruction[J].Chem.Educator,2000,5(2):7176.[2]飞思科技产品研发中心.神经网络理论与Matlab7实现
[M].北京:电子工业出版社,2005.
[3]常晓丽.基于Matlab的BP神经网络的设计[J].机械工程
与自动化,2006(4):3637.
[4]郭红梅,于佐军.LabVIEW与Matlab混合编程的过程控制
应用[J].控制工程,2007(14):131132.
[5]蔡清华,杨世锡,罗锡梁.基于虚拟仪器编程的BP神经网络
学习算法仿真[J].现代机械,2006(2):68.
[6]周丽霞,熊瑞平,杨荣松.LabVIEW在BP神经网络故障诊
断系统中的应用[J].机床与液压,2007,35(4):215216.[7]昝涛,王民,费仁元,等.LabVIEW中人工神经网络计算的
实现及应用[J].微计算机信息,2006,22(6):122124.[8]粟钧,吴拓.基于虚拟仪器编程的BP神经网络算法学习算
法仿真[J].广东轻工职业学院学报,2005,4(1):2628.[9]殷莹.BP网络在设备故障诊断中的应用与实现[J].微计算
机信息,2007,23(10):3134.
图12运行结果参考文献
[10]张雅丽,王宝光,赵海文,等.虚拟仪器在故障诊断中的应
用[J].机床与液压,2005(1):124126.
[11]曾祥学,罗卫华,张斌.基于LabWindows/CVI的人工神经
网络BP算法的实现[J].现代电子技术,2005(2):2123.
[1]AllerhandA,GaluskaAD.ImplementationofLabVIEWfor-
作者简介廖慎勤女,1984年出生,湖南醴陵人,湖南师范大学硕士研究生。主要研究方向为模拟电路故障诊断。
彭良玉女,1965年出生,湖南湘乡人,湖南师范大学教授,硕士生导师,北京航空航天大学博士后。主要研究方向为源滤波器的设计,模拟电路故障诊断,已发表论文80余篇。
江勇男,1985年出生,湖南醴陵人,凌阳科技公司通信部工程师。主要研究方向为通信终端设备开发,已发表论文1篇。
(上接第67页)3结语
工作于SlaveFIFO方式下的FX2相当于在外部控制和主机之间构造了一个的数据管道。通过对FX2的FIFO标志引脚FLAGA,FALGB,FLAGC的配置,使该芯片可以方便地与单片机进行连接,单片机通过外部中断获知主机数据的到达,通过其他标志引脚获得端点FIFO的信息,单片机和主机通信时,感觉不到FX2的存在。基于单片机和FX2的数据采集系统扩展方便、编程简单、无需外接电源、采样间隔时间由主机调整,实现了数据采集系统的小型化和便携化,在现场信号采集,教学实验,仪器仪表等领域具有一定的应用前景。
参考文献
[1]张树明,方昌林.基于USB总线的数据采集系统[J].机床与
液压,2005(12):132134.
[2]周兴,戴胜华.基于单片机的USB数据采集系统设计[J].仪
器仪表标准化与计量,2006(1):2527.
[3]石晓瑛,许智榜.基于AT90S8515和USB接口数据采集系
统[J].微计算机信息,2005,21(10):9092.
[4]丛伟波,杨勇,韩清凯.低功耗数据采集系统的USB接口设
计[J].单片机与嵌入式系统应用,2005(1):2527.
[5]张建鹏,解国明,李刚.基于ISP1581型接口电路的USB2.0
接口设计[J].国外电子元器件,2005(9):710.
[6]李国厚.串行A/D转换器TLC548/549及其应用[J].仪表
技术,2001(3):3536.
[7]钱峰.EZUSBFX2单片机原理、编程及应用[M].北京:北
京航空航天大学出版社,2006.
[8]袁卫,赵小明,张建奇.Ports模式下CY7C68013和FPGA的
数据通信[J].单片机与嵌入式应用系统,2006(7):4951.[9]贾宝金,王宝珠,李晓玲.基于USB的数据采集系统的设计
与研究[J].现代电子技术,2007,30(24):187190.
[10]岳跃平,霍玉晶,何淑芳.基于USB2.0技术的高速双路数
据采集系统[J].微计算机信息,2007,23(7):104105.
作者简介李国柱男,1976年出生,山西长治人,讲师,硕士。研究方向微机控制。
75
因篇幅问题不能全部显示,请点此查看更多更全内容