找回密码
 注册
关于网站域名变更的通知
查看: 445|回复: 5
打印 上一主题 下一主题

高速USB数据采集系统的设计

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-5-24 10:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

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

数据采集系统方案设计

    数据采集系统的框图如图1所示,硬件电路如图2所示。其中,AD1674是l2位模数转换芯片,采用逐次比较方式工作。cpld主要用于控制ADC以及FIFO的时序、控制ADC的启动与停止和查询ADC的状态等。FIFO主要起着高速数据缓冲的作用。

    CY7C68013和AD1674之间通过CPLD连接,实现相关控制线和数据线的译码。在CY7C68013的控制下,首先对AD1674进行间隔采样,然后把结果传送到FIFO中,当采集到一定量的数据后,CY7C68013将数据打包通过USB总线传到PC,由高级应用程序进行数据处理。扩展的RS232接口可以和外部设备进行通信。上电时,CY7C68013从外部的E2PROM中通过I2C总线自动装载到内部的RAM中,便于固件的修改和升级。

    数据采集前端的调理电路如图3所示,本设计采用了限幅、降压、滤波和增加输入阻抗的措施来保护后端的转换芯片。

驱动程序和固件设计

    USB设备驱动程序基于WDM。WDM型驱动程序是内核程序,与标准的Win32用户态程序不同,采用了分层处理的方法。通过它用户无须直接与硬件打交道,只需通过下层驱动程序提供的接口访问硬件。因此,USB设备驱动程序不必具体对硬件编程,所有的USB命令、读写操作通过总线驱动程序转给USB设备。但是,USB设备驱动程序必须定义与外部设备的通信接口和通信的数据格式,也必须定义与应用程序的接口。Cypress公司提供了完整的CY7C68013驱动程序源码、控制面板程序及固件的框架,这大大加快了用户开发的进度。用户只需稍加修改或无须任何修改即可使用现有驱动程序,软件开发者大量的时间主要集中在应用程序和固件的开发。根据用户自己的需求,一般只需修改DeviceIoControl例程。本设计主要增加了控制数据传输函数、启动和停止ADC、复位FIFO等。Cypress为CY7C68013提供了开发框架,其中两个程序如下。
3 A4 ~' C$ J7 h3 x/ k* L6 Q6 u  z# Y" O6 i0 M% d# _5 I( r1 R
    FW.C:FW.C中包含了程序框架的MAIN函数,管理整个51内核的运行,因为这部分的功能已经进行了精心划分,一般是不用改动的。

6 v; W+ S. Q  z  j5 z
图3 调理电路

    PERIPH.C:用户必须将PERIPH.C实例化,它负责系统周边器件的互联。固件的设计主要针对这个文件,用户必须根据自己系统的需要,实例化这个文件,以实现所需的功能。在固件程序中,最重要的是TD_init()和TD_poll()这两个函数。以TD_poll()函数为例,在TD_poll()中主要完成外部FIFO状态的检测和数据的传输,程序主体部分如下。固件调试时,可以使用Cypress提供的EZ-USB control panel。
3 V9 s: o& I* _# K8 bVoid TD_Poll(void)
. Q0 N: m6 d( j  D' P& B% d+ b{( M, t9 t% H& W5 t3 N3 v
If(GPIFTRIG & 0x80) //判断GPIF是否空闲6 c: l7 y1 _/ V- l& i0 J
{5 D' u% J' _0 [9 ~- U9 {
If(EXTFIFONOTEMPTY ) //判断外部FIFO是否非空! h, t5 G  j/ m! @, u4 j
{, [( |' L) ~7 u6 p8 I" }
If(!(EP24FIFOFLGS & 0x01)) //判断FIFO是否不满
/ |: R+ m# n( G" U2 J: ?( p{
" B# _7 D2 F& OIF(enum_high_speed)! M/ U: K% X. T+ ]
{
4 I" j5 A; z& U" j+ d- _* X6 ~7 _" jSYNCDELAY;
% X- |7 u0 ]8 @/ X8 AGPIFTCB1=0x02; //设置处理计数
2 K; n: j& U* e9 o! L- m/ `! OSYNCDELAY;
+ o: d5 J: s  s1 F  ~! _' q& xGPIFTCB0=0x00;
) R4 H2 h0 ~* P9 ^SYNCDELAY;
& E% I$ x4 c% X0 [  O}
& x  t1 `# e, u9 Y5 fElse; z( `: S/ ^2 X0 t4 P2 S3 l
{: C. E: ~! m+ c# H. H
SYNCDELAY;
# F( n3 x" ?3 I* Q$ ?GPIFTCB1=0x00;  r: D" n$ C$ J
SYNCDELAY;
7 ^# s7 c9 c; A# @) Z0 q- F1 wGPIFTCB0=0x20;
$ b$ \8 p0 o$ m* N) G1 o# BSYNCDELAY;, d+ s, S* [. z/ h3 L9 K
}) T: |) ~$ j$ c+ e* ^: Q9 Z7 d
Setup_FLOWSTATE_Read();
7 s& I# d3 e  j) p7 cSYNCDELAY;
( o+ p5 r' r; X- yGPIFTRIG=GPIFTRIGRD|GPIF_EP2;
3 J4 k: k& Q. USYNCDELAY;& ~- L# m+ d. E% D0 i
While(!(GPIFTRIG & 0x80))) U: S8 C0 y9 C! _' r( f
{;}! M' e# ^. r* {4 W! U9 |( [# I2 f
SYNCDELAY;
/ W! s: Z% _4 W( [2 Z0 R0 D! j}
# R4 m, [' k6 [- b9 k5 y3 G* q}
6 C9 d9 Y# y# s) P9 C" J+ Q}% X$ U; b' r: R: B/ S: c: h
}

% j- F/ L1 u8 k" u0 z1 R1 C, I; u

该用户从未签到

2#
发表于 2021-5-24 11:12 | 只看该作者
CY7C68013和AD1674之间通过CPLD连接,实现相关控制线和数据线的译码

该用户从未签到

3#
发表于 2021-5-24 11:15 | 只看该作者
USB设备驱动程序不必具体对硬件编程,所有的USB命令、读写操作通过总线驱动程序转给USB设备

该用户从未签到

4#
发表于 2021-5-24 11:16 | 只看该作者
软件开发者大量的时间主要集中在应用程序和固件的开发

该用户从未签到

5#
发表于 2021-5-24 14:33 | 只看该作者
谢谢分享。学习了!
  • TA的每日心情
    奋斗
    2025-1-1 15:26
  • 签到天数: 584 天

    [LV.9]以坛为家II

    6#
    发表于 2021-5-26 15:14 | 只看该作者
    棒棒哒,学习
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-8-11 17:12 , Processed in 0.140625 second(s), 26 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表