基于USB总线通信数据采集器的设计与实现

时间:2023年04月10日

/

来源:玛丽

/

编辑:本站小编

收藏本文

下载本文

以下是小编为大家准备的基于USB总线通信数据采集器的设计与实现,本文共8篇,仅供参考,欢迎大家阅读。本文原稿由网友“玛丽”提供。

篇1:基于USB总线通信数据采集器的设计与实现

基于USB总线通信数据采集器的设计与实现

提出了一个基于USB接口芯片PDIUSBD12的智能通信数据采集器的设计与实现方法.该方法利用了USB总线的高带宽、使用方便、易扩展等优点,并采用了智能的'协议识别技术,使通信数据采集器可以独立完成通信、数据采集的任务,从而将计算机从繁重的通信采集工作中解放出来,进而可大大提高计算机采集与监控系统的效率.

作 者:王敏 李晓明 Wang Min Li Xiaoming  作者单位:武汉大学 刊 名:电气传动  ISTIC PKU英文刊名:ELECTRIC DRIVE 年,卷(期): 35(7) 分类号:V4 关键词:通用串行总线(USB)   智能识别   通信数据采集  

篇2:基于USB总线的实时数据采集系统设计与实现

基于USB总线的实时数据采集系统设计与实现

摘要:介绍了基于USB总线的实时数据采集系统的USB设备固件程序、驱动程序、应用程序的设计与具体实现。

关键词:通用串行总线 实时数据采集 设备固件 驱动程序

在现代工业生产和科学技术研究的各行业中,通常需要对各种数据进行采集。目前通用的通过数据采集板卡采集的方法存在着以下缺点:安装麻烦,易受机箱内环境的干扰而导致采集数据的失真?熏易受计算机插槽数量和地址、中断资源的限制,(本网网收集整理)可扩展性差。而通用串行总线USB(Universal Serial Bus)的出现,很好地解决了上述问题,很容易实现便捷、低成本、易扩展、高可靠性的数据采集,代表了现代数据采集系统的发展趋势。

1 系统硬件设计与实现

1.1 硬件总体结构

基于USB总线的实时数据采集系统硬件组成包括模拟开关、A/D转换器、单片机、USB接口芯片,其硬件总体结构如图1所示。多路模拟信号经过模拟开关传到A/D转换器转换为数字信号?熏单片机控制采集,USB接口芯片存储采集到的数据并将其上传至PC,同时也接收PC机USB控制器的控制信息。

1.2 PDIUSBD12芯片

USB接口芯片采用Philips公司的一种专用芯片PDIUSBD12(以下简称D12)。该芯片完全符合USB1.1规范,集成了SIE、320B的多配置FIFO存储器、收发器、电压调整器、SoftConnect、GoodLink、可编程时钟输出、低频晶振和终端电阻等,支持双电压工作、完全自动DMA 操作、多中断模式,内部结构如图2所示。

单片机通过8位并行接口传送经过A/D转换的采集数据,存储在FIFO存储器中。一旦存满,串行接口引擎SIE立刻对数据进行处理,包括同步模式识别、并/串转换、位填充/不填充、CRC校验、PID确认、地址识别以及握手鉴定,处理完毕后数据由模拟收/发器通过D+、D-发送至PC。上述过程遵循USB1.1协议。D12与89C51的具体实现电路如图3所示。

2 系统软件设计与实现

系统软件包括USB设备固件编程、驱动程序和应用程序。其中设备固件是整个系统的核心,它控制芯片D12采集数据、接收并处理USB驱动程序的请求和应用程序的控制指令。

2.1 USB设备固件程序设计与实现

设备固件是设备运行的核心,用C语言设计。其主要功能是控制A/D模块的数据采集;接收并处理驱动程序的请求,如请求描述符、请求或设置设备状态、请求设备设置、请求或设置设备接口等USB1.1标准请求;控制芯片D12接收应用程序的控制指令等。其程序主框图如图4所示。单片机检测到D12后进入主循环。此时PC机先发令牌包给D12,D12接收到令牌包后给单片机发中断,单片机据中断类型设定标志位Status;最后执行相应标志位的中断服务程序。单片机通过A/D模块的中断入口控制A/D模块的数据采集。

2.2 驱动程序设计与实现

