1.引言
近年来,usb接口由于其传输速率高,真正的即插即用等优点正在逐渐取代传统的计算机接口如:rs232,epp等。目前,许多的芯片生产商都推出了符合usb协议的芯片,如philips公司的pdiusbd12,ns公司的usbn9602等。在众多的usb2.0芯片中,cypress公司的ez-usb fx2(cy7c68013)芯片是一个不错的选择。本文设计了一种基于ez-usb fx2和max1195的数据采集系统,该系统符合usb2.0协议标准,通过与高精度激光纵模分析仪连接进行调试,证明该系统达到了预定目的。
2. cy7c68013芯片和max1195芯片介绍
2.1 cy7c68013介绍:
cy7c68013在一块芯片上同时集成了usb2.0收发器,串行接口引擎sie,增强型的8051微控制器以及一个可编程外围接口gpif(general programmable interface)。cy7c68013的“量子fifo”(fifo,先进先出存储器)特性使得无需8051cpu的任何干预,数据即可从外设上传到主机,这种数据传输模式彻底解决了usb2.0收发器与一般8051微控制器连接时由于8051的时钟频率低而导致的传输速率瓶颈问题。cy7c68013芯片的另一个突出优点是其“‘软’配置”,代码和数据能够直接通过usb接口下载到片内的ram上,这一功能通过cypress公司独创的“重枚举”(renumerationtm)功能实现。cy7c68013芯片有四个可编程的批量、中断、同步传输端点,可以分别设置为双缓冲,三缓冲和四缓冲模式,8位或者16位的外部数据接口,该接口可以根据需要工作在 gpif或者slavefifo模式。其中gpif能够和绝大部分并行接口如fifo等实现“无胶”连接,即无需外加任何微控制器或cpld、fpga 等。本文的设计中采用了gpif方式。
2.2 max1195介绍:
max1195是由maxim公司推出的一款低功耗、双路、高速、八位模数转换芯片,采用流水线(pipeline)结构,最高采样率40mbps,内部集成了两个 adc,真正实现两路同步采样转换。其工作电压范围是2.7v-3.6v,具有减小功耗的休眠模式和关断(shut-down)模式,单端或者差分输入方式,片上采样保持(t/h)电路,内部或者外部参考电压,含有用户可选择的数据输出格式:二的补码格式或者补偿二进制码格式,具有输出使能控制,可以将输出置为高阻态。此外maxim还提供了与max1195引脚、封装完全兼容的10位、更高采样率的模数转换芯片,如max1197、max1198等,因此系统升级非常方便。在本文的工作中,采用了内部参考电压、双路单端模拟输入、补偿二进制码输出格式。
3.系统整体构成及其工作原理介绍:
3.1系统构成:
系统的整体框图如图1所示。整个系统主要包括usb传输芯片cy7c68013,先进先出存储器(fifo)sn74v235和模数转换芯片max1195组成。反相器74lvc04主要起max1195和fifo之间的逻辑控制作用。
图1 系统整体框图
3.2系统工作原理:
max1195的两路输入信号是同时被采样的,十六位的数据输出总线使两路数据可以同时输出,分别占八位,即:d0a~d7a和d0b~d7b;sn74v235输入为18位,根据cmos技术的要求,将未使用的d16和d17引脚接地。max1195采集到的数据首先送进fifo里, fifo的写时钟(wclk)和ad的转换时钟反相,这样可以充分满足max1195输出数据的建立时间,避免发生数据丢失或者数据重复写入现象。 sn74v235的 (programmable almost full)可编程几乎满信号经74lvc04反相后接max1195的sleep和 引脚,以免fifo发生溢出而丢失数据。sn74v235的数据输出引脚q0~q15与cy7c68013的gpif模式下的数据线fd[15:0]即端口b和端口d组成的十六位数据总线相连,数据sn74v235到ez-usb fx2的时序过程由cy7c68013的gpif 控制。fx2采用了“量子fifo”结构,在fx2里面,数据可以分为两个域:usb域和gpif接口域。这两个域是独立的,允许分别使用不同的时钟和逻辑控制数据的传输,usb域是由sie控制的,sie通过usb口接收或者发送端点fifo的数据。fx2的“量子fifo”能够几乎不花时间在这两个数据域中的转移数据,因为这两个域用的fifo在物理上是同一个。所以根据“量子fifo”原理,实际上数据已经存在于属于usb域的端点fifo里面了,采用usb的bulk传输方式,使该数据完全不经过低频cpu干预,而是采用fx2提供的autoin模式,即一旦fx2端点缓冲区的数据达到指定字节数,数据将自动被打包从usb口上传到主机。
3.3 gpif波形及程序介绍:
gpif是fx2的端点fifo的片内控制器,可以完全代替片外的控制器而实现fx2与外围fifo的“无胶”连接。gpif的核心是一个可编程状态机,可以产生六个“控制”(ctl)和九个“地址”(gpifadr[8:0])信号,可以接收六个外部(rdy)“准备好”输入,八位或者十六位数据总线,时钟可以用fx2的ifclk,也可以由外围提供。本文gpif接口的详细硬件连接如图2所示。
图2 gpif与sn74v235详细连接图gpif状态机可以定义四个波形描述符,一般情况下是:fifo读,fifo写,单字/字节读,单字/字节写。cypress提供了图形化的波形描述工具gpif designer,用户只需要给出gpif波形,gpif designer会自动生成c语言的波形代码gpif.c,可以直接链接到用户的固件程序中。本文中用到了fiford描述符,波形如图3所示。
图3 gpif designer设计的 fiford波形
4.系统软件编写
系统软件主要包括三个部分:下位机cy7c68013的固件,usb驱动程序和上位机主机应用程序。
4.1 固件程序编写
对于下位机cy7c68013的固件编写,cypress公司给出了在keil c51下的固件程序框架,固件框架完成ez-usb fx2的初始化、usb标准设备请求处理、usb挂起模式下的电源管理服务和usb中断处理。cypress还提供了函数钩子来加速用户代码的添加。用户只需要简单地提供一个usb描述符表和执行外围功能的代码即可。
4.2 驱动程序编写
windows系统下的usb驱动包括三层,从高到低依次是:usb客户端设备驱动(usb client device driver)、usb总线驱动(usb hub(bus) driver)、主机控制器驱动(host controller driver)。后两者由windows系统提供,用户只需要开发usb客户端设备驱动程序,cypress公司提供了一个通用的驱动程序 (general purpose driver),即ezusb.sys,一般情况下,该驱动程序可以满足fx2开发者的需要。本文使用了cypress公司的通用驱动 ezusb.sys。为了使用ezusb.sys,用户必须编写对应的inf文件,inf文件将特定的usb设备绑定给相应的驱动程序,该inf文件参照 ezusbw2k.inf编写。
4.3 主机应用程序编写
通用驱动程序gpd即ezusb.sys提供了基本usb设备请求和数据传输的用户模式接口,用户模式应用程序通过win32函数 deviceiocontrol()给设备驱动器发送请求。ezusb.sys提供了基本设备请求、批量读写、同步读写等一系列ioctl函数。这里以 ioctl_ezusb_bulk_read(ezusb批量传输)为例加以介绍。
批量传输模式下读fx2的端点fifo的关键代码如下:
dword ioctl_val=ioctl_ezusb_bulk_read; //设置从设备中读数据
bresult=deviceiocontrol ( hdevice , ioctl_val , //从设备读数据
&bulkcontrol , //端点号
sizeof ( bulk_transfer_control), //传入参数的大小
buffer , //读数据的缓冲区
length , //读数据的长度
(unsigned long *)&nbytes , //驱动返回的数据的实际长度
null);
限于篇幅,其他程序代码从略。
6.结束语
本文的创新点是充分发挥了cy7c68013的优势,利用fx2的内部可编程状态机gpif实现了与外围fifo“无胶”连接,避免了使用外围asic或者cpld、fpga等的麻烦,系统升级方便。整个电路结构紧凑,占用面积小,便于携带。
本文采用cypress公司的usb2.0芯片cy7c68013设计了一种通用的高速双路同步数据采集系统,通过将其与高精度激光纵模分析仪连接进行试验,证明该系统实现了数据的高速实时传输,达到了预先设计的目标。随着usb口的进一步普及和计算机的发展,本文设计的这种usb数据采集系统必将得到更加广泛的应用。
OneNET多协议接入之HTTP协议的使用步骤
华为联合合作伙伴共助上海鲲鹏计算产业生态繁荣
智能制造设备的发展前景解析
与荣耀V9几乎同时推出的荣耀8青春版无人问津?
二极管钳位保护电路讲解
基于EZ-USB FX2和MAX1195的数据采集系统
电动车什么牌子好揭秘选购技巧
诺基亚无边框全屏智能手机,颜值秒杀小米MIX!
关于变压器风冷控制柜的介绍
出售ADCMT 8250A光功率计
新思科技开发者如何改变世界?
欧盟希望到2030年让全球20%半导体在欧洲生产
资深专家支招:如何缩短高级医疗内窥镜系统的开发时间
声控开关控制模块WTK6900G-B02的功能介绍
桥式电路的基础知识及如何使用它们在实际环境中进行精确测量
谷歌邮箱官方宣布将于2024年1月停止支持基本HTML视图
常用语音识别芯片有哪些?
常用的电工和PLC知识总结
价格下降和更多的可选机型推动出货增长,八分之一的北美家庭将拥有超高清电视
iBeacon落地微信能否开启IOT微网络时代?