作者:周云锋,孙书鹰,王宏
usb(universal serial bus)总线是intel、nec、microsoft、ibm等公司联合提出的一种新的串行总线接口规范。为了适应高速传输的需要,2000年4月,这些公司在原1.1协议的基础上制订了usb2.0传输协议,已超过了目前ieee1394接口400mbps的传输速度,达到了480mbps。usb总线使用简单,支持即插即用pnp(plug and play),一台主机可串连127个usb设备。设备与主机之间通过轻便、柔性好的usb线缆连接,最长可达5m,使设备具有移动性,可自由挂接在具有usb接口的运行在windows98/nt平台的pc机上。usb总线已被越来越多的标准外设和用户自定义外设所使用,如鼠标、键盘、扫描仪、音箱等。
结合设备检测中数据采集的实际需要,设计了该高速同步数据采集系统。该系统最多可四路同步采样,单通道采样速度可达620ksps,四通道同时采样速度可达180ksps。usb接口控制芯片采用cypress公司fx2系列中的cy7c68013,通过对其可编程接口控制逻辑的合理设计和芯片内部fifo的有效运用,实现了数据的高速连续采样和传输。
1 基本原理
该采集系统总体框架分三部分:主机(能支持usb2.0协议的pc机)、内部包含cpu及高速缓存的usb接口控制芯片(cy7c68013)和高速同步采样芯片(max115),如图1所示。其数据传输分两部分:控制信号传输和采集数据传输。控制信号方向为由主机到外设,由外设cpu控制,数据量较小;采集到的数据由外设到主机,数据量较大。为了保证较高的传输速度,不经过cpu。系统基本操作过程为:主机给外设一个采样控制信号,fx2根据该信号向a/d转换器送出相应控制信号,即采样模式控制字;之后由a/d转换器自主控制转换,并将各通道采样数据存入其片内缓存。一旦转换完成,由a/d的完成位向fx2的可编程控制接口发读采样结果信号;然后由可编程接口的控制逻辑依次将各通道采样结果从a/d的缓存读入fx2的内部fifo。当fifo容量达到指定程度后,自动将数据打包传送给usb总线。期间所有操作不需要cpu的干预。采样过程中接口控制逻辑依次取走批量数据,在打包传送时a/d仍持续转换,内部fifo也持续写入转换结果。只要内部fifo写指针和读指针位置相差达到指定的值就立即取走数据。从而保证了同步连续高速采集的可靠性。
2 硬件部分
2.1 芯片介绍
cy7c68013属于cypress公司的fx2系列产品,它提供了对usb2.0的完整解决方案。该芯片包括带8kb片内ram的高速cpu、16位并行地址总线+8位数据总线、i2c总线、4kb fifo存储器以及通用可编程接口(gpif)、串行接口引擎(sie)和usb2.0收发器。在代码的编写上,与8051系列单片机兼容,且速度是标准8051的3~5倍。
cy7c68013与外设有两种接口方式:可编程接口gpif和slave fifos。
可编程接口gpif是主机方式,可以由软件设置读写控制波形,灵活性很大,几乎可以对任何8/16 bit接口的控制器、存储器和总线进行数据的主动读写,使用非常灵活。slave fifos方式是从机方式,外部控制器可象对普通fifo一样对fx2的多层缓冲fifo进行读写。fx2的slave fifos工作方式可设为同步或异步;工作时钟为内部产生或外部输入可选;其它控制信号也可灵活地设置为高有效或低有效。笔者在设计中采用主机方式。
max115是美信公司的高速多通道同步采样芯片。含有两组4路同步通道,共8个输入端。采样精度为12位,采样模式由采样控制字决定,可灵活地在两组中的1~4个通道间选择。采样时,各通道转换结果先存入其内部相对应的4个12bit存储单元,各通道都转换完后再一起取走。
2.2 电路原理及设计
考虑cy7c68013与max115接口时,采样模式不同,控制波形有所差别,笔者选择主机方式即可编程控制接口(gpif)。
gpif是fx2端点fifo的内部控制器。在这种方式下,接口内核可产生6个控制输出端(ctl0~ctl5)和9根线的地址(gadr[8:0])输出,同时可以接收6个外部输入(rdy0~rdy5)和2个内部输入。fx2有4个波形描述符控制各个状态。这些波形描述符可以动态地配置给任何一个端点fifo。例如,一个波形描述符可以配置为写fifo,而另一个配置为读fifo。fx2的固件程序可以把这些描述符配置给四个fifo中的任意一个,配置后,gpif将依据波形描述符产生相应的控制逻辑和握手信号给外界接口,满足向fifo读写数据的需要。gpif的数据总线既可以是单字节宽(8位fd[7:0])也可以是双字节宽(16位fd[15:0])。每个波形描述符包含了s0~s6 七个有效状态和一个空闲状态。在每个有效状态对应的时间段里,经过预先设置,gpif可以做以下几件事情:(1)驱动(使为高或低)或悬浮6个输出控制端;(2)采样或驱动fifo的数据总线;(3)增加gpif地址总线的值;(4)增加指向当前fifo指针的值;(5)启动gpfiwf(波形描述符)中断。除此之外,在每个状态,gpif可以对以下几个信号中任意两个进行采样,它们是:(1)rdyx输入端;(2)fifo状态标志位;(3)内部rdy标志位;(4)传输计数中止标志位。把其中两个信号相与、相或或者相异或,根据结果跳转到其它任意一个状态或延迟1~256个ifclk时钟周期。当然也可以根据输入端的信号进行跳转或延迟。gpif波形描述符通常用cepress公司的gpif工具(gpiftool)进行配置。它是一个可运行于windows平台的应用程序,与fx2的开发包一起发布。
在这种方式下,所有的读写及控制逻辑通过cy7c68013 的gpif以软件编程的方式实现,且控制逻辑的变换方便灵活(只需要改变接口的一个配置寄存器的值)。电路连接如图2所示。
本数据采集系统只用到了两个输出控制ctl0、ctl1和一个外部输入rdy0,它们分别接max115的convst#、wr#和int#。数据总线用双字节,其中fd0~fd11接max115的数据输入端d0~d11,fd12和fd13接控制字输入端的a2和a3,fd0和fd1复用做控制字输入端的a0和a1。max115的采样基准时钟由fx2的输出时钟经三分频得到,为16mhz。对应四种数据传输方式(八种不同的采样模式),gpif的控制及握手信号波形有所不同。四通道同步采样的时序图如图3所示。
在第一个判决点,若采样数据已准备就绪,max115传给gpif一个负脉冲信号rdy0;根据此信号,波形按顺序转入2、3、4、5状态,使指向内部fifo的指针在每个时钟上升沿加1,依次读取四个数据,取完数据后利用ctl0的上升沿启动下一次采样。若在状态1时没有出现负脉冲,则直接跳转到状态6,之后重复执行此波形描述符。
三通道同步采样时,读取数据的状态只需要持续三次。其它采样模式控制波形的设计依此类推。
2.3 固件程序设计
固件程序是指运行在设备cpu中的程序。只有在该程序运行时,外设才能称之为具有给定功能的外部设备。固件程序负责初始化各硬件单元,重新配置设备及a/d采样控制。固件代码的存储位置有三种:第一种是存在主机中,设备加电后由驱动程序把固件下载到片内ram后执行,即“重新枚举”;第二种方法是把固件代码固化到一片eeprom中,外设加电后由fx2通过i2c总线下载到片内ram后自动执行;最后一种方法是把程序固化到一片rom中,使之充当外部程序存储器,连在fx2三总线上。笔者选用第一种方式,这种方式便于系统的调试和升级。固件程序框图如图4所示。
3 用户程序和驱动程序
3.1 驱动程序的编写
该系统需要两个驱动程序,即通用驱动和下载固件的驱动。通用驱动完成与外设和用户程序的通信及控制;而下载固件的驱动则只负责在外设连接usb总线后把特定的固件程序下载到fx2的ram中,使fx2的cpu重启,模拟断开与usb总线的连接,完成对外设的重新设置。主机根据新的设置安装通用驱动程序,重新枚举外设为一个新的usb设备。
通用驱动程序一般不需要重新编写,用cypress公司已经编好的驱动ezusb.sys;而下载固件的驱动则必须定做,其详细操作过程见参考文献[2]。
3.2 用户程序的编写
用户程序是系统与用户的接口,它通过通用驱动程序完成对外设的控制和通信。在编写用户程序时,首先要建立与外设的连接,然后才能实施数据的传输。启动采样后,为了保证不丢失数据,用户程序应该建立一个新的工作线程专门获取外设传来的数据。程序中主要用到两个api函数:createfile()和deviceiocontrol ()。createfile()取得设备句柄后,deviceiocontrol ()根据该句柄完成数据传输。程序代码简要如下:
hdevice = createfile(″\\\\。\\ezusb-0″)
generic_read | generic_write,
file_share_write,
null,
open_existing,
file_attribute_normal,
null);
if (hdevice == invalid_handle_value)
{
application-》messageboxa(“无法创建设备,请确认设备是否连上!”,null,idok);
}
else
{
deviceiocontrol (
hdevice,
ioctl_ezusb_bulk_write,
&blkctl,
sizeof(bulk_transfer_control),
&inbuffer, //定义的数据缓冲区
sizeof(inbuffer),
&nbytes,
null);
……
}
程序框图如图5所示。
在该高速同步数据采集系统的设计中,cy7c68013芯片灵活的接口和可编程特性简化了外部硬件的设计,提高了系统的可靠性,也利于pcb板的制作与调试。另外,usb设备的可热插拔特性使得该系统具有便携式的特点,使用方便,无需关机重启或打开机箱进行安装。该数据采集系统已成功地应用于某型。
传真机用纸类型
并不止芯片,VR想爆发还得看他们
英特尔宣布已开始发货其第 11 代酷睿 “Rocket Lake” 桌面处理器
壹沓科技物流机器人赋能健安农牧数字化转型,描绘美好新蓝图
CV企业强势崛起 智能安防已成为CV企业瞄准的热门赛道
基于CY7C68013和MAX115芯片实现高速同步数据采集系统的应用方案
自动驾驶技术的成本大揭秘
芯动联科:高性能MEMS惯性传感器龙头
成都慧视智能图像处理技术,让城市交通更加智慧化
kb0开关与隔离开关二者之间的区别是什么
三星正在开发Bright Night夜间摄影模式在黑暗下可拍出明亮的照片
数据采集冗余在高炉自动化系统中的应用
如何把iPhone 11魔改成“iPhone 12”?
华为智选车载智慧屏在华为商城开启预售
让iPhone提速的简单步骤,大多数人都不知道
比利时推3D报纸 特殊眼镜可观立体效果
Highest Linearity, Downconvert
高压密闭消解_原子荧光光度法测定涂料中砷含量的应用方案
锐龙5 3600X测试曝光 几乎看齐i7-9700K
卫生型耐震隔膜压力表产品的主要技术指标和特点