USB系统驱动程序采用分层结构模型:较高级的USB设备驱动程序和较低级的USB函数层。其中USB函数层由通用串行总线驱动程序模块(USBD)和主控制器驱动程序模块(HCD)组成。

图3 PDIUSBD12与89C51的具体实现电路

为使驱动程序具有通用性,也为简化应用程序的'开发,编写了供应用程序调用的动态链接库。这样应用程序只需调用此库提供的接口函数即可完成对USB设备的操作。USB函数层(USBD及HCD)由Windows98提供,负责管理USB设备驱动程序与USB控制器之间的通信、加载及卸载USB驱动程序等。目前Windows98提供的多种USB设备驱动程序并不针对实时数据采集设备,因此采用DDK开发工具设计专用的设备驱动程序。其由四个模块组成:初始化模块、即插即用管理模块、电源管理模块以及I/O功能实现模块。

初始化模块提供一个DriverEntry入口点执行一系列的初始化过程。

即插即用管理模块实现USB设备的热插拔及动态配置。当Windows98检测到USB设备接入时,查找相应的驱动程序,并调用它的DriverEntry例程,PnP管理器调用驱动程序的AddDevice例程,告诉它添加了一个设备;然后驱动程序为USB设备建立一个功能设备对象。在此过程中,驱动程序收到一个IRP_MN_START_DEVICE的IRP,包括设备分配的资源

信息。至此,设备被正确配置,驱动程序开始与硬件进行对话。电源管理模块负责设备的挂起与唤醒。

I/O功能实现模块完成I/O请求的大部分工作。当动态链接库提出I/O请求时调用Win32API函数DeviceToControl向设备发出命令;然后由I/O管理器构造一个IRP并设置其MajorFunction域为IRP_MJ_DEVICE_CONTROL。USB设备驱动程序收到该IRP后取出其中的控制码,并利用一个开关语句找到对应的例程入口。

2.3 应用程序设计与实现

应用程序采用Visual Basic6.0编写。由于其只需调用动态链接库,故开发较简单。主要功能包括检测USB设备、开启/关闭USB设备、设置A/D状态和数据采集端口、显示并分析实时采集的数据。主框图如图5所示。

由于D12的端点1的FIFO为16字节,端点2的FIFO为64字节,当缓冲区存满后自动将数据打包,由SIE自动发送数据包。程序获得数据包后需延迟至下组数据包准备完毕,从而保证程序与数据采集同步。另外程序还发出停止采集和关闭USB设备的命令。

3 系统特点

基于USB总线的实时数据采集系统严格遵循USB1.1协议,有以下特点:

(1)易于扩展。最长传输距离5m,采用USBHub可达30m;最多可同时接127个设备。

(2)电磁干扰影响极小。本系统放置在计算机外部,不受板卡间的电磁干扰影响;若在电磁干扰极强的环境下工作,需专门为其设计电磁屏蔽方案。

(3)安装方便,支持即插即用。克服了以往数据采集板卡需要打开机箱的麻烦。

(4)性价比高,远优于传统的实时数据采集系统。

(5)实时采集,实时显示

篇3:基于USB总线的实时数据采集系统设计与实现

基于USB总线的实时数据采集系统设计与实现

摘要:介绍了基于USB总线的实时数据采集系统的USB设备固件程序、驱动程序、应用程序的设计与具体实现。

关键词:通用串行总线 实时数据采集 设备固件 驱动程序

