您的位置 首页 厂商

高速USB数据收集体系方案设计

高速USB数据采集系统方案设计-本文将介绍基于EZ-USB FX2系列CY7C68013芯片的高速数据采集系统的设计,该系统具有限幅保护功能,固件和驱动程序的编写简便,能够完成对数据的高速采集和传送。

  在图画处理、瞬态信号丈量等一些高速、高精度的运用中,需求进行高速数据收集。USB 2.0接口以其高速率等长处渐有替代传统ISA及PCI数据总线的趋势,热插拔特性也使其成为各种PC外设的首选接口。EZ-USB FX2是Cypress公司推出的集成USB 2.0的微处理器,它集成了USB 2.0收发器、SIE(串行接口引擎)、增强的8051微操控器和可编程的外围接口。本文将介绍依据EZ-USB FX2系列CY7C68013($5.4120)芯片的高速数据收集体系的规划,该体系具有限幅维护功用,固件和驱动程序的编写简洁,能够完结对数据的高速收集和传送。

  数据收集体系方案规划

  数据收集体系的框图如图1所示,硬件电路如图2所示。其间,AD1674($17.8680)是l2位模数转化芯片,选用逐次比较办法作业。CPLD首要用于操控ADC以及FIFO的时序、操控ADC的发动与中止和查询ADC的状况等。FIFO首要起着高速数据缓冲的效果。

  

  图1 数据收集体系框图

  

  图2 体系硬件电路

  CY7C68013和AD1674之间经过CPLD衔接,完结相关操控线和数据线的译码。在CY7C68013的操控下,首要对AD1674进行距离采样,然后把成果传送到FIFO中,当收集到一定量的数据后,CY7C68013将数据打包经过USB总线传到PC,由高档运用程序进行数据处理。扩展的 RS232($780.5000)接口能够和外部设备进行通讯。上电时,CY7C68013从外部的E2PROM中经过I2C总线主动装载到内部的RAM中,便于固件的修正和晋级。

  数据收集前端的调度电路如图3所示,本规划选用了限幅、降压、滤波和添加输入阻抗的办法来维护后端的转化芯片。

  驱动程序和固件规划

  USB设备驱动程序依据WDM。WDM型驱动程序是内核程序,与规范的Win32用户态程序不同,选用了分层处理的办法。经过它用户无须直接与硬件打交道,只需经过基层驱动程序供给的接口拜访硬件。因而,USB设备驱动程序不必详细对硬件编程,一切的USB指令、读写操作经过总线驱动程序转给USB设备。可是,USB设备驱动程序有必要界说与外部设备的通讯接口和通讯的数据格式,也有必要界说与运用程序的接口。Cypress公司供给了完好的 CY7C68013驱动程序源码、操控面板程序及固件的结构,这大大加快了用户开发的进展。用户只需稍加修正或无须任何修正即可运用现有驱动程序,软件开发者很多的时刻首要会集在运用程序和固件的开发。依据用户自己的需求,一般只需修正DeviceIoControl例程。本规划首要添加了操控数据传输函数、发动和中止ADC、复位FIFO等。Cypress为CY7C68013供给了开发结构,其间两个程序如下。

  FW.C:FW.C中包含了程序结构的MAIN函数,办理整个51内核的运转,由于这部分的功用现已进行了精心区分,一般是不必改动的。

  

  图3 调度电路

  PERIPH.C:用户有必要将PERIPH.C实例化,它担任体系周边器材的互联。固件的规划首要针对这个文件,用户有必要依据自己体系的需求,实例化这个文件,以完结所需的功用。在固件程序中,最重要的是TD_init()和TD_poll()这两个函数。以TD_poll()函数为例,在 TD_poll()中首要完结外部FIFO状况的检测和数据的传输,程序主体部分如下。固件调试时,能够运用Cypress供给的EZ-USB control panel。

  Void TD_Poll(void)

  {

  If(GPIFTRIG 0x80) //判别GPIF是否闲暇

  {

  If(EXTFIFONOTEMPTY ) //判别外部FIFO是否非空

  {

  If(!(EP24FIFOFLGS 0x01)) //判别FIFO是否不满

  {

  IF(enum_high_speed)

  {

  SYNCDELAY;

  GPIFTCB1=0x02; //设置处理计数

  SYNCDELAY;

  GPIFTCB0=0x00;

  SYNCDELAY;

  }

  Else

  {

  SYNCDELAY;

  GPIFTCB1=0x00;

  SYNCDELAY;

  GPIFTCB0=0x20;

  SYNCDELAY;

  }

  Setup_FLOWSTATE_Read();

  SYNCDELAY;

  GPIFTRIG=GPIFTRIGRD|GPIF_EP2;

  SYNCDELAY;

  While(!(GPIFTRIG 0x80))

  {;}

  SYNCDELAY;

  }

  }

  }

  }

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/176561.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部