USB视频采集(精选9篇)
USB视频采集 第1篇
随着图像压缩技术的进步,特别是MPEG-I、MPEG-II图像压缩芯片的大量推广应用,2 0 0 0年至今,数字图像采集产品进入了一个快速发展时期,产品也由原来的数字监控录像主机发展到网络摄像机、网络传输设备、电话传输设备、专业数字硬盘录像机等多种产品。无论是从国家战略的高度还是从国民生产的具体需要,都需要研制新一代的视频采集系统,而超大规模集成电路和嵌入式软硬件技术的迅猛发展,为我们找到了一种解决问题的新思路,即研制嵌入式结构的视频采集系统。
2. 系统总体构成
视频采集系统的应用主要包括前端采集用的通用产品(有镜头、CCD摄像机、云台、报警开关等)和后端的控制系统(主要包括主机控制设备、视频采集卡、视频压缩卡、解码器、总控设备和图像采集软件系统) 。
嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成[1],如图1所示,用于实现对其他设备的控制、监视或管理等功能。嵌入式系统的组成软硬兼施,互利互惠,融为一体,成为产品。芯片加软件成为产品,但要开发工具辅助进行开发。
3. 硬件系统总体设计
由于嵌入式系统的高速处理特性以及在图像信号处理中的优势和其它方面如技术支持和设备条件等原因,选用了三星公司的S3C2410A作为图像处理和中央控制芯片。整个硬件电路功能框图如图2所示。
本设计的视频信号采集系统硬件电路,主要是要在满足视频信号数据时序要求严格、数据量大、采集速度快等特点的情况下,保证数据能够稳定可靠的采集并实现压缩,最后传输给计算机作进一步处理。
3.1 S3C2410处理器模块
主控制器模块是整个系统的核心,采用的S3C2410处理器是Samsung公司基于ARM920T处理器核的16/32位微控制器[3],该处理器最高运行频率可达到2 0 3M H z,它的低功耗、精简和全静态设计特别适合于对成本和功耗敏感的应用。S 3 C 2 4 1 0提高了丰富的片内资源,支持Linux操作系统,是本系统的合适选择。它能完成整个系统的调度工作,在系统上电时配置所需要工作的芯片的功能寄存器,完成视频流的编码。
3.2 系统存储电路模块
主控制器还需一些外围存储单元,如Nand Flash和SDRAM。Nand Flash中包括Linux的Boodloader、系统内核、文件系统、应用程序以及环境变量和系统配置文件等。S D R A M是运行操作系统及各类数据的缓存。设计采用了64M的Nand F l a s h和6 4 M的S D R A M。
3.3 外围电路模块
设计中还需要用到的外部设备包括USB接口、RS232接口和JTAG接口。通用串行总线 (USB) 设备控制器设计用DMA接口提供一个高性能完备的速率功能控制解决方案[3],视频监控终端的USB主控制器模块通过专用的USB集线器与USB摄像头相连。在实时监控状态下,各个摄像头上捕获的图像数据通过USB集线器传输到视频监控终端的USB主控制器模块上,然后再由USB主控制器模块交由S3C2410处理器集中处理。S3C2410对采集到的图像进行实时编码压缩,编码之后的码流直接传输到发送缓冲区中,等候发送。
S3C2410A可以很方便地用UART实现RS232串口功能,但S3C2410A的供电电压为1.8V/3.3V,所以I/O口的最大逻辑电平也是3.3V,要实现RS232串口功能还要加电平转换电路,故用M A X 3 2 3 2来实现这一功能。
JTAG接口[4]是一个业界标准,主要用于芯片测试和配置等功能,使用I E E E Std 1149.1联合边界扫描接口引脚[5]。现在JTAG接口还常用于芯片的在线配置, 对PLD、Flash等器件进行配置。为了完成系统的调试, 任何原型系统都支持J TAG配置方式,因而J TAG配置也就成为最广泛支持的配置方式。
4 系统的软件设计
嵌入式系统的软件和硬件往往只需针对某种特别的应用定制,因此嵌入式操作系统需要量体裁衣,除去冗余,同时尽可能发挥系统的潜力。L i n u x具有许多优点,如开放源码;功能强大的内核,支持多用户、多线程、多进程、实时性好、功能强大稳定,大小功能可定制,支持多种体系结构。
嵌入式Linux的软件设计流程如图3所示,其中的主要内容包括:
(1)在硬件上搭建一个软件平台,搭建嵌入式Linux软件开发平台需要完成启动程序Bootloader移植、嵌入式Linux操作系统内核移植以及嵌入式Linux操作系统的设备驱动程序的开发等工作。
(2)在软件平台的基础上,开发系统的应用程序。
Linux对每一个外围的物理设备,统一抽象定义为字符设备、块设备或者网络接口,可以按照规范开发驱动程序,加载成一个模块而装入内核中,通过虚拟文件系统(V F S)等方便的管理和维护。
在Linux 2.6内核下进行内核编译的基本步骤如下:
(1)键入命令make menuconfig,对内核进行配置,选择Y A F F S文件系统,支持N F S启动,系统使用的是U S B接口的摄像头,故要启动USB设备支持模块,包括USB设备文件支持模块、USB主控制器驱动模块等。此外USB摄像头属于视频设备,为了使应用程序能够访问它,还需要启动Video4Linux2模块。
(2)用make dep命令生成内核程序间依赖关系。
(3) Make zlmage命令生成内核映像文件。
(4) M a k e m o d u l e s和m a k e modules_install命令生成系统可加载模块。
这样就生成了zlmage内核映像文件,把它下载到目标平台的flash中。
4.2 视频采集程序开发
Linux 2.6内核中的视频子系统Video4Linux2为视频应用程序提供了一套统一的应用程序编程接口 (Application Programming Interface, API) 。通过Video4Linux2 API进行编程,来实现图像的采集流程图如图4所示。
USB摄像头采集到的视频数据可以直接输出到显示器,我们通过V I D I O C_S_WIN IOCTL为视频输出设备设置视频窗口的位置和大小。在V I D I O C_S_W I N IOCTL中设置的显示窗口宽度和高度与视频采集设备设置的V I D I O C_S_F M T IOCTL中的值一致。
5. 结论
本文针对U S B摄像头,通过基于A R M体系的R I S C设计思想,在嵌入式Linux上调用Video4Linux2 APIs编程实现USB摄像头视频采集功能。由于Linux良好的移植性,且程序的主要部分是通过调用Video4Linux2 API函数实现,使得只需要对程序源代码稍加修改,进行交叉编译后就能移植到其他USB摄像头的嵌入式系统中使用。该系统将图像采集、图像处理、图像显示集成在一起,实用性强,在很多领域都具有应用性(如可视电话、多媒体IP电话等手持式或便携式图像处理设备)和研究价值。
摘要:基于ARM体系的RISC设计思想, 给出了基于ARM处理器的USB摄像头视频播放器的设计方案。通过基于三星公司的S3C2410A作为图像处理和中央控制芯片硬件平台上配置嵌入式Linux操作系统, 并将Linux上编译好的视频采集程序镜像移植到硬件平台上, 来采集连接在USB接口上的USB摄像头, 并显示在与S3C2410A相连接的液晶显示器上。
关键词:嵌入式Linux系统,USB摄像头
参考文献
[1]何加铭主编.嵌入式32位微处理器系统设计与应用.电子工业出版社.2006年
[2]杨继华, 严国萍.基于嵌入式Linux与S3C2410平台的视频采集.单片机与嵌入式系统应用.2004, 11:69-71
[3]黄大勇, 李鉴, 张建正.基于USB2.0接口的高速数据采集系统设计[J].现代电子技术.2007, 30 (24) :69-72
[4]SUMSUANG ELECTRONICS.S3C2410X user’s manual[Z].Republic of Korea:Sumsang, 2003, 1-160
[5]IEEE Std.1149.1-2001, Test Access Port and Boundary Scan Architecture, IEEE.2001
USB视频采集 第2篇
关键词:USB;心电;数据采集
1引言
心电信号是最广泛的临床检查项目之一。心电信号数据采集系统是心电信号检查的关键部件,它能在较强的噪声背景下,通过电极将0.05~100Hz的微弱心电信号检测出来,然后经放大、A/D转换后送入计算机进行处理。计算机的使用使得该系统在信号分析、储存、打印等方面比传统的心电图机具有明显的优势。但采集系统与计算机的通讯接口都存在插卡插拔麻烦,安全性差,且扩展槽数目有限等不足。为此?本文提出的基于USB接口的心电信号数据采集系统使用了目前最为先进的USB接口技术,能够支持即插即用和热插拔功能。这是其它非USB接口无法比拟的。同时也可以与笔记本电脑相连以构成移动式心电检测分析仪。
2系统的硬件组成
2.1系统组成
图1所示为基于USB接口的心电信号数据采集系统的组成框图。图中?电极传感器检测到的心电信号经输入保护电路进行电压限幅、高频滤波后,再进行前置放大,然后经光电隔离后,再次进行电压放大,最后经干扰抑制电路消除干扰后,在多路模拟开关的控制下将其中某一路信号接入A/D。CY7C64613是带智能USB接口的单片机,通过它可以把A/D转接后的数字信号经USB接口传输到计算机。
下面就数据采集系统的抗干扰措施、信号放大及USB通信等问题进行重点论述。
2.2系统抗干扰
作为医疗器械的心电信号数据采集系统,由于其检测对象是低频、微弱的心电信号,干扰较大,因此?系统的抗干扰能力及安全可靠性至关重要。针对这种情况,本系统采取了多方面措施。图2所示为输入保护电路和高频滤波电路。其中输入保护电路是在每个电极和地之间加入两个并联的硅二极管以进行电压限幅,从而限制输入电压不超过±600mv,确保病人和仪器的.安全。高频滤波电路用于阻止高频干扰信号进入数据采集系统。本设计使用以FX101芯片为核心的低通滤波器。滤波截止频率为:
fc=1/[2p(R1R2C1C2)1/2]
使用光电隔离电路和干扰抑制电路可进一步提高抗干扰能力。干扰抑制电路包括50Hz干扰抑制电路和肌电干扰抑制电路。前者用来滤掉50Hz工频干扰(这是心电信号的主要干扰源),它是一个无源RC双T网络。后者用来抑制电极与皮肤接触时引进的肌电信号,它是一个高载RC滤波器。
此外,还可采用软件滤波的方法。可通过在软件中设置50Hz干扰滤波和漂移滤波等程序来进一步提高系统的抗干扰能力。
2.3放大电路
放大电路也是设计重点之一。一般情况下,心电信号必须进行放大才能送往计算机进行处理。由于极化电压的影响,放大器的增益不能太高,因而本系统采用了前置放大电路和电压放大电路两级放大的方法。对前置放大电路的要求是:输入阻抗高、失调温漂小、共模抑制比高、输入噪声小。为此笔者选用了INA121芯片。INA121是TexasInstrumentsBB公司生产的低功耗仪器放大电路,性能优越,它的差模输入电阻为1012Ω,共模抑制比为106dB,输入失调电压为±200μv,输入失调温漂为±2μv/℃,输入噪声为20nV?Hz?1/2。前置放大电路的放大倍数设置为50。较小的前置放大倍数可以避免极化电压的影响。电压放大电路的放大倍数设置的较高(取为100倍),则可以保证总的放大倍数。
2.4USB专用芯片的选择
目前各个厂商推出的USB芯片类型众多,功能各异。本系统选用Cypress半导体公司推出的EZ-USBFX全速系列中的CY7C64613-128NC芯片。EZ-USBFX系列芯片是带智能USB接口的单片机,它以8051为核心。对于复杂与繁琐的USB通信,该器件可提供EZ-USB固件函数库与固件架构,从而可大幅度地降低编写固件程序代码的困难程度。CY7C64613支持USB协议1.1,同时可支持12Mbps的全速传输。此外,它还带有增强版的8051核心和4kB或8kB的RAM,端点数量为32个,可采用智能型的USB核心程序。
3软件设计
USB视频采集 第3篇
数据采集器是把实验过程中的电信号转变为数字信号输出,实现了数模之间的转换。而声卡也是一个同样具备数模转换功能的设备。利用声卡在音频范围内代替专用的数据采集器,大大降低了在实际教学中使用数据采集器的门槛。但是由于普通声卡只能接受音频范围(20Hz~20kHz)内的交流信号,不能对直流信号或缓变交流信号进行采集。而中小学阶段的科学实验教学内容里,直流信号占了很大一部分。这也是在教学中使用电脑声卡代替专用的数据采集器局限所在。
针对实际教学情况,笔者自主研制了一套基于USB声卡的数据采集器,通过添加外围电路解决普通声卡无法测量直流信号的问题,为学校提供了符合教育信息化要求的低成本教学实验设备。
一、硬件部分
USB外置声卡的优点有:(1)信噪比得到了较大的提高。(2)安装简单,可被系统自动识别、自动配置、自动安装。(3)具有可热插拔的特点,即插即用。(4)使用USB声卡作为数据采集设置,能有效避免在实验过程中因使用不当而损害主板的声卡,导致维修成本过高。(5)可方便添加外围电路,增强采集功能。
笔者利用PCM2902芯片设计了基于USB声卡的数据采集器,同时通过添加外围电路——压控振荡器,解决了声卡无法测量直流信号的问题,并增强了声卡的数据采集功能。PCM2902的USB声卡模块、压控振荡模块再加上为传感器配置的串行接口,就组成了基于USB声卡的数据采集器硬件设备,如图1所示。
二、软件部分
基于USB声卡的数据采集器应用程序主要利用LabVIEW来编写,具有“直流采集”、“交流采集”、“数据处理”、“历史回放”四大功能,可完成各种实验的采集记录任务,并可根据教学和探究需要进行数据处理、图线分析等。
“直流采集”选项卡中设有定时和手动记录数据两种模式,记录下的实验数据以表格与图形两种方式同步显示。“交流采集”可把左右两声道的信号实时采集显示,并设有自动保存和手动保存数据两种模式可供选择。用户可通过移动游标读出波形上某一点的精确坐标值,也可缩放图形的显示区域,实现波形的全景和局部观察,如图2。
当数据采集完毕后,“数据处理”和“历史回放”功能被自动触发。“数据处理”中设有线性拟合、指数拟合等多种拟合方式可供选择,并自动显示拟合后的数据和结果。在“历史回放”选项卡中用户则可选择回放任何已保存的波形文件,用做进一步的图像观察与分析。
三、基于USB声卡的数据采集器在教学中的应用
演示晶体熔化时温度的变化规律实验中,传统方法是使用煤油温度计测量温度。这种由人眼目测并手动记录温度的方法易造成误差。如果固体升温过快,保持温度不变的时间很短,则可能来不及记录数据,使绘制的温度变化曲线不能清晰地显示水平段,导致无法得出此晶体的熔点。本实验中,采用传统实验仪器(如图3),但使用温度传感器代替煤油温度计测量樟脑丸(C10H16O)熔化过程的温度变化。温度在某一时间内是一个稳定值,温度传感器把温度值转化为电信号,这个信号是缓变信号,直接用声卡是无法采集的。因此,需要应用基于USB声卡的数据采集器,运行其应用程序,选用“直流采集”功能,设定系统定时记录温度数据,就能自动采集数据,显示温度变化曲线。实验结果如图4所示。
对于本实验,传统做法是在实验完成后,还需要对实验数据描点作图。在课堂演示实验中做这样的数据处理工作既费时又精度不高。若利用程序中的功能进行数据处理,则可留下更多的课堂时间进行图线的分析或开展新实验。又如,在探究晶体与非晶体的凝固温度变化曲线时,可在熄灭酒精灯后,在程序中设定定时自动记录。这样,凝固时的温度变化曲线就能在无需看守的情况下自动完成并显示图线,由此可大大提高课堂演示实验的数量、质量与效率。
更换使用各类传感器,可完成力、热、电、声等多种实验,现已开发并验证了胡克定律实验、电磁感应现象的演示、测量电源的电动势和内阻、RC、RL的移相实验等实例,实现了现代教育技术与科学实验教学的有效整合。
此数据采集器可应用于教师演示实验、学生探究实验、研究性学习等。由于此数据采集器具有成本低、通用性强的特点,可更新和扩充教学的实验仪器设备。将现代化测量技术引入科学实验教学,不仅可以改善实验效果,还提升了实验的科技含量。以此USB声卡数据采集器作为硬件设备,还可设计一系列基于声卡的虚拟仪器。在使用时,只需把用户程序安装在多台计算机上,就可以作为实验仪器供学生使用。
参考文献
[1]王珍宁、吴先球、胡颖舒、陈俊芳.基于声卡的数据采集器及其在物理教学中的应用[J].中小学信息技术教育,2006(10).
[2]马 瞻.异军突起的USB声卡[J].电子世界,1999(11).
[3]侯国屏等.LabVIEW7.1编程与虚拟仪器设计[M].北京:清华大学出版社,2005.
[4]课程教材研究所,物理课程教材研究开发中心.义务教育课程标准实验书物理八年级上册[M].北京:人民教育出版社,2005.
[5]吕红英、吴先球、刘朝辉、陈俊芳.LabVIEW环境下基于声卡的虚拟示波器软件设计[J].计算机应用与软件,2007,24(3).
USB视频采集 第4篇
2 Video4Linux编程获取摄像头数据
利用Video4Linux编程来获取视频图像的主要步骤:打开视频设备、读取设备信息、更改设备当前设置、进行视频采集(采用mmap的方式)、对采集的视频进行处理、关闭视频设备。
1)Video4Linux的数据结构
NULL,};
2)Video4Linux图像采集的函数实现
对于USB视频图像数据的采集,首先获得视频图像采集设备的信息以及图像信息,并对图像参数进行设定,然后才进行视频图像的采集。
(1)打开视频设备。如果打开视频设备成功,获得相应的文件表述符grad_fd;如果打开失败,返回错误信息。程序如下:int grad_fd;
(2)读取信息。成功打开设备文件后,要取得设备的信息与视频窗口信息,可以用v4l_get_capability与v4l_get_picture来实现。
(3)初始化设备。调用v4l_set_norm对各个信号源的属性进行设置。(4)grad_fd
(4)取得设备通道的信息,保存到grad_fd中。
(5)图像采集。
初始化设备完成后,接下来可以对视频图像进行截取了,通常情况下视频图像采集有两种方法:read()直接读取和mmap()内存映射,本系统在程序设计上采用了mmap()方式。
首先我预先设定好图像格式和大小,然后用VIDIOCMCAPTURE传到ioctl()中,最后mmap()所映射的内存中就是我们需要采集的数据图像。
mmap()函数的定义为:
void*mmap(void*start,size_t length,int prot,int flags,int fd,off_t offset);各参数的含义如下所示:
length:映射到调用进程地址空间的字节数
prot:指定共享内存的访问权限
flags:PAP_SHARED MAP_PRIVATE中必选一个
start:返回值是系统实际分配的起始地址
利用mmap()方式程序如下:unsigned char*buf;
(6)关闭视频设备。由于系统资源有限,应注意资源的回收。程序片段如下:close(cam);
3 运行结果
编译环境:Red Hat Linux9.0,内核是2.4.20-8,运行程序后,系统最终可实时显示USB摄像头的动态画面。如图1、图2。
4 结束语
本程序是在操作环境下实现了摄像头视频图像采集,在此基础上进行一些图像处理分析方面的研究。
参考文献
[1]韦东山.嵌入式Linux应用开发完全手册[M].北京:人民邮电出版社,2008:241.
[2]杨磊.基于嵌入式Linux视频采集平台的开发[D].武汉:武汉科技大学,2008.
[3]谢炼.基于Linux内核的USB设备安装管理与实现[J].计算机应用研究,2006(3):227-230.
基于USB的数据采集系统设计 第5篇
关键词:数据采集系统,USB,设计
0 引言
随着现代技术的发展, 各种设备的复杂程度越来越高, 为了确保设备运行时的稳定性, 需要对设备状态进行实时的监测, 从而了解设备的运行状态, 确保设备运行正常。现在的数据采集系统大都较为复杂, 成本较高, 虽然满足采样需求但是却存在功能过剩的现象。为了降低数据采集系统的成本, 本文开发了基于C8051F340及AD7490芯片的高速数据采集系统, 并通过USB总线将数据传输至上位机, 用于完成后期的数据处理。
1 系统总体设计
整个数据采集系统由上位机和下位机两部分组成, 其结构框图如图1所示。
下位机部分以C8051F340芯片为核心, 负责控制信号采集以及USB传输, 另外采用AD7490芯片作为AD转换核心;通过外围预处理电路将待采集信号转换为AD7490芯片所能采样处理的信号后, 将该信号送入AD7490芯片数据输入端口, AD7490芯片在C8051F340芯片控制下进行数据采样, 并将采样结果存储到C8051F340芯片的RAM中, 之后将该数据通过USB端口发送到上位机进行数据处理。
上位机部分采用LabWindows/CVI软件设计, 用于读取下位机采集到的数据, 并对采集到的数据进行后期处理, 包括显示、绘图、报警等。
2 系统硬件设计
系统硬件主要包括核心控制及采样部分和外围处理电路。外围电路主要完成待采集信号向可处理信号的转换;核心控制及采样部分完成信号的采集处理及传输, 核心控制及采样部分主要由AD7490芯片和C8051F340芯片组成。
2.1 AD7490芯片
AD7490芯片是一款精度为12位的16通道高速、低功耗逐次逼近型ADC芯片, 采用2.7V~5.25V电压的单电源供电, 最高采样频率可达1 MS/s;通过SPI端口进行读写, 可以通过写16位控制字来控制AD采样通道, 并回读上次进行AD采样的数据。设计过程中只需将REFIN端口连接至2.5 V基准电压, 并将相应的SPI通信端口与C8051F340芯片的SPI通信端口相连即可。
2.2 C8051F340芯片
C8051F340芯片是一款8051兼容的混合信号片上系统型MCU, 最高频率可达到48 MI/s, 提供一组增强型串行外设接口 (SPI) , 可以作为主器件或从器件, 工作在3线或4线模式, 并支持多个主从器件在同一总线上运行;另外C8051F340集成了一个完整的全速/低速USB功能控制器, 可用于实现USB外部设备。设计过程中只需将相应的端口对外相连即可, 其中VBUS端口为HOST/HUB, 为向USB设备供电的电源线, D+与D-端口为串行输出传输端口[1]。
C8051F340芯片作为SPI主器件控制AD7490芯片, 用于AD7490芯片的控制, 端口连接示意图如图2所示, 数据输出波形如图3所示, 为16位数据波形。
C8051F340芯片通过USB端口将数据传输到PC上位机端, 其中C8051F340芯片与USB端口连接示意图如图4所示。
3 系统软件设计
3.1 单片机软件设计
单片机软件采用C语言编写, 用于实现单片机的程序控制。单片机程序编写主要包括两部分:一部分用于对AD7490芯片进行读写, 以控制AD7490芯片的AD转换过程, 并获取AD转换的结果;另一部分用于控制数据传输, 通过控制单片机的USB模块将数据传输到上位机中。单片机软件流程图如图5所示。其中通过对SPI端口读写可以获取上次写入的通道转换的结果, 具体设计的程序块如下所示:
上述程序块完成一个字节的数据读写, 由于AD7490芯片的控制字及数据均为16位, 所以需要进行两次读写来完成一组通道的控制和数据的读写。
3.2 上位机软件设计
上位机软件采用LabWindows/CVI软件进行设计, 主要包括LabWindows/CVI函数调用和外围API函数调用, 其中包括在数据采集过程中的外围API函数调用, 主要为USBXpress软件工具包中的API函数[2,3,4], 如下所示:
SI_GetNumDevices () :获取连接设备的数目, 主要用于确定设备是否连接。
SI_Open () :打开设备连接, 主要用于打开连接的设备, 并创建设备对象的句柄, 从而获得对设备的控制权。
SI_Read () :读取为设备开辟的空间中的数据, 用于最终获取采集到的数据。
SI_Write () :将数据写入开辟的空间中, 用于对下位机写控制指令。
SI_Close () :关闭USB传输设备, 关闭设备对象的句柄。
上位机数据采集流程如图6所示。
4 结束语
通过系统的测试, 本文设计的数据采集系统运行可靠, 能够正常地完成数据采集功能, 实现低成本的高速数据采集。
参考文献
[1]朱磊, 刘东.C8051F340与LabVIEW基于API的USB通信[J].单片机与嵌入式系统应用, 2007 (11) :35-37.
[2]张海丽, 苏淑靖.基于LabWindows/CVI的测试仪软件设计[J].测控技术, 2012 (7) :88-91.
[3]谢冰.基于LabWindows/CVI的某产品自动测试系统软件设计[D].太原:中北大学, 2013:5-15.
基于USB接口的数据采集系统设计 第6篇
关键词:通用串行总线,数据采集,通用可编程接口
随着大规模集成电路与计算机技术的飞速发展,数据采集在语音处理、智能仪器、工业自动化及生物医学工程等众多领域中的地位日益突出,并且对数据采集的各项技术指标要求越来越高。传统的数据采集卡主要有PCI卡或者ISA卡,这些采集卡都存在着各种各样的缺陷,比如传输速度慢、不支持热插拔、安装不方便、受计算机地址、中断和插槽的限制,可扩展性差等[1]。
近年来,USB接口以其传输速度快、成本低、可靠性高、支持即插即用和热插拔等优点[2],迅速成为数据传输的主流。因此,开发这种基于USB2.0的高速数据采集系统,代表了现代数据采集和传输的发展趋势,必将被越来越多的用户所接受。
1 系统工作原理与硬件结构
基于USB接口的数据采集系统的硬件部分主要包括信号调理电路、A/D转换电路、USB控制电路三部分。PC机端的应用程序通过USB主机发送控制信号,通知CY7C68013开始数据采集。当CY7C68013接收到控制信号以后,通过GPIF模式发送控制波形到MAX125,控制其开始的数据转换。当MAX125接收到控制信号以后,开始进行数据采集。采集完成后,在USB主机控制器的控制下,MAX125把转换后的数字信号发送到CY7C68013,最后通过USB总线把采集到的数据发送到PC机,并进行相应的处理。
系统硬件框图如图1所示。
1.1 信号调理电路和电源电路
信号调理电路主要对模拟信号进行滤波和放大,确保输出的电压在A/D允许的范围之内。MAX125的输入模拟电压范围为-5 V~+5 V,所以在输入信号进入之前必须进行相应的处理。本设计所采集的语音信号的电压范围是0~30 m V,初步调理之后的电压范围为0~2 V,为了得到所需的增益,采用同相输入放大电路对初步调理后的电压放大。完成电压转换后,还必须由低通滤波器滤除高频信号,在本设计中,采用4阶巴特沃斯滤波器。滤波电路和放大电路所采用的放大器为OP07,其输入电压范围为±3 V~±22 V。本设计采用开关电源供电,提供的输出电压为±5 V、12 V,其中,MAX125需要5 V的数字电源和±5 V的模拟电源工作,运算放大器的供电电压为5 V和-5 V,而系统中USB2.0芯片采用3.3 V供电,为此,需要电源转换模块以获得系统所需要的电源电压值,其中5 V转3.3 V电压用到AS1117-3.3系列芯片。
1.2 USB控制电路
USB2.0传输芯片采用CYPRESS公司的CY7C68013A-56PIN,芯片的商标号是FX2。EZ-USB FX2微处理器是世界上第一款集成USB2.0的微处理器,具有增强型的8051内核性能、集成度高、方便灵活的软配置和快捷的软件开发工具等主要特性[3]。该芯片的内部结构如图2所示,其中主要包括USB2.0收发器、串行引擎(SIE)、增强型的8051内核、16 KB的RAM、4 KB的FIFO存储器、I/O接口、8位数据总线、16位地址总线和通用可编程接口(GPIF)。
EZ-USB FX2是整个系统的控制核心,除了完成与上位机的USB总线通信,还要实现对A/D采样电路的控制。CY7C68013本身有一个4 KB的内部FIFO存储器,可以满足常规的数据采集的需求,更重要的是其内部还提供了一个用于控制FIFO存储器的通用可编程接口(GPIF),大大方便了用户的需求[4],而且在GPIF的控制下,内部的FIFO利用其高速缓冲区可以在不需要固件的参与下与USB之间进行自动高速通信。GPIF是一个内置接口控制器,用来取代外接的控制逻辑,可以工作在内部时钟(30 MHz或48 MHz),也可以由外部时钟驱动(5 MHz~48 MHz)。GPIF的核心实际上是一个可编程状态机,最多可产生6个控制信号和9位地址总线。4个用户定义的波形描述符控制这个状态机,一般来讲,有单次读取、单次写入、连续读取、连续写入4个波形[5]。在GPIF模式下,读和写的操作都是从EZ-USB的角度来说的。即一个读波形数据传输表示数据从外部逻辑传输到EX-USB的内部FIFO,而一个写波形数据传输表示数据传输从EZ-USB内部的FIFO发送到外部逻辑。FX2用4个波形描述符来控制各个状态,这些波形描述符可动态地配置给任何一个端点FIFO。配置后GPIF将依据波形描述符产生相应的逻辑控制CTL及握手信号RDY来和外界接口,以满足向FIFO读写数据的需要。GPIF的数据总线可以是8位,也可以是16位,本设计采用16位数据总线。
1.3 硬件连接图
EZ-USB FX2接口芯片和MAX125芯片的连接图如图3所示。
本文采用CY7C68013的GPIF工作模式,即WORD-WIDE为1,直接使用了GPIF的16位并行接口。如图3所示,本设计将MAX125的D[0:7]同CY7C68013的PB[0:7]相连,D[8:13]同PB[0:5]相连;将MAX125的分别同CY7C68013的CTL0、CTL1和CTL2相连,由GPIF的波形描述符所产生的时序控制MAX125的采集时序。将MAX125的引脚与CY7C68013的RDY0引脚相连,作为读取数据的使能条件。引脚接地,随时能够读取转换结果。当引脚的电平变低时,MAX125转换结束,CY7C68013开始读取数据。CH1A~CH4B是MAX125的8路输入转换通道,可对A0~A3地址线进行编程来指定通道。本设计中MAX125采用的是内部基准电压,所以将REFIN引脚通过0.1μF的电容接地、REFOUT引脚通过4.7μF电容接地。以上电路具备了对MAX125的A/D转换的控制功能,它利用内部FIFO存储器在GPIF控制下实现快速同步数据采集。
2 系统软件设计
系统的软件设计主要包括固件设计、驱动程序设计和应用程序设计3部分。
2.1 固件程序设计
固件程序是整个程序设计的核心,它主要负责处理PC机发送来的各种USB设备请求,并与外围电路进行交换,存放在主机上,当系统上电或连接时将其自动下载到芯片的RAM中,并由8051执行。固件程序主要包括设备初始化和GPIF波形控制。固件程序流程如图4所示。
USB的固件程序是由main主函数处开始执行的,在主函数中,主要的初始化有:初始化休眠模式、远程呼唤和自供电;初始化用户设备。其中设备初始化包括FX2工作模式的配置和数据采集参数的配置。FX2工作模式配置主要包括时钟模式和端点配置,用到的寄存器有CPUCS和EP2CFG。端点0作为控制传输,端点2作为输入端点,传输方式为批量传输。这部分程序主要位于TD_Init()中,此外还包括对生成的GPIF.C中的GPIF寄存器的初始化函数GPIFInit()的调用。
GPIF编程主要包括GPIF工作模式的初始化、GPIF波形描述符配置、GPIF触发三部分内容。GPIF工作模式初始化主要是对寄存器IFCONFIG、EP2FIFOCFG进行配置,即IFCONFIG=0x FA,EP2FIFOCFG=0x09。GPIF对MAX125的控制是按照GPIF波形描述符所表达的时序进行的。根据MAX125提供的读写时序,本系统利用CYPRESS提供的开发工具GPIF Designer设计了GPIF波形描述符。GPIF触发过程是在TD_Poll()中实现的,其中写AD控制字波形的代码为:XGPIFSGLDATLXH=gdata[13:8],XGPIFSGLDATLXL=gdata[7:0];启动GPIF FIFO读传输的代码为:GPIFTRIG=GPIFTRIGRD|GPIF_EP2。
2.2 驱动程序设计
设备驱动程序的主要作用是使操作系统能够识别USB设备,并建立起主机和设备之间的通信。USB驱动程序采用WDM驱动模型[6],支持即插即用功能。在WDM驱动程序模型中,每个硬件设备至少有两个驱动程序。其中一个驱动程序为功能驱动程序,即硬件设备驱动程序,它了解使硬件工作的所有细节,负责初始化I/O操作、处理I/O操作完成时所带来的中断事件,并为用户提供一种设备适合的控制方式。另一个为总线驱动程序,由操作系统提供,它位于USB功能驱动程序的下面,负责管理硬件与计算机的连接。
在Windows操作系统下,开发WDM驱动程序可以选择DDK开发工具。主要有4个驱动例程:入口例程、即插即用例程、分发例程以及电源管理例程。
入口例程,即Driver Entry例程,由操作系统的I/O管理器在设备驱动功能加载时进行调用,主要负责WDM驱动程序的初始化。
即插即用例程实现USB设备的热插拔和动态配置。当设备与计算机连接时,系统自动识别并调用其DriverEntry例程,自动选择并加载合适的驱动程序。当设备从系统中移除时,自动处理相应的清除工作。其驱动例程主要有两个:Add Device例程和IRP_MJ_PNP例程。Add Device例程用于完成设备的添加。IRP_MJ_PNP例程主要负责处理系统即插即用管理器发出的Pn P信息,包括启动设备、停止设备、删除设备等。
分发例程用于处理各种I/O请求,每个分发例程都对应一个Win32函数。常用的分发例程主要有IRP_MJ_CREATE例程和IRP_MJ_CLOSE例程。
电源管理例程负责设备的挂起与唤醒。
2.3 应用程序设计
上位机应用程序给用户提供一个操作采集系统的界面,将采集到的数据以多种方式显示给用户,用户也可以对采集到的数据进行分析处理。应用程序采用Visual C++集成开发环境,利用MFC编程,主要功能有:开启和关闭USB设备、检测USB设备、设置USB设备传输管道、设置数据采集端口、实时地从USB接口采集数据、显示并分析数据。应用程序流程图如图5所示。
应用程序使用Win32的API函数Create File()来创建和打开设备,并返回该设备的句柄。当对设备进行读取时,首先调用打开并获得指定的USB设备的句柄,然后对指定管道进行复位,准备接收数据,然后启动接收数据线程。应用程序通过使用标准的Win32 API函数De vice Io Control()调用驱动程序中定义的宏代码IO_PICUSB_CTRL_READ来执行这部分操作,而驱动程序与设备之间的通信中,Device Io Control()调用被转化成一个带有IRP_MJ_DEVICE_CONTROL功能代码的IRP。关闭USB设备需调用Close Handle()函数,其调用方式为Close Handle(h Device),其中h Device为在调用Create File()函数时返回的设备句柄。
3 试验结果与分析
图6为本数据采集系统在批量传输下的应用程序界面。图中曲线是对模拟语音信号采集生成的波形图。实验表明,该基于USB2.0接口的数据采集系统可实现对语音信号的采集,传输速度能达到30 Mb/s,具有很强的抗干扰性,完全满足设计和使用要求。在保存数据和退出应用程序前,应先停止采集。保存数据时,通过在“保存”栏中选择对应的选项,就可以保存数据。
本文所设计的基于USB2.0接口的数据采集系统具有8路输入14位分辨率的性能,可满足语音处理、工业自动化及生物医学工程中心电信号等领域中大多数场合的数据采集要求。不仅克服了传统采集系统的缺陷,而且充分利用USB优点,提高了传输速度,给用户带来许多方便。本文的创新点在于采用USB接口进行微处理器与上位机之间的通信,并结合CY7C68013特有的GPIF编程技术,有效提升了整个系统数据采集速率,在实际应用中取得了良好的效果。
参考文献
[1]肖忠祥.数据采集原理[M].西安:西北工业大学出版社,2001.
[2]边海龙.USB2.0设备的设计与开发[M].北京:人民邮电出版社,2004.
[3]钱峰.EZ-USB FX2单片机原理、编程及应用.北京:北京航空航天大学出版社,2006.
[4]尹伟,娄淑琴.基于GPIF模式的USB接口电路的设计和实现[J].仪器仪表用户,2008(2):61-62.
[5]Cypress Semiconductor Corporation.EZ-USB FX2technical reference manual[Z].2001.
USB视频采集 第7篇
USB3.0属于一种串行电缆总线, 采用双总线拓扑结构, 不需要等应答包需要就能够在同一方向同时发送多个包, 能够兼容其他版本的USB, 同时能够抑制数据传输中遇到的一些干扰信号。USB3.0的两条总线是用电缆及连接器并连起来的, 总线采用星型的拓扑方式, 超速总线采用分层的通信架构。它的双总线结构一般是由USB3.0设备、USB主机及USB外设设备组成[1]。
USB3.0之所以能够实现超高速的数据传输, 主要是因为采用了8b/10b的编解码方式, 这种编解码方式保证了编码过程中的DC平衡, 数据传输过程中“0”、“1”的个数基本相同, 不会超过连续的5位的“0”或者“1”。具体的编码原理如下所示:将连续的8位数据分为高3位和低5位, 并在两组数据之中加1位控制数据, 从而组成一组10位数据, 解码过程中将这10位数据变换为Control+8bit信息, 正是因为这两位控制信息的存在, 使得USB3.0具有向下兼容的模式。USB3.0支持同步传输、块传输、中断传输及控制传输四种传输类型, 块传输之中具备超高速流模式。
二、系统硬件设计
本文设计的高速数据采集系统在工作的过程中, 首先等待与待采集信号对应的开关控制信号选通, 然后将其送入到信号调理电路模块中进行整形、滤波、去燥、去漂移等等处理, 处理完成之后送入到 A/D 转换器进行模数转换, 之后利用FPGA实现FX3 传输模块与采集模块的数据传输, 存储模块的数据经FX3提取采集之后通过高速传输模式可以传送给USB3.0接口, 最终完成整个数据采集传输的过程。实际的使用过程中, 首先通过USB接口将数据采集传输系统与计算机连接起来, 系统驱动初始化之后, 经由 I2C, FX3芯片可以获取到USB接口的固件程序, 芯片内部寄存器初始化之后, 将外围电路状态设置好, 上位机就能够识别数据采集及传输系统[2]。
本文设计的高速数据采集系统由硬件及软件两部分组成, 前端设计有信号调理模块、电源模块、数据采集模块、高速数据传输模块、控制模块及其他辅助功能模块组成。其中控制模块的核心是FPGA, 数据采集模块的核心是A/D转换器、高速数据传输模块的核心是USB。
为了实现数据的A/D 转换, 该采集系统之中共设计了3个16路模拟开关, 考虑到系统设计建设成本问题, 加上PCB成品本身体积不宜太大, 因此本次设计中引入多路复用开关, 采用分时复用的方法从而实现A/D 转换芯片共享。本次设计的采集电路一共能够采集48路不同频率的模拟信号, 这也需要引入多路开关。
ADG706芯片具有高精度、低功耗、高准确度的优点, 包含有单路16选1的多路选择器, 每一路开关之间切换的时间低至50ns。本文设计的数据采集通道一共有48路, 因此一共需要三片ADG706芯片。
开关外围电路连接图
采集及前段处理电路工作过程中, 首先将A3-A0 的状态送到地址总线, 让模拟开关的某一块使能端EN变为高电平之后, 选通一路模拟信号, 对这一路信号进行滤波降噪、分压、跟随处理之后, 送入A/D 转换芯片之后进行离散采样处理。
数据采集卡在采集数据的过程中, 采集量一般都是一些变化特别细微的非电平量或者电平量, 如果前期处理不当, 会影响数据采集的精度及准确度。因此本次设计时, 在数据采集模块加了一个信号调理电路群, 对48路采集输出信号进行放大、缓冲、滤波等处理。处理完成之后, 数据采集完成, 能够在计算机上将采集数据信息还原, 以供用户的分析利用。采集的数据信号经过信号调理电路之后, 经过稳压、滤波及降噪等处理, 信号的采集精度及准确度都明显提升。
模数转换器选择是整个数据采集系统设计的关键, A/D模数数据转换器选择时需要重点关注其转换精度、采样速度、通道数、输入电压范围、转换接口等等问题, 其中转换精度主要与系统被测信号的范围及系统要求总精度有关, 本系统精度要求为16位, 因此模数数据转换器选择16位的A/D芯片即可。系统的采样速度可以根据采样定理及最高采用速率来定, 本系统的最高采样率为120k Hz。此外, 为了满足高速的数据采集要求, 需要选择具有并行接口的A/D芯片。考虑到相关的技术指标及实际的应用需求, 本次设计中系统采集部分的核心器件是一种高速逐次逼近型A/D转换器。该A/D转换器支持8/6/4路同步采样输入, 使用过程中采用5单电源供电, 支持真双极性模拟输入电压, 所有的采样通道都能够以200k SPS的速率进行数据采用。同时该芯片内部自带一个高输入、低噪声的信号调理电路, 输入端集成了一个滤波器, 该滤波器具有40d B抗混叠抑制特性, 因此系统前段只需要设计一个一阶的低通滤波器, 配置一个电压跟随电路就能够将采样信号中的高频干扰过滤。
USB3.0接口本身具有电源电压供电的能力, 因此整个采集系统的硬件部分可以考虑采用USB3.0接口进行供电, 但该接口的标准电压为5V, 并不能完全满足所有模块的电压供给, 因此, 电源选择时需要考虑系统内部相关模块的电压需求及芯片过压保护及高压干扰等等问题。本次设计的采集电路的硬件部分外接了一个15V的电源电压, 为调理电路供电, 同时为了满足系统芯片的不同供电电压值要求, 系统设计时集成了一块电源电压管理芯片, 该芯片具有较强的电源管理的能力。
三、系统软件设计
信号采集传输系统的软件设计主要包括三部分内容, 即FPGA 驱动程序、FX3 固件程序及AD控制模块程序, 其中FPGA 内部结构的逻辑设计时需要将其划分为不同的模块, 分别进行erilog HDL编程, 各部分功能实现之后将其连接起来。
系统软件部分主要由USB接口控制器、数据控制器、PLL、A/D控制模块几部分组成。A/D控制主要通过对A/D芯片的功能管脚进行时钟控制完成, 该系统的时钟频率为50MHz。
A/D采集中首先对A/D芯片进行初始化, 初始化时启动A/D转换的片选信号CS、读信号RD、控制信号CVA/CVB, 将它们均置为高电平, 然后将控制信号CVA/CVB置为低电平一段时间后再置为高电平, 启动转换之后, 芯片会自动的将忙信号置为高电平, 3us左右, 如果忙信号持续置低, 说明此时模拟信号转换完成, 如果是高电平在在此等待。转换完成之后, 将读信号及片选信号拉为低电平, 过一段时间之后将读信号置为高电平, 此时数据信号线DB0~DB15上的数据即为第一通道数据, 然后将16个引脚的数据读回FPGA中, 实现一个通道数据的采集过程。第二个通道信号数据采集时, 首先将读信号置为低电平, 待第二个通道数字量送到AD数据信号线DB0~DB15上之后将读信号置为高电平, 然后将16个引脚的数据读回FPGA中, 第二个通道数据的采集完成, 此后其他6个通道数据采集按照这个过程进行。
USB接口控制程序开发时, USB设备的枚举、重枚举、初始化、电源管理、USB协议的实现等等工作均由固化程序完成。一般来说、固化程序可以存在于外扩的ROM或者芯片内部之中, 本次设计中主要将其存储在EEPROM中。EZ-USB FX3配置完成后, 芯片上电, 之后就能够顺利接收上位机发送的命令, 实现数据的超高速采集及传输。FX3固化程序可以完成应用程序的初始化参数配置、应用线程创建启动、错误处理、外部设备接口配置、DMA引擎配置、数据流设置等等功能。
结束语
本文就USB3.0进行了简单的介绍, 重点从硬件设计及软件设计两部分就基于USB3.0的高速信号采集系统的设计方法进行了分析探讨, 该采集系统将USB3.0与FPGA协议相结合, 能够实现高速率、高精度、高准确率的多通道数据采集传输。本文分析的内容比较简单, 希望能够为类似信号采集系统的设计工作提供参考。
摘要:信号采集系统是现代工业向自动化、智能化方向发展的产物之一, 目前已经广泛的应用于工业生产之中。USB接口具有性价比高、即插即用优点, 在数据传输领域优势明显, 本文主要将USB3.0与FPGA协议相结合, 开发出一套基于USB3.0接口的高速信号采集系统, 下文就该系统的设计流程进行简单的探讨分析。
关键词:USB接口,FPGA协议,高速信号采集系统
参考文献
[1]赵健博.基于FPGA和USB3.0的高速CMOS图像数据采集系统设计[D].吉林大学, 2015 (06) .
USB视频采集 第8篇
Cypress公司的EZ-USB系列芯片是使用的最为广泛的USB功能设备芯片, 它提供了强大的接口设计模式, 包括通用的I/O模式, 还有专门用于数据采集和批量传输的Slave FIFO模式、GPIF模式。本文主要介绍GPIF模式在USB数据采集系统中的应用。
1EZ-USB接口模式简介
EZ-USB系列芯片主要提供了3种接口设计模式:通用I/O模式、Slave FIFO模式、GPIF模式。
1.1 通用I/O模式
Cypress公司的EZ-USB系列芯片具有和一般的8051系列单片机相同的数据处理方式, 可以通过EZ-USB的CPU直接进行数据读取和发送, 但这种方式占有很多的CPU资源, 因而利用效率比较低。
1.2 Slave FIFO模式
EZ-USB芯片内部提供了多个FIFO缓冲区, Slave FIFO模式就是利用外部控制逻辑对这些端点FIFO缓冲区进行读操作或写操作。此时, USB主机和外部控制逻辑之间进行通讯, 不需要EZ-USB的CPU干涉, 因此CPU有很高的利用率。但它的缺点在于外部控制逻辑的控制频率对数据采集和传输的速度有一定影响, 同时也会因为增加外部控制逻辑而增加成本。
1.3 GPIF模式
相对于Slave FIFO的外部逻辑控制模式, GPIF模式是使用内部集成的高效控制逻辑来取代外部的微控制器进行EZ-USB端点FIFO的控制。使用GPIF模式, EZ-USB芯片可以达到96Mb/s的峰值传输速度, 且可以避免增加外部控制逻辑, 因此GPIF模式特别适用于需要高速数据采集传输的场合。
GPIF内核是一个可编程的状态机, EZ-USB使用波形描述符来控制状态机。GPIF共有4组波形描述符来实现用户所需的波形, 通常将这4种波形分别定义为单字节读、单字节写、FIFO读和FIFO写。通过GPIF的波形图设计便可以控制数据的传输方式。在数据采集中, EZ-USB需要使用FIFO读波形描述符来控制状态机, 从而实现操作。
图1为典型的FIFO读数据接口配置图。AD芯片将数据通过FD总线传送到FIFO端点, FIFO的每个端点有512B的缓冲区。数据缓冲到端点后, GPIF依据IFCLK时钟来进行数据读操作。在进行数据读的时候, 首先设置GPIFADR起始地址, 然后将缓冲区的数据读出到主机, 同时GPIFADR外部数据指针自动增加, 进入下一次数据读操作。当操作全部完成后, GPIF便进入空闲状态。
2GPIF接口模式在温度数据采集卡中的实际应用
2.1 GPIF接口模式温度数据采集卡的硬件实现
数据采集芯片使用高速多通道同步采集芯片MAX115实现。该芯片有2组4路同步通道, 共8个输入端。其采样精度为12位, 采样模式由采样控制字决定, 可灵活地在两组通道间选择。
USB功能设备芯片选用EZ-USB系列芯片的CY68013A, CY68013A采用GPIF接口模式与采集芯片进行连接, 见图2。此时CY68013A可以通过6个控制信号输出端 (CTL[5∶0]) 、6个外部状态信号输入端 (RDY[5∶0]) 、9位地址输出端 (GP IFADR[8∶0]) 以及16位双向数据总线 (FD[15∶0]) 与外围电路进行控制信息和数据信息的交换。在本系统中, 用CTL0接MAX115 的CONVST引脚, 用来控制芯片采集工作;用CTL1和CTL2分别接RD脚和WR脚, 控制对MAX115的读和写操作;用8位数据总线FD [7∶0]进行数据的传输。MAX115的采样基准时钟由CY7C68013的输出时钟经四分频得到, 为12MHz。
2.2 温度数据采集系统的程序设计
系统的程序包括固件程序、驱动程序和用户程序。下位机固件程序中的GPIF可编程控件代码负责处理PC机发来的各种USB设备请求, 并与外围电路进行数据交换。驱动程序加载相应的CY68013A设备配置信息。用户程序负责接收下位机传送的数据, 保存数据, 并对数据进行处理。
GPIF可编程控件控制方式根据波形图来设置, 其中依据IFCLK时钟来进行数据读操作。在需要进行数据读的时候, 首先设置GPIFADR起始地址, 然后便可以将FD总线上的数据读出, 同时外部数据指针自动增加, 进入下一次数据读操作。当操作全部完成后, GPIF便进入空闲状态。图3为典型的FIFO读数据波形图。
根据FIFO读数据波形图, 可以在GPIF Designer软件中进行FIFO读波形图编辑。当波形图设计完成后, 可以生成相应的波形描述符文件GPIF.c, 直接添加到固件程序中使用即可。
固件程序中还要应用Set-FLOWSTATE-Read () 函数读取USB端点数据, 函数代码如下:
void Setup-FLOWSTATE-Read (void)
{ FLOWSTATE=FlowStates[18];
SYNCDELAY; //同步延时
FLOWSTATE=FlowStates[20]; //CTL1/CTL2=0
SYNCDELAY;
FLOWSTATE=FlowStates[21]; //CTL1/CTL2=1
SYNCDELAY;}
上位机程序负责打开USB设备接口, 读取二进制数据, 并对已接受的二进制数据进行处理, 转换为温度数据。用户程序中读取数据并转换数据的部分程序主要由以下代码实现:
BOOL CUSBDlg∷EzusbShortdataIn (HANDLE hDevice, BYTE*data, DWORD &lenBytes)
{ BULK-TRANSFER-CONTROL bulkControl;
bulkControl.pipeNum=0x01;
BOOLEAN bResult=FALSE;
unsigned short temp, TempMax, TempMin, i;
bResult=DeviceIoControl (hDevice, IOCTL-EZUSB-BULK-READ, &bulkControl, sizeof (BULK-TRANSFER-CONTROL) , data, 8192, &lenBytes, NULL) ;
for (i=0;i< (unsigned int) (lenBytes/8) ;i++)
{temp=data[8*i]+ (data[8*i+1]&0x0f) *256;
if (temp>=2048) temp=temp&0x07ff; else temp=temp+2048;
m-PointList[countdata++].y=temp;
if (countdata>=256) countdata=0;}
return bResult;
}
3结束语
本例中EZ-USB芯片的GPIF接口模式温度数据采集卡在石油井下蒸汽温度采集应用中效果良好。使用GPIF模式, EZ-USB芯片可以达到96Mb/s的峰值传输速度, 且可以避免增加外部控制逻辑。由此可见, EZ-USB系列芯片的GPIF模式数据采集卡特别适用于需要高速数据采集传输的场合。
参考文献
[1]钱峰.EZ-USB FX2单片机原理、编程及应用[M].北京:北京航空航天大学出版社, 2006.
USB视频采集 第9篇
数据采集技术是以传感器、信号测量与处理、微型计算机等技术为基础而形成的一门综合应用技术, 主要研究信息数据的采集、存储、处理以及控制等, 涉及模拟信号调理、模拟信号数字化、数字信号处理等, 具有很强的实用性。
USB2.0具有快速、双向、大批量传输、廉价以及可实现热插拔等优点。Cypess公司推出的CY7C68013是业界最早符合USB2.0的微控制器, 其强大的数据传输能力使得其在相关领域有着广泛的应用。
此系统主要应用于传感器实验数据的传输, 对数据采样率要求不是很高, 而采集的电压幅度范围较宽, 故选择MAX197;选择USB接口的原因是USB具有热插拔和大批量数据传输等特性;经测试, 器件采样速率为91kSPS, 可以很好地应用于低速率模拟数据采样场合。
1 CY7C68013端点及SLAVE FIFO模式简介
1.1 端点
CY7C68013内部集成了4KB FIFO存储器, 内部定义了7个端点:EP0IN&OUT、EP1IN、EP1OUT、EP2、EP4、EP6、EP8。
EP0IN&OUT是控制端点, 64字节IN、OUT双向传输。当需要传输控制命令时, FX2固件读或写EP0。主机通过传输特殊的SETUPDAT八字节来控制FX2, 这些控制命令包括获取设备描述符、枚举、获取设备信息等等。这八字节通过EP0端点传输至FX2, FX2存储至片外寄存器 (SETUPDAT 0xE6B8-0xE6BF) , FX2响应八字节, 并把信息数据通过EP0反馈给主机。值得注意的是用户也可以在控制平台中自我设置八字节, FX2中再添加相应的响应函数VENDOR_CMD () 函数来反馈主机请求。
EP1IN、EP1OUT是64字节的端点, 主要用于小批量数据的传输。
EP2、EP4、EP6、EP8是大端点, 其中EP2、EP6是1024字节的端点, EP4、EP8是512字节的端点。这些端点主要用于大批量数据的高速传输。通过设置相应的寄存器可以控制端点传输方向, 端点缓冲倍数以及数据传输模式等参数。
1.2 SLAVE FIFO模式
SLEVE FIFO模式是一种高速模式, 无需要FX2内部CPU参与数据传输, 如下图:
IFCLK:时钟信号提供, 内部提供或者外部提供;
FLAGA、B、C、D:端点信息标志, 譬如端点满、空或可编程标志信号;
SLOE:FIFO读使能, 0有效, 当FIFO写时, 此位应设置为1;
SLRD:FIFO读时钟;
SLWR:FIFO写时钟, 异步模式时, SLWR上升沿写, 同步模式时, SLWR低电平写;
FD[15:0]:IOB[7:0]为总线, 通过设置内部寄存器可以使得IOD[7:0]复用为总线, 此时, 总线工作在16位模式;
FIFOADDR[1:0]:大端点选择, “00”、“01”、“10”、“11”分别对应EP2、EP4、EP6、EP8。
2 MAX197
MAX197是MAXIMUM公司推出的一款多电压输入范围 (±10V、±5V、0V~10V、0V~+5V) , 八通道的12位A/D器件。A/D转换时间6us, 采样率100KSPS, 2种节电模式, 内外采样模式、内外参考电压、内外时钟可选。本文选择内部基准和内部时钟模式。
当MAX197处于工作状态时, 通过改变内部控制字即可改变下一次A/D采样输入电压范围以及通道选择。其控制字结构如下:
PD1、PD0:时钟和工作模式 (Power down) 选择, 本文选择“01”, 即内部时钟。“00”外部时钟状态下工作, “10”表示标准节电模式, “11”表示完全节电模式。
AQMOD:0表示内部采样模式, 1表示外部采样模式, 前者在写入控制字, 即启动A/D转换后, 经过6个时钟周期的采样间隔, 开始A/D转换。后者写入采样控制字, 开始进入采样间隔, 当用户确定的转换时刻到来, 再写一次控制字, 这一次的AQMOD为0, MAX197立即开始A/D转换。本文选择前者。
RNG, BIP:量程选择, “00”0~5V“01”0~10V“10”-5V~+5V“11”-10V~+10V。
内部基准模式下, 基准电压分别为:4.096V, 8.192V, ±4.096V, ±8.192V。
A2、A1、A0:通道选择。
3 系统设计实现
本文通过CPLD状态机直接控制MAX197, 数据通过CPLD到FX2总线, 在SLAVE FIFO模式下进入主机, 并在主机上显示。同时通过在FX2的控制平台上设置SETUPDAT、SETUPDAT等信息来自增加控制命令, 并在FX2固件中修改相应的VENDOR_CMND () 函数响应主机命令, 来控制CPLD状态机, 修改MAX197控制字, 从而达到控制量程与通道的目的。
CPLD部分主要由MAX197控制器 (MAX197TEST0) 、控制接口模块 (SEL_WITH_PE) 以及MAX197控制字产生模块 (CTRWORD) 构成。
控制接口模块是由FX2管脚IOE[2:0]产生一个三线-八线译码器, 该编码器提供MAX197管脚SHDN信号和其他CPLD控制单元使能。
当Y[0]=0时, 通道命令D[2:0]=IOE[7:5];量程范围D[4:3] (即RNG, BIP) =IOE[4:3];另外MAX197工作在内部时钟启动模式下, 故PD1、PD0=“01”;AQMOD=0, 内部转换模式。因此, 当Y[0]=0时, MAX197内部控制字MAX197IN=“010”&Y[3:2]&IOE[7:5];而Y[0]=1时, 器件SHDN管脚为低, 即关闭器件供电。
现在只需要改变IOE管脚的输出即可控制MAX197工作模式, 而我们可以通过修改与CPLD相连的FX2固件程序来改变IOE状态。故我们现在通过修改用户命令SETUPDAT和SETIPDAT并在FX2固件中添加相应的响应命令就可以成功通过主机上的软件来控制MAX197的工作状态。
定义当SETUPDAT[1]=0x11时, IOE[2:0]=“000”, Y[0]=0, MAX197启动工作;设置IOE[7:0]=SETUPDAT[2]&&0xF8;因此, 设定单片机在接收到0x11命令时, IOE[2:0]=“000”;SE-TUPDAT就直接转换成了MAX197控制信号IOE[7:3] (IOE[7:5]:通道选择;IOE[4:3]:量程控制) , 从而达到了通过主机软件控制MAX197量程和通道的目的。
另外, MAX197控制器模块由两部分构成:MAX197TEST (状态机采样控制模块) , 和BIRDIO (双向口模块) 构成。
MAX197TEST模块是一个根据MAX197工作时序 (如图3所示) 设计的CPLD状态机。
根据时序我们设计状态机如下:
S0为初态;S1为选通MAX197以及写状态控制字状态, WR信号应保持适当的时间;
S2进入等待转换完毕 (INT=0) 状态, 若转换好则转至S3, 未则持续等待;S3起缓冲作用;之后直接进入S4状态即开始读使能信号RD, 当INT=1时, 跳转至S5;S5为取出低字节采样数据LOW BYTE;S6为取出高字节HIGH BYTE;最后进入一次采样结束阶段ST7, 并跳转至下一次采样开始S0。
由于要求输出MAX197内部状态控制字和输出12位数据的低字节和高字节, 因此我们分别设置在S2、S5和S7状态时SLAVE FIFO写时钟SLWR上升沿 (SLWR=1) 。
4 实验结果与分析
现在通过电源向MAX197通道7 (CH7) 输入0.9V电压 (用外用表测为0.870V) , 在量程为0~5V和0~10V下分别观察采样到的数据:
量程0~5V下:设置SETUPDAT[1]=0x11, 并设置SETUP-DAT[2]=0xE0, 即IOE=0xE0。IOE[2:0]=“000”, MAX197启动工作;通道选择IOE[7:5]=“111”, 即通道7;IOE[4:3]=“00”, 量程选择为0~5V。在FX2控制面板中:Vend Req中填写0x11命令, Value中填写0x00E0, 得到的数据如图5所示:
如上图, 最左边部分对应的是输入电脑数据的地址, 右边对应的是输入数据。此时, 通过公式MAX197IN=“010”&IOE[4:3]&IOE[7:5], 得出MAX197控制字MAX197IN=0x47, 即每一组数据中的第一个字节为0x47, 通过上图观察验证了结果正确。第二个字节LOW BYTE=0x63, 第三个字节为HIGH BYTE=0x03, 高低字节转换成10进制数为866, 量程0~5V模式下, 1LSB=4.096V/4096, 因此得到的数据值DATA=866*4.096V/4096=0.866V。
0~10V下:设置SETUPDAT[1]=0x11, SETUPDAT[2]=0xE8。通道选择IOE[7:5]=“111”, 即通道7;IOE[4:3]=“01”, 量程0~10V;即, 得到的数据如图6所示:
此时, 控制字通过公式计算为0x57, 与传输进入电脑的数据相符;低字节LOW BYTE=0xAF, 高字节HIGH BYTE=0x01, 高低字节转换成十进制数为431, 量程0~10V下, 1LSB=2*4.096V/4096, 因此得到的数据值DATA=431*2mV=0.862V。
通过通道7上两种量程下的数据, 我们可以看出通过FX2配套软件CONTROL PANNEL可以很好地控制MAX197的量程与通道, 并完成了数据传输, 达到了预期目标。另外通过示波器观察MAX197 INT管脚波形, 转换大概在91kSPS左右, 每个点传3个字节 (高, 低, 状态字节) , 大概数据流速度为270KB/S, 虽讲速度较低, 但是能够满足传感器数据要求, 为传感器实验装置打下了良好的基础。
参考文献
[1]林刚勇, 马善农, 许邦莲.CY7C68013在数据传输中的应用[J].微计算机信息, 2007 (29) .