在现代工业生产和科学技术研究的各行业中,通常需要对各种数据进行采集。目前通用的通过数据采集板卡采集的方法存在着以下缺点:安装麻烦,易受机箱内环境的干扰而导致采集数据的失真?熏易受计算机插槽数量和地址、中断资源的`限制,可扩展性差。而通用串行总线USB(Universal Serial Bus)的出现,很好地解决了上述问题,很容易实现便捷、低成本、易扩展、高可靠性的数据采集,代表了现代数据采集系统的发展趋势。

1 系统硬件设计与实现

1.1 硬件总体结构

基于USB总线的实时数据采集系统硬件组成包括模拟开关、A/D转换器、单片机、USB接口芯片,其硬件总体结构如图1所示。多路模拟信号经过模拟开关传到A/D转换器转换为数字信号?熏单片机控制采集,USB接口芯片存储采集到的数据并将其上传至PC,同时也接收PC机USB控制器的控制信息。

1.2 PDIUSBD12芯片

USB接口芯片采用Philips公司的一种专用芯片PDIUSBD12(以下简称D12)。该芯片完全符合USB1.1规范,集成了SIE、320B的多配置FIFO存储器、收发器、电压调整器、SoftConnect、GoodLink、可编程时钟输出、低频晶振和终端电阻等,支持双电压工作、完全自动DMA 操作、多中断模式,内部结构如图2所示。

单片机通过8位并行接口传送经过A/D转换的采集数据,存储在FIFO存储器中。一旦存满,串行接口引擎SIE立刻对数据进行处理,包括同步模式识别、并/串转换、位填充/不填充、CRC校验、PID确认、地址识别以及握手鉴定,处理完毕后数据由模拟收/发器通过D+、D-发送至PC。上述过程遵循USB1.1协议。D12与89C51的具体实现电路如图3所示。

2 系统软件设计与实现

系统软件包括USB设备固件编程、驱动程序和应用程序。其中设备固件是整个系统的核心,它控制芯片D12采集数据、接收并处理USB驱动程序的请求和应用程序的控制指令。

2.1 USB设备固件程序设计与实现

设备固件是设备运行的核心,用C语言设计。其主要功能是控制A/D模块的数据采集;接收并处理驱动程序的请求,如请求描述符、请求或设置设备状态、请求设备设置、请求或设置设备接口等USB1.1标准请求;控制芯片D12接收应用程序的控制指令等。其程序主框图如图4所示。单片机检测到D12后进入主循环。此时PC机先发令牌包给D12,D12接收到令牌包后给单片机发中断,单片机据中断类型设定标志位Status;最后执行相应标志位的中断服务程序。单片机通过A/D模块的中断入口控制A/D模块的数据采集。

[1] [2] [3]

篇4:基于PCI总线的多路数据总线接口设计与实现

基于PCI总线的多路数据总线接口设计与实现

提出了一种主处理机可以直接控制的1553B总线接口模块的设计与实现方案,并简要介绍了其硬件结构、工作过程和软件开发.利用PCI协议芯片实现PCI局部总线与军用1553B总线的.桥接,采用WDM技术编写驱动程序.所设计的总线接口模块符合MIL-STD-1553B总线标准,具有结构简单、成本低廉、操作方便等特点,可用于仿真,开发1553B总线产品.

作 者:张伟 吴勇 ZHANG Wei WU Yong  作者单位:西北工业大学,陕西,西安,710072 刊 名:火力与指挥控制  ISTIC PKU英文刊名:FIRE CONTROL AND COMMAND CONTROL 年,卷(期): 32(1) 分类号:V247.1 V247.1+9 关键词:1553B   总线接口   开放式体系结构  

篇5:USB接口的高速数据采集卡的设计与实现

摘要:讨论了基于USB接口的高速数据采集卡的实现。该系统采用TI公司的TUSB3210芯片作为USB通信及主控芯片,完全符合USB1.1协议,是一种新型的数据采集卡。

关键词:USB A/D FIFO 固件

现代工业生产和科学研究对数据采集的要求日益提高,在瞬态信号测量、图像处理等一些高速、高精度的测量中,需要进行高速数据采集。现在通用的高速数据采集卡一般多是PCI卡或ISA卡,存在以下缺点:安装麻烦;价格昂贵;受计算机插槽数量、地址、中断资源限制,可扩展性差;在一些电磁干扰性强的测试现场,无法专门对其做电磁屏蔽,导致采集的数据失真。

通用串行总线USB是1995年康柏、微软、IBM、DEC等公司为解决传统总线不足而推广的一种新型的通信标准。该总线接口具有安装方便、高带宽、易于扩展等优点,已逐渐成为现代数据传输的发展趋势。基于USB的高速数据采集卡充分利用USB总线的上述优点,有效解决了传统高速数据采集卡的缺陷。

1 USB数据采集卡原理

1.1 USB简介

通用串行总线适用于净USB外围设备连接到主机上,通过PCI总线与PC内部的系统总线连接,实现数据传送。同时USB又是一种通信协议,支持主系统与其外设之间的数据传送。USB器件支持热插拔,可以即插即用。USB1.1支持两种传输速度,既低速1.5Mbps和高速12Mbps,在USB2.0中其速度提高到480Mbps。USB具有四种传输方式,既控制方式(Control mode)、中断传输方式(Interrupt mode)、批量传输方式(Bulk mode)和等时传输方式(Iochronous mode)。

考虑到USB传输速度较高,如果用只实现USB接口的芯片外加普通控制器(如8051),其处理速度就会很慢而达不到USB传输的要求;如果采用高速微处理器(如DSP),虽然满足了USB传输速率,但成本较高。所以选择了TI公司内置USB接口的微控制器芯片TUSB3210,开发了具有USB接口的高速数据采集卡。

1.2 系统原理图

系统原理图如图1所示。

(本网网收集整理)

整个系统以TUSB3210为核心,负责启动A/D转换,控制FIFO的读写及采样频率的设定,与主机之间的通信及数据传输。

2 USB数据采集卡硬件

2.1 TUSB3210芯片

TUSB3210是TI公司推出的内嵌8052内核并带有USB接口的微控制器芯片。TUSB3210有256字节的内部RAM,8K字节的程序RAM,512字节的USB数据缓冲和端点描述块EDB(Endpoint Descriptor Blocks),4个通用的GPIO端口P0、P1、P2、P3,I2C接口电路,看门狗电路等。

TUSB3210的USB接口符合USB1.1协议,有4个输入端点(Input Endpoint)和4个输出端点(Output End-Point),支持全速和低速传输速率,并具有USB协议所规定的4种传输方式。TUSB3210的USB接口采用串行接口引擎(SIE)编码和解码串行数据,并且进行校验、位填充,执行USB所需要的其他信号。这样采用硬件完成USB协议,简化了固件代码的编制。

TUSB3210采用基于内部RAM的解决方案,允许通过I2C总线从串行EEPROM中读入固件或从主机中下载固件程序。这项功能便于设备的开发与在线升级。

2.2 A/D芯片MAX1449

MAX1449是MAXIM公司生产的10位、105MSPS、单3.3V电源、低功耗的高速A/D芯片。它采用差分输入,带有高宽带采样/保持(T/H)的10阶段流水线(pipeline)型结构的ADC,如图2。采样信号每半个时钟周期通过一个流水线段,完成连续转换到数据输出共需5.5个时钟周期。每个流水线首先通过一个1.5位的闪速ADC对输入电压量化,由DAC产生一个对应于量化结果的电压并与输入电压作差,输出电压放大2倍后送到下一级流水线处理。每级流水线提供1位的分辨率,并进行差错校正,得到良好的线性和低失调。

MAX1449提供一个2.048V的精确带隙基准源,用来设定ADC满量程范围,也可以用外部基准源改变量程范围。MAX1449的最大差分输入电压范围为2V。

2.3 输入信号处理电路

MAX1449芯片的输入信号为差分输入时有最佳的采样效果。在本系统中用TI的HTS4503作为单端输入到差分输出的转换电路。THS4503高性能的全差分运放,带宽可达270MHz,具有非常好的线性,在100MHz下可支持11位的A/D转换要求,适合作为A/D变换的前端接口电路。具体电路见图3所示。

2.4 FIFO和时钟发生电路

高速A/D变换的数据不能直接通过USB送入主机,系统中通过FIFO来缓冲数据。本系统采用TI公司SN74V293芯片。它的容量为65536×18或131072×9,最快读写周期为6ns,可以满足100MHz采样数据的存储。用户可以选择输入、输出宽度,当选择输入、输出宽度为18时,可存储64K×10位的数据。如果选择输入、输出为9位,则可使存储容量扩大到128×9位,这样对精度要求不高的用户可以获得更多数据。

SN74V293有独立的读写时钟控制电路,允许读写操作同时进行。SN74V293内部有满、空、半满输出信号以及可编程设定的几乎满和几乎空输出信号,通过这些信号控制器可以灵活控制FIFO的读写操作。

对于高速数据采集系统,时钟信号很重要。在本系统中选用DALLAS公司的DS1073时钟芯片。DS1073是无需外部元件的频率振荡器。通过DALLAS独有的1-wire技术,可以设定内部的分频器数值,实现输出频率从27.3kHz~100MHz可调,从而方便地改变采样时钟,简化电路设计。MAX1449数据输出时下降沿有效,而FIFO写入时上升沿锁存数据。系统中采用DS90LC028A实现对时钟信号的取反。

2.5 PCB板制作

由于是高速A/D采集,在制作PCB板时有一些需要注意的地方。电路板最好使用多层板,元件尽量选用表面封装器件。这样可以减小元器件之间的距离,减小寄生电感、寄生电容,同时减小电路板的'尺寸。所有的旁路电容都要尽量靠近芯片的电源管脚。模拟公共地和数字公共地要分开,选一点通过低值表贴电阻(1~5Ω)、磁珠或直接连接,以免数字地电流干扰模拟地。电源最好用线性稳压电源,A/D和前端处理电路要用同一电源地输出,减小电源波动对采集的影响。

篇6:USB接口的高速数据采集卡的设计与实现

开发一个USB设备,软件设计是必不可少的。USB应用系统软件设计分为三部分:USB外设端的固件(Firmware)、主机操作系统上的客户驱动程序以及主机应用软件。主机应用软件通过客户驱动程序与系统USBI(USB Device Interface)进行通信,由系统产生USB数据的传送动作;固件则响应各种来自系统的USB标准请求,完成各种数据的交换工作和事件处理。

3.1 USB接口编程

固件程序主要是实现USB通信。TUSB3210采用SIE来管理USB通信。当主机与芯片进行USB通信时,会产生外部中断0,通过中断矢量寄存器判断。Setup_packed_Int、Input_endpoint0_Int、Output_endpoint0_Int这三个中断主要用于与主机建立连接、进行控制传输或中断传输;Input_endpoint1_Int、Output_endpoint1_Int这两个中断主要在批量传输时使用。在固件中分别执行不同的中断程序来实现USB的数据传输。

Void EX0_int(void) interrupt 0 //外部中断0

{

EA=DISABLE; //关中断

switch (bBECINT)(//确定中断ID

case VECINT_OUTPUT_ENDPOINT0:

bVECFINT=0x00;

Ep0QutputInterruptHandler;

break;

case VECINT_INPUT_ENDPOINT0:

bBECINT=0x00;

Ep0InputInterruptHandler();

break;

case VECINT_OUTPUT_ENDPOINT1:

bVECINT=0x00;

Ep 1 OutputInterruptHandler();

Break;

case VECINT_INPUT_ENDPOINT1:

bVECINT=0x00;

Ep1Inpu

tInterruptHandler();

break;

case VECINT_SETUP_PACKET_RECEIVED:

SetupPacketInterruptHandler();

bUSBSTA=USBSTA_SETUP;

bVECINT=0x00;

break;

default:break; //不知道中断ID

EA=ENABLE; //开中断

}

3.2 主机软件设计

笔者首先开发TUSB3210在主机中的驱动程序。用WinDK3.0开发了Win下的驱动程序,实现了控制传输、中断传输和批传输的标准接口函数。

在应用程序开发中,可用VC++编制应用程序。可以把USB设备当成文件来操作,利用CreateFile得到USB句柄,用DeviceIoControl来进行控制传输,用ReadFile、WriteFile进行批量传输。程序实例如下:

HANDLE m_hUsbSample; //USB句柄

m_hUsbSample=CreateFile(\\\\.\\USBSampl0,GENERIC_READ|

GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULI,OPEN_EXISTING,0,NULL); //打开USB句柄

DeviceIoControl(m_hUsbSample,IOCTL_USBSAMPL_REBOOT, NULL,0,NULL,0,&length,NULL); //控制传输

WriteFile(m_hUsbSample,pBuffer,writelength,&writelength,NULL); //批量输出传输

ReadFile(m_hUsbSample,pBuffer,64,&lgngth,NULL); //批量输入传输

CloseHandle(m_hUsbSample); //关闭USB句柄

使用上述函数编制USB高速数据采集卡的主机软件。

通过以上设计实现了基于USB数据采集卡的基本功能。但还有一些如信号的触发、事件的捕获功能还需完善;需开发基于USB2.0的系统,进一步提高数据传输的速率。

篇7:USB接口的高速数据采集卡的设计与实现

USB接口的高速数据采集卡的设计与实现

摘要:讨论了基于USB接口的高速数据采集卡的实现。该系统采用TI公司的TUSB3210芯片作为USB通信及主控芯片,完全符合USB1.1协议,是一种新型的数据采集卡。

关键词:USB A/D FIFO 固件

现代工业生产和科学研究对数据采集的要求日益提高,在瞬态信号测量、图像处理等一些高速、高精度的测量中,需要进行高速数据采集。现在通用的高速数据采集卡一般多是PCI卡或ISA卡,存在以下缺点:安装麻烦;价格昂贵;受计算机插槽数量、地址、中断资源限制,可扩展性差;在一些电磁干扰性强的测试现场,无法专门对其做电磁屏蔽,导致采集的数据失真。

通用串行总线USB是1995年康柏、微软、IBM、DEC等公司为解决传统总线不足而推广的一种新型的通信标准。该总线接口具有安装方便、高带宽、易于扩展等优点,已逐渐成为现代数据传输的发展趋势。基于USB的高速数据采集卡充分利用USB总线的上述优点,有效解决了传统高速数据采集卡的`缺陷。

