0 引言
随着信息技术的迅速发展,数据采集和处理技术广泛应用于雷达、通信、遥测、遥感等领域。而在早期的计算机系统上通常使用串口或并口来发送数据,每个接口都需要占用计算机内部很多的资源,传统的接口一般采用PCI总线或RS-232串行总线。PCI总线有较高的传输速率,可达132 Mbit/s,也可以即插即用,但是它们的扩充槽有限且插拔不方便;RS-232串行总线连接比较方便,但是传输速率太慢,不易用于高速传送数据和传送大量数据。USB(通用串行总线)集中了PCI和RS-232串行总线的优点,具有方便的即插即用和热插拔特性以及较高的传输速率,因此,将USB技术应用于数据采集是非常合适的,可以达到数据采集系统的高速度处理。目前,USB已经推出了其协议的2.0版本,速率高达480 Mbit/s。
本文研发了一套基于USB接口的数据采集系统,整个系统的设计涉及到硬件、设备固件(Firmware)、USB设备驱动程序及客户应用软件。下面分别加以说明。
1 USB接口芯片
本文介绍的USB数据采集系统采用了Cypress公司EZ-USB FX2系列的CY7C68013-128AC芯片,它同时集成了8051微控制器和USB2.0收发器,在提高集成度的同时也加快了数据传输的速度。在系统中,CY7C68013-128AC既是数据采集控制器又是USB控制器,EZ-USB FX2系列有3种型号:CY7C68013-56PVC、CY7C68013-100AC、CY7C68013-128AC。该系列的芯片都是针对USB2.0的,并且与USB1.1兼容。其中,CY7C68013-128AC是128脚,TPQF封装,功能非常完善,与另外两种相比,主要是增加了16位地址总线和8位数据总线以及更多的IO口,因此,CY7C68013-128AC的可扩展性最好。图1是该芯片的内部结构图。
2 USB的固件和驱动程序设计
2.1固件
固件是储存在程序内存中的代码,它使得USB接口芯片与主机和外设中其他电路能够通信。Cypress公司给出了一个固件库和固件框架(Frame Works),均是用Keil C51开发的。固件库提供了一些常量、数据结构、宏、函数来简化用户对芯片的使用;固件框架实现了初始化芯片、处理USB标准设备请求以及挂起状态下的电源管理等功能。该框架不添加任何代码,编码后产生的.HEX文件载入芯片就能与主机进行基本的USB通信,只是不能完成特定的任务。对于用户而言,主要的工作就是选择适当的传输方式,添加需要使用的端点(Endpoint),考虑到本系统要求实现一定数量数据的快速采集,并要迅速地将采集到的数据传输和进行分析处理,并且对数据的完整性要求较高,我们采用了块传输方式(Bulk Transfers),在TD-Init()函数中添加初始化代码,亦即选择块传输方式和选择端点2、6分别为输出、输入端口,在TD-Poll()函数中添加功能代码,以实现发送和接收数据功能,关键代码分别如下:
2.2 USB设备驱动程序
USB设备驱动程序主要是使操作系统能够识别USB设备,建立起主机端与设备端之间的通信,它们之间的通信是通过Windows提供的API函数实现的,这些函数可以控制显示器、处理信息、访问存储器、读写磁盘和其他设备。
图2是USB设备驱动程序的整体结构图。
USB设备驱动的整体结构包括如下5个主要部分:USB应用程序接口、USB设备驱动函数、USB中断服务程序、USB回调接口程序、USB标准事件处理程序。
2.2.1 USB应用程序接口
USB应用程序接口主要功能是对USB驱动器进行软硬件初始化、打开端口、关闭端口、读端口、写端口和端口控制操作。当设备驱动器装入系统设备表时,I/O系统就调用该应用程序接口。
USB应用程序接口的一个例程主要包含:
a)对USB端口安装、初始化和硬件配置(USB_init())。初始化步骤为:将USB设备驱动器安装到I/O系统设备表中,获取USB控制器使用的中断号,初始化USB驱动器数据结构与USB端口状态寄存器,启动USB标准事件处理程序。
b)打开USB端口(USB_open())。USB_open函数允许应用程序打开一个USB端口和选择DMA数据传输方式。
c)关闭USB端口(USB_close())。USB_close函数允许应用程序关闭一个端口,并关闭DMA通道。
d)对USB端口进行读操作(USB_read())。USB_read函数允许应用程序从输出端口或控制端口读取一定量的数据。
e)对USB端口进行写操作(USB_write())。USB_write函数与USB_read函数功能类似,允许应用程序写数据到输入端口或控制端口。
f)对USB设备进行I/O控制操作(USB_ioctl())。
2.2.2 USB中断服务程序
USB控制器产生单一中断,多个端口共享。每个端口产生ACK、NACK/ERROR中断;输出端口产生接收零字节包或短包中断;控制端口0接收设置包时产生中断;USB控制器产生USB事件中断,如帧起始(SOF)、挂起、恢复和复位。先识别发生USB中断的类型以清除中断产生的条件,再读USB状态寄存器,获取当前配置、接口或帧起始时间戳状态信息,最后向USB控制器消息队列或回调函数的接收消息队列发送中断消息。
关键字:USB接口 通信程序
引用地址:
基于VC的USB接口通信程序设计
推荐阅读最新更新时间:2024-05-02 21:32
基于USB的ARM仿真器的研究与设计
基于JTAG仿真器的调试是目前ARM开发中采用最多的一种方式。大多数ARM设计采用了片上JTAG接口,并将其作为测试、调试方法的重要组成。JTAG仿真器通过ARM芯片的JTAG边界扫描口与ARM CPU核通信,实现了完全非插入式调试,不使用片上资源,不需要目标存储器,不占用目标系统的任何端口。由于JTAG调试的目标程序是在目标板上执行,使得仿真更加接近于目标硬件 。
目前针对嵌入式系统开发的调试工具品种繁多,如ARM公司的AXD debugger软件与Mutil-ICE仿真器等。但是大部分嵌入式调试工具价格过高,因此设计实现一种速度快、性能稳定、价格低廉、易于实现的ARM调试工具是十分必要的。
1 ARM
[嵌入式]
基于USB接口的探地雷达数据采集系统
1 引 言
探地雷达( ground penetrating radar,GPR)是一种新型的电磁探测设备,它具有快速、简便的对浅层目标和结构进行无损探测的特点,也是目前分辨率、效率最高的地下目标探测设备之一,因此被广泛的应用于城建、交通、地质、考古、国防等部门。在探地雷达的应用中,能否准确、高效地采集数据是探地雷达系统实用性和可靠性的判据之一。数据采集的准确性直接关系到探测目标的准确性和雷达数据的进一步处理工作;采集数据的速度关系到系统能否实现实时显示。所以,当雷达设备将采集数据传回主机时,就需要选择一种接口来实现数据准确、高速的传输。
传统的数据采集系统的数据传输接口在低速时常采用标准串行口或并行口,高速
[嵌入式]
基于单片机和CH371USB接口芯片实现虚拟示波器的设计
一、引言 对于学校教学实验以及某些特定需求来说,目前市场上的模拟及也许并不适用,价格高昂、体积较大且很多专业功能并不实用。而现在电脑的普及程度也达到了相当的规模,利用电脑以及附加的数采模块实现一个灵活便捷的能够满足大多数的工作、学习和开发需要,并且可以通过较低代价的硬件和软件升级实现相当复杂的信号处理功能,能够以较低的成本、较小的体积实现配置灵活的智能仪器组合;完全可以与便携电脑结合,构成便携式检测维修工作站。目前已经有计算机并口通信的数据采集器,但是USB的应用日趋广泛和深入,如果将USB功能融合在里面则可以实现更高的数据传输率、更方便的使用方式,更为优越的体现出的性能。 二、 此虚拟的数据采集器由以下功能模块组成:前端信号
[单片机]
基于TMS320VC5510的低功耗加密型语音硬件平台的设计与实现
高质量、低速率的语音编码算法在现代通讯系统中地位越来越重要,被广泛应用于诸如IP电话、语音信箱、军事无线通讯等领域。特别是在一些特殊的应用领域,信道带宽很窄而且误码率较高,要在这种信道上实现语音通讯,低速和甚低速语音压缩编码技术是关键。以前由于硬件条件的限制,此类的低速率复杂编解码算法往往只能停留在原理和计算机实现阶段。近些年来,由于VLSI技术的蓬勃发展,尤其是高性能数字信号处理芯片的DSP的普及,这些编码算法开始大规模的运用到了现实领域。本次设计就是为这套军用语音编码算法标准设计一个通用编解码平台。该平台已经做为嵌入式低功耗语音模块,应用到语音编码和语音合成等领域,并已小规模量产。 1. 语音硬件平台的总体介绍和
[嵌入式]
基于USB接口的数据采集与控制系统设计综合
1 系统结构 利用ADuC845单片数据采集器件和CH341 USB接口器件构成的数据采集与控制系统的框图如图1所示。ADuC845完成模拟量数据采集、开关量的输入输出、控制电压和PWM控制信号输出,CH341USB接口器件完成PC机与ADuC845的数据传输。 ADuC845中的数据打包后经USB器件传送至PC机,利用 PC机的数据处理程序完成数据处理与分析,并将其显示在所设计的系统界面上。同时,将控制命令通过USB接口传送至ADuC845,实现对外围设备的控制。 2 USB通信接口电路 USB通信接口电路采用CH341器件,图2为其电路。图2中,P3是USB端口,USB总线
[测试测量]
Contiki移植到STM32F103VC
Contiki官网下载V2.5源码http://www.contiki-os.org/ contiki-2.5源码中,stm32移植的相关内容分散在两个文件夹中,第一, cpu\arm\stm32f103,这个文件夹存放的stm32移植的相关文件;第二,platform\stm32test,这个文件夹中有一个不是那么完整的例子。 在Contiki-2.5源码文件夹下用到的有:\core\sys\下面所有文件,\cpu\arm\stm32f103\clock.c文件主要修改,\platform\stm32test\contiki-conf.h文件。 STM32工程下主要用到的文件:core_cm3.c,system_stm3
[单片机]
msp430g2553与串口通信的驱动程序
#include uart.h #include msp430g2553.h #include typedef.h rece_data uart_buf; //串口缓冲区 void init_uart_buf(void) { uart_buf.head = 0; uart_buf.tail = uart_buf.head; } //获取串口数据 u8 get_uart_data(u8* data) { if(uart_buf.tail == uart_buf.head) { return 0; } *data = uart_buf.buf ; uart
[单片机]
基于VC++雷达信号系统软件测试平台的设计
随着电子计算机技术及电子设备的飞速发展,人们对数据的处理容量、处理速度以及工作平台的实时监控等性能的要求越来越高,从而使得高速、便捷、智能化的高性能数字处理设备成为当今电子设备的发展趋势。 由于一些气象雷达站一般地处环境与气候恶劣的偏远地区。雷达站内雷达信号处理系统的检测与维修存在一定的难度。当系统出现故障要进行检修时,由于地理环境的限制,检修在时间上会有一定的拖延,人们希望对于非硬件电路损坏的故障,能够通过软件平台进行监控,并通过软件来及时对系统进行维护与系统恢复。该软件设计的目的就是为了避开雷达系统存在着一定的机械性和不方便性的缺点来完善该雷达信号处理系统。该软件利用VC++的友好界面来实现PC机、DSP、HSP(硬件信
[测试测量]