1 USB数据采集卡原理

1.1 USB简介

通用串行总线适用于净USB外围设备连接到主机上,通过PCI总线与PC内部的系统总线连接,实现数据传送。同时USB又是一种通信协议,支持主系统与其外设之间的数据传送。USB器件支持热插拔,可以即插即用。USB1.1支持两种传输速度,既低速1.5Mbps和高速12Mbps,在USB2.0中其速度提高到480Mbps。USB具有四种传输方式,既控制方式(Control mode)、中断传输方式(Interrupt mode)、批量传输方式(Bulk mode)和等时传输方式(Iochronous mode)。

考虑到USB传输速度较高,如果用只实现USB接口的芯片外加普通控制器(如8051),其处理速度就会很慢而达不到USB传输的要求;如果采用高速微处理器(如DSP),虽然满足了USB传输速率,但成本较高。所以选择了TI公司内置USB接口的微控制器芯片TUSB3210,开发了具有USB接口的高速数据采集卡。

1.2 系统原理图

系统原理图如图1所示。

整个系统以TUSB3210为核心,负责启动A/D转换,控制FIFO的读写及采样频率的设定,与主机之间的通信及数据传输。

2 USB数据采集卡硬件

2.1 TUSB3210芯片

TUSB3210是TI公司推出的内嵌8052内核并带有USB接口的微控制器芯片。TUSB3210有256字节的内部RAM,8K字节的程序RAM,512字节的USB数据缓冲和端点描述块EDB(Endpoint Descriptor Blocks),4个通用的GPIO端口P0、P1、P2、P3,I2C接口电路,看门狗电路等。

[1] [2] [3] [4] [5]

篇8:基于USB总线的机器人上下位机通信

基于USB总线的机器人上下位机通信

摘要:介绍一种基于USB总线的数字机器人控制系统的软件结构以及其上位机与下位机通信的实现机制。

关键词:USB教学机器人通信

EDUROBOT-680-II型教学机器人是上海交通大学机器人研究所采用世界银行贷款研制的一种五自由度多关节的机器人。它具备工业机器的基本功能、良好的开放性以及舒适的使用界面,主要大专院校和科研机构提供教学和科研工具。学生可以通过亲手操作了解和学习工业机器人,它具备工业机器人的基本功能、良好的开放性以及舒适的使用界面,主要为大专院校和科研机构提供教学和科研工具。学生可以通过亲手操作了解和学习工业机器人,科研人员还可对它进行二次开发。

教学机器人的上位机(主控计算机)和下位机(运动控制器)原先采用并行口(LPT1)的SPP方式进行通信。利用LPT1的状态寄存器(StatusPort)具有的读能力和每次传送半字节(Nibble)来实现数据的双向传送功能。每次传送的时序(次序)由软件建立,在控制字的协调下按照教学机器人的通信协议接收和发送数据。

目前USB越来越普及,正逐渐取代串口和并口在计算机接口中的地位。为了研究USB在实时通信时的性能,笔者已将教学机器人上下位机通信改用USB端口实现。

图1PL-2301结构框图

1USB特点及其应用

通用串行总线USB(UniversalSerialBus)是1994年底由Compaq、IBM、Microsoft等多家公司联合提出的一种计算机接噪覆亡,目前已发展到USB2.0。由于USB具有以下几方面的特点,所以迅速普及,逐渐确定了在计算机接口中的主导地位。

(1)易用性。USB支持热插拔和即插即用。

(2)可扩展性。用户可以通过连接USB集线器到一个已有的端口来增加USB端口数量,集线器上还可以连更多的集线器。理论上可以连接127个外设到USB总线上。

(3)快速性。USB1.1版规定了两种传输速率:低速传输和全速传输。低速传输的速率是1.5Mbps,全速是12Mbps。这不但远远高于传统的串口传输速率,也比并口传输快了好多倍。最近推出的USB2.0允许的最高传输速率高达480Mbps。

(4)可靠性。USB的可靠性来自硬件设计和USB数据传输协议两方面的保证。USB驱动器、接收器和电缆的硬件规范消除了大多数可能引起数据错误的噪声;USB协议使用了差错校验和数据重传机制,可以最大程度保证数据传输的准确性。

(5)内置电源。USB总线内置电源线,可以给外设提供5V和最多500mA的电源供应,满足大部分低功耗外设的电源要求。

由于USB具有这些突出的优点,不但一些传统外设开始提供USB接口,而且大量新型外设也把USB接口作为首先甚至唯一的接口,如MP3播放器、移动硬盘等。由于USB的高可靠性和足够快的通信速率,USB开始应用于工业级的实时通信和控制,例如机器人系统中示教盒与控制器的通信。本文论述的用USB端口实现机器人上位机与下位机的通信也属于这些方面的应用。

2用USB实现计算机双机通信

由于USB模型是一种Host-Slave(主机-外设)主从式结构,没有办法使两台主机不通过外设而直接通过USB总线通信。然而可通过增加外设控制器的方法使两台主机利用它们的USB端口通信。每个外设控制器连接到不同的主要,并利用共享的缓冲器交换数据。Cypress公司的EZ-Link和Prolific公司的PL-2301把两个外设控制器和共享缓冲区集成到一块芯片上,作为两台主机通过USB总线通俗诉桥梁。其它公司也提供类似的控制芯片。在教学机器人中,采用PL-2301。

PL-2301是台湾Prolific公司生产的一种全速USB控制芯片。PL-2301的结构框图如图1所示。

PL-2301包括两套独立的USB控制单元。在握手信号的协调下,它们通过两个FIFO缓冲器无阻塞地交换数据。PL-2301包含四个终端:缺省的控制终端(地址00H)、中断终端(地址81H)、块输出终端(地址02H)、块输入终端(地址83H)。控制传输用于在主机列举阶段完成对PL-2301的配置及在两台主机通信时控制PL-2301的握手信号;中断传输用于PL-2301定期(每毫秒一次)向主机报告握手信号的'状态;块传输用于两台主机之间实时地交换数据。块传输支持错误检测,这对实时通信和控制很重要。控制传输被确保拥有10%的USB总线带宽,中断传输和等时传输最多可以使用90%的带宽,块传输使用剩余的最大可用带宽(最多95%)。当总线不太忙时,由于块传输只有一个很小的协议头(13字节),它是所有传输类型中最快的。为了确何教学机器人上下位机以最快的速度通信,满足实时性要求,最好不要在USB总线上挂接过多的USB外设。

PL-2301除了能对USB标准请求做出反应外,还能对几种厂商自定义的请求做出反应。自定义请求ClearQuickLinkFeature和SetQ

uickLinkFeature用于控制两台主机通信时PL-2301的握手信号。这些握手信号是:

(1)TX_RDY指示本地USB端口是否准备好传输数据的指示信号。

(2)S_EN挂起使能信号。置位后,PL-2301支持标准的USB挂起特性。

(3)RESET_O块输出管道的复位信号,用于出现错误时复位块输出通道。

(4)RESET_IN块输入管道的复位信号,用于出现错误时复位块输入管道。

(5)TX_REQ块传输的请求信号。

(6)TX_C块传输完成的指示信号。

(7)PEER_E告诉对方本地端口是否连接好的指示信号。

在这几个握手信号的协调下,上位机和下位机可以双向通信。图2是主机PCA向PCB传输数据的流程图。这些底层的细节问题并不需要控制,由PL-2301的驱动程序完成。

图3教学机器人控制系统软件结构

3软件结构

3.1教学机器人软件结构

EDUROBOT-680-II型教学机器人控制系统的控制软件包括下位机的底层控制软件和上位机的上层控制软件,它们通过USB端口通信。其软件结构如图3所示。

上层控制软件运行在Windows98平台上,它为用户提供与机器人交互的人机接口界面,完成复杂运动控制的数据处理和插补计算。它由人机界面、运算插补、主控、通信四大模块构成。通信模块能够实时地发送控制命令给下位机并从下位机获得反馈信息,同时保证数据传输的准确性。

为了提供对USB的支持(为了使底层控制系统有更好的实时性和更紧凑,下一步准备将底层控制系统改用支持USB的WindowsCE、VxWorks或嵌入式Linux),底层控制系统目前采用Windows98平台。底层控制软件接口收上层控制软件的控制命令,同时解释并执行控制命令。这通过多线程实现。任务调度和管理模块是底层控制软件的主线程,它负责从指令队列中取出指令并解释执行。主线程执行过程会产生一个辅助线程――通信线程。通信线程调用通信模块的输出函数,负责监视USB端口。如果上位机传来控制命令,则遵循教学机器人通信协议接收并存入指令队列中。

3.2通信模块的实现

上位机和下位机控制软件共用相同的PL-2301客户驱动程序、传输模块(由Prolific公司提供)和通信模块。

PL-2301客户驱动程序是典型的WDM驱动程序。驱动程序屏蔽了底层的硬件细节和USB协议,使上层软件仅通过驱动程序接口函数就可以访问PL-2301。主要的几个驱动程序接口函数是CreateFile()、WriteFile()、ReadFile()、DeviceIOControl()。

传输模块(Transfer.dll)是驱动程序的上层模块,它通过调用驱动程序接口函数,实现了两台主机通过PL-2301通信的基本通信能力。Transfer.dll会产生一列三个线程:

(1)发送线程。这个线程对发送请求进行排队并按先后顺序处理请求。如果出现错误,则努力恢复。

(2)接收线程。这个线程等待来自状态线程的消息,如果发现对方主机将要传输数据,就按照传输协议接收数据。接收线程把接收到的数据放在接收FIFO缓冲器中,等待上层软件(Comm.dll)取走。如果有错误发生时,也会努力恢复。

(3)状态线程。这个线程监视PL-2301的状态信号。如果发现有任何状态改变,它将给相关线程发消息或调用回调函数通知上层软件。

Transfer.dll提供几个供上层软件(Comm.dll)调用的输出函数:

・USB_InitService()调用Transfer.dll里的其他输出函数之间必须先调用这个函数。

・USB_OpenConnect()调用此函数获得PL-2301的句柄。发送和接收数据时要用到这个句柄。

・USB_WriteConnect()调用此函数向对方主机发送指定的数据。

・USB_ReadConnect()调用此函数从接收FIFO缓冲器中读取数据。

通信模块(Comm.dll)通过调用Transfer.dll提供的输出函数完成教学机器人控制命令的发送和接收。为了协调命令的发送和接收,定义了套控制字,作为上位机与下位机通信时的握手信号(与PL-2301的握手信号没有联系)。上位机发送数据(控制命令或控制字)时,直接调用USB-WriteConnect()即可。下位机读取数据采取轮询方式,循环调用USB-ReadConnect()扫描USB端口,如果有数据则接收下来。如果接收到的是指令,则放入指令队列中,等待任务管理和调度线程取走。图4

是上位机发送一条命令的示意图。有些命令需要下位机发送返回值给上位机,如读机器人状态命令status需要下位机发送返回值给上位机,如读机器人状态命令status需要下位机把机器人状态返回给上位机。下位机发送返回值的过程与上位机发送命令的过程相似。

USB作为一种新兴的计算机外设接口标准,其技术特点使不但能作为计算机与一般外设的接口,也可用于实时通信和控制。本文介绍的用USB实现教学机器为上下位机的通信,为机器人上下位机的通信提供了一种新颖、方便和可靠的解决方案。随着USB2.0的推出,其高达480Mbps的传输速率可满足高实时性要求的工业设备控制、动态图像实时传输等,为USB在更广阔领域的应用打下了坚实的基础。

诺基亚变身数据采集器

ARINC629航空数据总线研究

军用航空数据总线研究进展

PCI总线仲裁器的设计和实现论文

模拟I2C总线多主通信的通用软件包

下载基于USB总线通信数据采集器的设计与实现(共8篇)
基于USB总线通信数据采集器的设计与实现.doc
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
点击下载本文文档