usb范文10篇-欧洲杯买球平台
时间:2023-04-11 09:09:56
usb范文篇1
关键词:usb终端人机接口设备(hid)列举
引言
usb作为一种新的pc机互连协议,使外设到计算机的连接更加高效、便利。这种接口适合于多种设备,不仅具有快速、即插即用、支持热插拔的特点,还能同时连接多达127个设备,解决了如资源冲突、中断请求(irqs)和直接数据通道(dmas)等问题。因此,越来越多的开发者欲在自己的产品中使用这种标准接口。而rs232是单个设备接入计算机时,常采用的一种接入方式,其硬件实现简单,因此在传统的设备中有很多采用了这种通信方式。一般的ic卡门禁考勤系统也使用rs232接口与pc机通信。如果将usb技术应用于ic卡门禁考勤系统与pc机之间的数据通信,这样,不仅能使ic卡门禁考勤设备具备usb通信的诸多优点,而且对pc机而言还可以节余1个rs232串口为其它通信所用。
1usb系统概述
usb规范描述了总线特性、协议定义、编程接口以及其它设计和构建系统时所要求的特性。usb是一种主从总线,工作时usb主机处于主模式,设备处于从模式。usb系统所需要的唯一的系统资源是,usb系统软件所使用的内存空间、usb主控制器所使用的内存地址空间(i/o地址空间)和中断请求(irq)线。usb设备可以是功能性的,如显示器、鼠标或者集线器之类。它们可以作低速或者高速设备实现。低速设备最大速率限制在1.5mb/s,每一个设备有一些专有寄存器,也就是端点(endpoint)。在进行数据交换时,可以通过设备驱动间接访问它。每一个端点支持几种特殊的传输类型,并且有一个唯一的地址和传输方向。不同的是端点0仅用作控制传输,并且其传输可以是双向的。
系统上电后,usb主机负责检测设备的连接与拆除、初始化设备的列举过程,并根据设备描述表安装设备驱动后自动重新配置系统,收集每个设备的状态信息。设备描述表标识了设备的属性、特征并描述了设备的通信要求。usb主机根据这些信息配置设备、查找驱动,并且与设备通信。
典型的usb数据传输是由设备驱动开始的,当它需要与设备通信时,设备驱动提供内存缓冲区,用来存放设备收到或者即将发送的数据。usb驱动提供usb设备驱动和usb主控制器之间的接口,并将传输请求转化为usb事务,转化时需要与带宽要求及协议结构保持一致。某些传输是由大块数据构成的,这时需要先将它划分为几个事物再进行传输。
具有相似功能的设备可以组成一类,这样便于分享共有的特性和使用共同的设备驱动程序。每个类可以定义其自己的描述符,如:hid类描述符和report描述符。hid类是由人控制计算机系统的设备组成的,它定义了一个描述hid设备的结构,并且表明了设备的通信要求。hid设备描述符必须支持端点输入中断,固件也必须包括一个报告描述符,表明接收和发送数据的格式。在ic卡门禁考勤系统引入rs232到usb的接口转换模块后,从系统所具有的特性来看,应该属于hid设备。因此,两种特殊的hid类请求必须被支持:setreport和getreport。这些请求使设备能接收和发送一般的设备信息给主机。在没有中断输出终端时,setreport是主机发送数据给hid设备的唯一方式。
2系统要求
为了实现ic卡门禁考勤系统中rs232-usb的接口转换,需要1台支持usb的主机,同时还要提供主机上用于与外设通信的驱动,一般由操作系统提供。此外,还需开发在主机上执行的客户端应用程序。在设备端,需要提供具有usb接口的主控制器芯片,以及编写主控制器上执行的usb通信代码和用于执行外设功能的相关代码。
2.1主机要求
主机必须能够通过设备驱动接收usb数据,并且使这些数据对处理这些请求的应用程序有效。在主机中必须有一个驱动负责处理usb传输、辨识设备、向usb设备收发数据;同时,还需要有一个设备驱动-虚拟化串行口,仿效真实的串口。这个驱动必须能够像真实的串口接收和发送usb数据。
从应用的观点,设备驱动必须能收发数据,可以通过使用一个虚拟化的串口或通过转化为usb数据实现。微软提供了一个叫作usbpos的设备驱动,它允许应用程序访问usb设备时,好像它们连接到标准串口上一样。系统大致结构方框图如图1所示。
2.2设备要求
在定义即将使用的微控制器时,必须说明一些通信要求,如:通信速率、频率、传输的数据量等。考虑到ic卡门禁考勤系统有效的通信速率,可以把转换器作为一个低速的设备使用,低速设备通信速度可以在10~100kb/s的范围变化。考虑到传输的数据量和传输的频率,此系统中使用中断的传输类型。中断传输可以在2个方向进行,但不能同时进行,这种类型的传输要求在规定的时间里完成相当大数据量的传输任务。
对于转换模块,它可以用于pc机的数据收发,操作系统提供了hid驱动,允许使用中断传输模式。对于低速设备的一个事务,中断传输最大的包容量是8字节,如果需要发送大量的数据,则必须把它分割为很多事务。
转换模块要定义的另一个特性是所需端点数。如上所述,端点是微控制器在usb通信过程中所用来发送和接收数据的缓冲区。此系统中,该转换器定义了2个端点:一个端点(端点0)用来控制传输,另一个端点是中断输入端点,定义为发数据给pc机。
根据以上要求,通过研究比较现有的微控制器,考虑到如内存空间、价格和开发包等因素,我们选用cypress家族的一种8位risc微控制器cy7c634xx/5xx。它使用哈佛总线结构,是对较高i/o要求的低速应用设备的低价欧洲杯买球平台的解决方案。
图2为ic卡门禁考勤系统usb通信实现硬件方框原理图。
3软件设计和执行
系统软件由6部分组成:定义描述符、设备检测和列举、端点中断服务程序、usb数据交换模块、串行口数据交换模块、usb/serial模块接口。下面简要描述其中部分模块程序的功能和实现思想。
3.1描述符定义
描述符是数据结果或信息的格式化块,它可以使主机知道这个设备。每个描述符包含了这个设备整体的信息或者某个元素的信息。所有的usb外设必须响应对标准的usb描述符的请求。
该系统中使用了1个接口和2个终端(控制和中断输入)。由于受win98的限制还不能使用中断输出终端,因此为了解决这个问题,我们通过在端点0中使用setreport传输pc机欲送往ic卡门禁考勤设备的数据。
数据接收是在outputreports中完成的。它根据送往ic卡门禁考勤设备最大的数据量,系统定义为16k个8位域。发送数据给主机是在输入报告中完成的,它是8k个8位域。
3.2设备检测和列举
当1个usb人机接口类(hid)设备第一次连接到总线,它将被总线供电但仍然非功能性等待1个总线复位。d-端的上拉电阻通知hub连接上了新的设备,主机也同时知道了新连接的usb设备,并将它复位。紧跟输入包之后,主机发送1个配置包,从缺省地址0处读取设备描述符。读到描述符后,主机将分配一个新的地址给设备,并继续查询关于设备描述、配置描述、人机报告描述的信息,设备将开始对新分配的地址作出反应。根据从设备处返回的信息,主机知道了被设备支持的数据终端的数量,完成列举过程。列举结束后,windows将把新的设备加入到控制面板的设备管理器中显示。
为此,在微控制器中必须写入访问描述符的代码,这样便于对主机在列举设备时发送的请求作出有效的辨识和响应。在设备方面需要创建一个inf文件,使windows能够辨识设备,并且为设备找到其驱动。由于操作系统提供了简单的inf文件,因此,开发中只需要编写写入到微控制器中的程序。
3.3数据发送和接收过程
发送数据到门禁考勤系统是通过控制端点0中使用setreport来完成的。主机先向门禁考勤系统请求发送数据,设备响应请求后,主机便开始执行。当有数据到达设备的终端0时,将对设备产生一个中断。此时,相应的中断服务程序便将数据复制到数据缓冲区。一旦进入端点0的中断服务程序,所有的中断必须关闭,确保能够正确地复制数据。
微处理器的数据缓冲区编程为可以接收64个字节,这个值是存放在设置包的包头请求信息中。从主机处接收到的最大包大小,是根据它将发送给门禁考勤系统的最大数据量来决定的。
系统还使用了put_command线程,通过1个i/o端口引脚,向门禁考勤系统串口发送数据。在执行此线程时,根据串口通信协议插入了起始位、停止位以及相应的延时。
从门禁考勤系统接收数据的过程是利用端点1完成的。端点1配置为1个中断输入端点,当有1个起始位到达引脚时,gpio中断必须打开,并关闭所有其它类型中断。设计中通过使用1个get_serial线程来收集i/o引脚发出的串行数据,并把它存入数据缓冲区。同时该线程负责检验接收到的起始位和停止位的正确性。当收到8个字节时,将接收缓冲区中的数据复制到终端1的缓冲区,并且允许微处理器响应中断输入请求。
usb范文篇2
关键词:usbcan总线固件编程适配器
现场总线作为二十世纪80年展起来的新兴技术,在工业现场已有了广泛的应用。在比较有影响力的几种现场总线中,can总线以其突出的优点不仅大量应用于工业现场,而且在楼宇自动化、智能终端设备等民用领域也有了长足的发展。
现场总线网络技术的实现需要与计算机相结合。以往can总线网络与计算机的连接采用rs232、isa或pci接口。但是随着计算机接口技术的发展,isa接口已经逐渐被淘汰;rs232接口数据传输率太低;pci虽然仍是高速外设与计算机接口的主要渠道,但其主要缺点是占用有限的系统资源、设计复杂、需有高质量的驱动程序保证系统的稳定,且无法用于便携式计算机的扩展。随着usb1.1、usb2.0规范的相继制定,为外设与计算机的接口提出了新的发展方向。usb的主要特点有:外设安装简单,可实现热插拨;通讯速率高,usb1.1全速传送速率为12mbps,与标准串行端口相比,大约快100倍;支持多设备连接;提供内置电源。
本文给出一种在windows2000下使用usb1.1协议实现can总线适配器的设计方法。整个设计主要开发适配器的固件及计算机的驱动程序、应用程序,以达到用usb接口连接现场can总线网络的目的。
图1
1适配器硬件接口设计
适配器硬件电路由微控制器、can总线接口、usb总线接口和dc-dc隔离电源模块等组成。原理框图如图1所示。
微控制器p89c51rd2是philips公司生产的增强型mcs-51兼容单片机,片内集成64kb闪存和1kb扩展ram,双数据指针,4级中断优先级,7个中断源,内置看门狗,可编程时钟输出,在6时钟模式下工作,速度是标准51单片机的两倍。此时外部最高频率可达20mhz。在高速、大程序容量、中小规模数据处理场合是一款非常理想的单片机型。
can总线接口使用philips公司的独立can总线控制器sja1000,并由光耦6n136进行总线隔离。sja1000是一种独立控制器,用于移动目标和一般工业环境中的区域网络控制,符合can2.0a和2.0b规范,最高速率可在达1mbps。can总线收发器采用pca82c250。
pdiusbd12是philips公司推出的全速usb接口器件,完全兼容usb1.1规范。图1中d 引脚信号电平通过器件softconnect命令内部上拉,从而向主机表示为一个全速设备。eot引脚自动检测usb接口的vbus电压以确定usb电缆是否连接到了主机。suspend是双向引脚,用以向微控制器指示器件是否挂起。当有usb总线事件发生时,引脚向微控制器发出中断信号。pdiusbd12支持总线复用和非复用两种并行接口模式,以方便连接不同类型的微控制器。图1中采用总线复用方式,当用奇数地址访问pdiusbd12时被认为是命令,偶数地址访问则被认为是数据读写。
各器件都需要外部时钟信号,而且它们自身也都有可编程的时钟输出功能,这就给系统的时钟设计带来了便利。图1中微控制器6时钟运行模式下,外部为12mhz晶振。p89c51rd2的p1.1引脚产生6mhz方波作为pdiusbd12的输入时钟;通过pdiusbd12的setmode寄存器编程使clkout输出时钟频率为24mhz,作为sja1000的外部输入时钟。
2软件设计
软件设计包括微控制器的固件设计和计算机端usb驱动程序两部分。
2.1微控制器固件编程
固件编程是usb数据传输系统中终端设备程序设计的一个重要概念。微控制器通过固件是程序与计算机进行数据交换。固件设计的目的是:使pdiusbd12在usb上达到最大的传输速率;增加系统的可扩展性和硬件无关性。
固件要实现的内容:一是对sja1000初始化,接收can总线送来的数据,收集can网络状态信息,并将主机的数据下发到can网络;二是对pdiusbd12初始化,完成usb总线连接过程,并组织can网络和主机之间的数据传送。设计中采用keilc51软件编译环境,c51和asm混合编程方式。
sja1000和pdiusbd12都有完善的中断机制,微控制器可以通过读它们的中断寄存器获得总线事件。为了提高固件的运行效率,主程序对系统进行实始化后开放中断,在中断服务程序中对事件进行分析和必要的处理,并设置相应的变量标志和数据缓冲区。主程序则循环查询变量标志,调用相应的子程序进行处理。这种程序结构使得主程序能够在前台处理各种数据传送任务,同时又可以通过中断在后台及时处理总线事件。
2.1.1can协议实现
sja1000支持basiccan和pelican两种协议模式。在适配器设计中采用了basiccan模式。中断设为电平中断方式,sja1000中断服务程序框图如图2所示。
2.1.2usb1.1协议实现
pdiusbd12支持所有的四种usb数据传输方式。在适配器的设计中使用了控制传输、中断传输和批量传输。控制传输中只用来传递控制信息,固定使用端点0;中断传输使用端点1,用来传送can网络状态信息;批量传输用来实现主机和can网络节点之间的数据传送,使用端点2。图3是pdiusbd12中断服务程序框图。
2.2驱动程序设计
usb驱动程序属于wdm(windowsdrivermodule)类型。wdm驱动程序是分层的,引入了fdo(functiondeviceobject)和pdo(physicaldeviceobject)两个新类来描述硬件,每一个物理硬件有一个pdo,但是可以有多个fdo,在驱动程序中直接操作的是pdo和fdo。系统通过全局唯一标识符guid实现驱动程序的识别。应用程序和wdm驱动程序通信时,系统为每个用户请求打包形成一个i/o请求包发送到驱动程序。
图4是windows中usb的通信层次结构模型。图4系统软件方块中的底部是windows系统提供的驱动程序,包括主控制器驱动程序(openhci.sys或者uhcd.sys)、hub驱动程序(usbhub.sys)是一个类驱动程序(usbd.sys)。
windows2000下驱动程序的设计工具是vc 和win2000ddk,但是直接使用ddk编程有相当大的难度。目前有第三方软件厂商提供了一些驱动程序开发工具,如jungo公司的windriver、compuware公司的driverstudio等。这些工具仍然是基于windowsddk的,但是进行了新的封装,提供了驱动程序设计向导。
适配器设计中采用了driverstudio作为驱动程序开发工具。利用其中的driverworks一步步地作出选择并修改少量参数,即可生成驱动程序框架和测试台应用程序框架,对usb设备的通用性部分支持得很好。在程序框架,对usb设备的通用性部分支持得很好。在vc 中对向导生成的代码作修改,并对设备特殊功能部分添加处理代码,然后用vc 编译为*.sys文件,就是一个完整的驱动程序。softice是driverstudio的另一个调试工具,可以对驱动程序进行操作系统内核级的跟踪与调试。
usb范文篇3
关键词:通用串行总线usb接口接口标准
一、usb接口背景
在早期的计算机系统上常用串口或并口连接设备。每个接口都需要占用计算机的系统资源(如中断,i/o地址,dma通道等)。无论是串口还是并口都是点对点的连接,一个接口仅支持一个设备。因此每添加一个新的设备,就需要添加一个isa/eisa或pci卡来支持,同时系统需要重新启动才能驱动新的设备。
usb总线是intel、dec、microsoft、ibm等公司联合提出的一种新的串行总线标准,主要用于pc机与设备的互联。usb总线具有低成本、使用简单、支持即插即用、易于扩展等特点,已被广泛地用在pc机及嵌入式系统上。
二、usb总线优缺点
1.优点
(1)使用简单
所用usb系统的接口一致,连线简单。系统可对设备进行自动检测和配置,支持热插拔。新添加设备系统不需要重新启动。
(2)应用范围广
usb系统数据报文附加信息少,带宽利用率高,可同时支持同步传输和异步传输两种传输方式。一个usb系统最多可支持127个物理设备。usb设备的带宽可从几kbps到几mbps(在usb2.0版本,最高可达几百mbps)。一个usb系统可同时支持不同速率的设备,如低速的键盘、鼠标,全速的isdn、语音,高速的磁盘、图像等(仅usb2.0版本支持高速设备)。
(3)较强的纠错能力
usb系统可实时地管理设备插拔。在usb协议中包含了传输错误管理、错误恢复等功能,同时根据不同的传输类型来处理传输错误。
(4)总线供电
usb总线可为连接在其上的设备提供5v电压/100ma电流的供电,最大可提供500ma的电流。usb设备也可采用自供电方式。
(5)低成本
usb接口电路简单,易于实现,特别是低速设备。usb系统接口/电缆也比较简单,成本比串口/并口低。
2.缺点
usb技术还不是很成熟,特别是高速设备。市场上现有的usb设备价格都比较昂贵,但随着usb技术的日益成熟,设备的不断增加和广泛应用,其价格将会有所降低。
三、usb系统拓扑结构
一个usb系统包含三类硬件设备:usb主机(usbhost)、usb设备(usbdevice)、usb集线器(usbhub),如图1所示。
(1)usbhost
在一个usb系统中,当且仅当有一个usbhost时,usbhost有以下功能:
◇管理usb系统;
◇每毫秒产生一帧数据;
◇发送配置请求对usb设备进行配置操作;
◇对总线上的错误进行管理和恢复。
(2)usbdevice
在一个usb系统中,usbdevice和usbhub总数不能超过127个。usbdevice接收usb总线上的所有数据包,通过数据包的地址域来判断是不是发给自己的数据包:若地址不符,则简单地丢弃该数据包;若地址相符,则通过响应usbhost的数据包与usbhost进行数据传输。
(3)usbhub
usbhub用于设备扩展连接,所有usbdevice都连接在usbhub的端口上。一个usbhost总与一个根hub(usbroothub)相连。usbhub为其每个端口提供100ma电流供设备使用。同时,usbhub可以通过端口的电气变化诊断出设备的插拔操作,并通过响应usbhost的数据包把端口状态汇报给usbhost。一般来说,usb设备与usbhub间的连线长度不超过5m,usb系统的级联不能超过5级(包括roothub)。
四、usb总线数据传输
usb总线上数据传输的结构如图2所示。
从物理结构上,usb系统是一个星形结构;但在逻辑结构上,每个usb逻辑设备都是直接与usbhost相连进行数据传输的。在usb总线上,每ms传输1帧数据。每帧数据可由多个数据包的传输过程组成。usb设备可根据数据包中的地址信息来判断是否响应该数据传输。在usb标准1.1版本中,规定了4种传输方式以适应不同的传输需求:
(1)控制传输(controltransfer)
控制传输发送设备请求信息,主要用于读取设备配置信息及设备状态、设置设备地址,设置设备属性、发送控制命令等功能。全速设备每次控制传输的最大有效负荷可为64个字节,而低速设备每次控制传输的最大有效负荷仅为8个字节。
(2)同步传输(isochronoustransfer)
同步传输仅适用于全速/高速设备。同步传输每ms进行一次传输,有较大的带宽,常用于语音设备。同步传输每次传输的最大有效负荷可为1023个字节。
(3)中断传输(interrupttransfer)
中断传输用于支持数据量少的周期性传输需求。全速设备的中断传输周期可为1~255ms,而低速设备的中断传输周期为10~255ms。全速设备每次中断传输的最大有效负荷可为64个字节,而低速设备每次中断传输的最大有效负荷仅为8个字节。
(4)块数据传输(bulktransfer)
块数据传输是非周期性的数据传输,仅全速/高速设备支持块数据传输,同时,当且仅当总线带宽有效时才进行块数据传输。块数据传输每次数据传输的最大有效负荷可为64个字节。
五、典型应用
usb系统的典型应用如图3所示。
在图3所示系统中,显示器、audio、modem皆为全速设备,键盘、鼠标为低速设备。其数据传输为:
◇usbhost通过控制传输更改显示器属性。
◇usbhost通过块数据传输将要显示的数据送给显示器。
◇usbhost通过控制传输更改键盘、鼠标属性。
◇usbhost通过中断传输要求键盘、鼠标输入读入系统。
◇usbhost通过控制传输更改audio属性。
◇usbhost通过同步传输与audio设备传输数据。
◇usbhost通过控制传输更改modem属性。
◇usbhost通过块数据传输与modem设备传输数据
六、一个usbhost接口的软硬件设计
市场上现已有很多公司提供的usb接口器件,如philips的pdiusbd11/pdiusbd12,oki的msm60581,national的usbn9602,lucent的uss-820/uss-620,scanlogic的sl11,等等。
同时也有很多带usb接口的处理器,如cypress的ez-usb,amd的am186cc,atmel的at43320,motorola的ppc823/ppc850,等等。下面给出用scanlogic的usb接口器件sl11ht实现嵌入式usbhost的例子。
1.sl11ht特点
◇遵从usb1.1标准;
◇支持全速/低速传输;
◇支持主机/设备端两种模式;
◇3.3/5.0v供电;
◇片内包含256个字节的sram;
◇48mhz晶振输入。
当sl11ht被用作usbhost接口时,对系统有以下要求:
◇由系统维护sof帧数目;
◇由系统生成crc5效验码;
◇要求系统中断潜伏期小于1.5μs。
2.sl11ht接口硬件框图
图4简单地给出了使用sl11ht扩展usb接口的框图,更详细的硬件连线图请见参考文献2,3。
3.usbhost端软件结构
usbhost端软件结构如图5所示。
(1)usb接口驱动程序
usb接口驱动程序需实现以下功能:
◇usb接口器件的初始化;
◇计算上层数据包的效验和,发送上层的数据包;
◇发送sof帧;
◇接收从usb接口传送来的数据,并检查数据的有效性;
◇将接收到的数据送往上层。
(2)usb协议栈驱动程序
usb协议栈驱动程序需实现以下功能:
◇提供与设备驱动程序的接口;
◇读取并解析usb设备描述符,配置描述符;
◇为usb设备分配唯一的地址;
◇使用默认的配置来配置设备;
◇支持基本的usb命令请求;
◇连接设备与相应的驱动程序;
◇转发设备驱动程序的数据包。
(3)设备驱动程序
设备驱动程序需实现以下功能:
◇提供与应用程序的接口;
◇读取并解析usb设备特有的描述符,获得设备提供的传输通道;
◇发送设备特有的和基本的usb命令请求;
usb范文篇4
关键词:通用串行总线usb接口接口标准
一、usb接口背景
在早期的计算机系统上常用串口或并口连接设备。每个接口都需要占用计算机的系统资源(如中断,i/o地址,dma通道等)。无论是串口还是并口都是点对点的连接,一个接口仅支持一个设备。因此每添加一个新的设备,就需要添加一个isa/eisa或pci卡来支持,同时系统需要重新启动才能驱动新的设备。
usb总线是intel、dec、microsoft、ibm等公司联合提出的一种新的串行总线标准,主要用于pc机与设备的互联。usb总线具有低成本、使用简单、支持即插即用、易于扩展等特点,已被广泛地用在pc机及嵌入式系统上。
二、usb总线优缺点
1.优点
(1)使用简单
所用usb系统的接口一致,连线简单。系统可对设备进行自动检测和配置,支持热插拔。新添加设备系统不需要重新启动。
(2)应用范围广
usb系统数据报文附加信息少,带宽利用率高,可同时支持同步传输和异步传输两种传输方式。一个usb系统最多可支持127个物理设备。usb设备的带宽可从几kbps到几mbps(在usb2.0版本,最高可达几百mbps)。一个usb系统可同时支持不同速率的设备,如低速的键盘、鼠标,全速的isdn、语音,高速的磁盘、图像等(仅usb2.0版本支持高速设备)。
(3)较强的纠错能力
usb系统可实时地管理设备插拔。在usb协议中包含了传输错误管理、错误恢复等功能,同时根据不同的传输类型来处理传输错误。
(4)总线供电
usb总线可为连接在其上的设备提供5v电压/100ma电流的供电,最大可提供500ma的电流。usb设备也可采用自供电方式。
(5)低成本
usb接口电路简单,易于实现,特别是低速设备。usb系统接口/电缆也比较简单,成本比串口/并口低。
2.缺点
usb技术还不是很成熟,特别是高速设备。市场上现有的usb设备价格都比较昂贵,但随着usb技术的日益成熟,设备的不断增加和广泛应用,其价格将会有所降低。
三、usb系统拓扑结构
一个usb系统包含三类硬件设备:usb主机(usbhost)、usb设备(usbdevice)、usb集线器(usbhub),如图1所示。
(1)usbhost
在一个usb系统中,当且仅当有一个usbhost时,usbhost有以下功能:
◇管理usb系统;
◇每毫秒产生一帧数据;
◇发送配置请求对usb设备进行配置操作;
◇对总线上的错误进行管理和恢复。
(2)usbdevice
在一个usb系统中,usbdevice和usbhub总数不能超过127个。usbdevice接收usb总线上的所有数据包,通过数据包的地址域来判断是不是发给自己的数据包:若地址不符,则简单地丢弃该数据包;若地址相符,则通过响应usbhost的数据包与usbhost进行数据传输。
(3)usbhub
usbhub用于设备扩展连接,所有usbdevice都连接在usbhub的端口上。一个usbhost总与一个根hub(usbroothub)相连。usbhub为其每个端口提供100ma电流供设备使用。同时,usbhub可以通过端口的电气变化诊断出设备的插拔操作,并通过响应usbhost的数据包把端口状态汇报给usbhost。一般来说,usb设备与usbhub间的连线长度不超过5m,usb系统的级联不能超过5级(包括roothub)。
四、usb总线数据传输
usb总线上数据传输的结构如图2所示。
从物理结构上,usb系统是一个星形结构;但在逻辑结构上,每个usb逻辑设备都是直接与usbhost相连进行数据传输的。在usb总线上,每ms传输1帧数据。每帧数据可由多个数据包的传输过程组成。usb设备可根据数据包中的地址信息来判断是否响应该数据传输。在usb标准1.1版本中,规定了4种传输方式以适应不同的传输需求:
(1)控制传输(controltransfer)
控制传输发送设备请求信息,主要用于读取设备配置信息及设备状态、设置设备地址,设置设备属性、发送控制命令等功能。全速设备每次控制传输的最大有效负荷可为64个字节,而低速设备每次控制传输的最大有效负荷仅为8个字节。
(2)同步传输(isochronoustransfer)
同步传输仅适用于全速/高速设备。同步传输每ms进行一次传输,有较大的带宽,常用于语音设备。同步传输每次传输的最大有效负荷可为1023个字节。
(3)中断传输(interrupttransfer)
中断传输用于支持数据量少的周期性传输需求。全速设备的中断传输周期可为1~255ms,而低速设备的中断传输周期为10~255ms。全速设备每次中断传输的最大有效负荷可为64个字节,而低速设备每次中断传输的最大有效负荷仅为8个字节。(4)块数据传输(bulktransfer)
块数据传输是非周期性的数据传输,仅全速/高速设备支持块数据传输,同时,当且仅当总线带宽有效时才进行块数据传输。块数据传输每次数据传输的最大有效负荷可为64个字节。
五、典型应用
usb系统的典型应用如图3所示。
在图3所示系统中,显示器、audio、modem皆为全速设备,键盘、鼠标为低速设备。其数据传输为:
◇usbhost通过控制传输更改显示器属性。
◇usbhost通过块数据传输将要显示的数据送给显示器。
◇usbhost通过控制传输更改键盘、鼠标属性。
◇usbhost通过中断传输要求键盘、鼠标输入读入系统。
◇usbhost通过控制传输更改audio属性。
◇usbhost通过同步传输与audio设备传输数据。
◇usbhost通过控制传输更改modem属性。
◇usbhost通过块数据传输与modem设备传输数据
六、一个usbhost接口的软硬件设计
市场上现已有很多公司提供的usb接口器件,如philips的pdiusbd11/pdiusbd12,oki的msm60581,national的usbn9602,lucent的uss-820/uss-620,scanlogic的sl11,等等。
同时也有很多带usb接口的处理器,如cypress的ez-usb,amd的am186cc,atmel的at43320,motorola的ppc823/ppc850,等等。下面给出用scanlogic的usb接口器件sl11ht实现嵌入式usbhost的例子。
1.sl11ht特点
◇遵从usb1.1标准;
◇支持全速/低速传输;
◇支持主机/设备端两种模式;
◇3.3/5.0v供电;
◇片内包含256个字节的sram;
◇48mhz晶振输入。
当sl11ht被用作usbhost接口时,对系统有以下要求:
◇由系统维护sof帧数目;
◇由系统生成crc5效验码;
◇要求系统中断潜伏期小于1.5μs。
2.sl11ht接口硬件框图
图4简单地给出了使用sl11ht扩展usb接口的框图,更详细的硬件连线图请见参考文献2,3。
3.usbhost端软件结构
usbhost端软件结构如图5所示。
(1)usb接口驱动程序
usb接口驱动程序需实现以下功能:
◇usb接口器件的初始化;
◇计算上层数据包的效验和,发送上层的数据包;
◇发送sof帧;
◇接收从usb接口传送来的数据,并检查数据的有效性;
◇将接收到的数据送往上层。
(2)usb协议栈驱动程序
usb协议栈驱动程序需实现以下功能:
◇提供与设备驱动程序的接口;
◇读取并解析usb设备描述符,配置描述符;
◇为usb设备分配唯一的地址;
◇使用默认的配置来配置设备;
◇支持基本的usb命令请求;
◇连接设备与相应的驱动程序;
◇转发设备驱动程序的数据包。
(3)设备驱动程序
设备驱动程序需实现以下功能:
◇提供与应用程序的接口;
◇读取并解析usb设备特有的描述符,获得设备提供的传输通道;
◇发送设备特有的和基本的usb命令请求;
usb范文篇5
关键词:usbrs485数据采集
在工业生产和科学技术研究的各行业中,常常利用pc或工控机对各种数据进行采集。这其中有很多地方需要对各种数据进行采集,如液位、温度、压力、频率等。现在常用的采集方式是通过数据采集板卡,常用的有a/d卡以及422、485等总线板卡。采用板卡不仅安装麻烦、易受机箱内环境的干扰,而且由于受计算机插槽数量和地址、中断资源的限制,不可能挂接很多设备。而通用串行总线(universalaerialbus,简称usb)的出现,很好地解决了以上这些冲突,很容易就能实现低成本、高可靠性、多点的数据采集。
1usb简介
usb是一些pc大厂商,如microsoft、intel等为了解决日益增加的pc外设与有限的主板插槽和端口之间的矛盾而制定的一种串行通信的标准,自1995年在comdex上亮相以来至今已广泛地为各pc厂家所支持。现在生产的pc几乎都配备了usb接口,microsft的windows98、nt以及macos、linux、freebsd等流行操作系统都增加了对usb的支持。
1.1usb系统的构成
usb系统主要由主控制器(hostcontroller)、usbhub和usb外设(peripheralsnode)组成系统拓扑结构,如图1所示。
1.2usb的主要优点
·速度快。usb有高速和低速两种方式,主模式为高速模式,速率为12mbps,另外为了适应一些不需要很大吞吐量和很高实时性的设备,如鼠标等,usb还提供低速方式,速率为1.5mb/s。
·设备安装和配置容易。安装usb设备不必再打开机箱,加减已安装过的设备完全不用关闭计算机。所有usb设备支持热拔插,系统对其进行自动配置,彻底抛弃了过去的跳线和拨码开关设置。
·易于扩展。通过使用hub扩展可拨接多达127个外设。标准usb电缆长度为3m(5m低速)。通过hub或中继器可以使外设距离达到30m。
·能够采用总线供电。usb总线提供最大达5v电压、500ma电流。
·使用灵活。usb共有4种传输模式:控制传输(control)、同步传输(synchronization)、中断传输(interrupt)、批量传输(bulk),以适应不同设备的需要。
2采用usb传输的数据采集设备
2.1硬件组成
一个实用的usb数据采集系统包括a/d转换器、微控制器以及usb通信接口。为了扩展其用途,还可以加上多路模拟开关和数字i/o端口。
系统的a/d、数字i/o的设计可沿用传统的设计方法,根据采集的精度、速率、通道数等诸元素选择合适的芯片,设计时应充分注意抗干扰的性能,尤其对a/d采集更是如此。
在微控制器和usb接口的选择上有两种方式,一种是采用普通单片机加上专用的usb通信芯片。现在的专用芯片中较流行的有nationalsemiconductor公司的usbn9602、scanlogic公司的sl11等。笔者曾经采用atmel公司的89c51单片机和usbn9602芯片构成系统,取得了良好的效果。这种方案的设计和调试比较麻烦,成本相对而言也比较高。
另一种方案是采用具备usb通信功能的单片机。随着usb应用的日益广泛,intel、sgs-tomson、cypress、philips等芯片厂商都推出了具备usb通信接口的单片机。这些单片机处理能力强,有的本身就具备多路a/d,构成系统的电路简单,调试方便,电磁兼容性好,因此采用具备usb接口的单片机是构成usb数据采集系统较好的方案。不过,由于具备了usb接口,这些芯片与过去的开发系统通常是不兼容的,需要购买新的开发系统,投资较高。
usb的一大优点是可以提供电源。在数据采集设备中耗电量通常不大,因此可以设计成采用总线供电的设备。
2.2软件构成
windows98提供了多种usb设备的驱动程序,但好象还没有一种是专门针对数据采集系统的,所以必须针对特定的设备来编制驱动程序。尽管系统已经提供了很多标准接口函数,但编制驱动程序仍然是usb开发中最困难的一件事情,通常采用windowsddk来实现。目前有许多第三方软件厂商提供了各种各样的生成工具,象compuware的driverworks,bluewaters的driverwizard等,它们能够很容易地在几分钟之内生成高质量的usb的驱动程序。
设备中单片机程序的编制也同样困难,而且没有任何一家厂商提供了自动生成的工具。编制一个稳定、完善的单片机程序直接关系到设备性能,必须给予充分的重视。
以上两个程序是开发者所关心的,用户不大关心。用户关心的是如何高效地通过鼠标来操作设备,如何处理和分析采集进来的大量数据,因此还必须有高质量的用户软件。用户软件必须有友好的界面,强大的数据分析和处理能力以及为用户提供进行再开发的接口。
3实现usb远距离采集数据传输
传输距离是限制usb在工业现场应用的一个障碍,即使增加了中继或hub,usb传输距离通常也不超过几十米,这对工业现场而言显然是太短了。
现在工业现场有大量采用rs-485传输数据的采集设备。rs-485有其固有的优点,即它的传输距离可以达到1200米以上,并且可以挂接多个设备。其不足之处在于传输速度慢,采用总线方式,设备之间相互影响,可靠性差,需要板卡的支持,成本高,安装麻烦等。rs-485的这些缺点恰好能被usb所弥补,而usb传输距离的限制恰好又是rs-485的优势所在。如果能将两者结合起来,优势互补,就能够产生一种快速、可靠、低成本的远距离数据采集系统。
这种系统的基本思想是:在采集现场,将传感器采集到的模拟量数字化以后,利用rs-485协议将数据上传。在pc端有一个双向rs-485~usb的转换接口,利用这个转接口接收485的数据并通过usb接口传输至pc机进行分析处理。而主机向设备发送数据的过程正好相反:主机向usb口发送数据,数据通过485~usb转换口转换为485协议向远端输送,如图3所示。
在图3的方案中,关键设备是485~usb转换器。这样的设备在国内外都已经面市。笔者也曾经用nationalsemiconductor公司的usbn9602 89c51 max485实现过这一功能,在实际应用中取得了良好的效果。
需要特别说明的是,在485~usb转换器中,485接口的功能和通常采用485卡的接口性能(速率、驱动能力等)完全一样,也就是说,一个485~usb转换器就能够完全取代一块485卡,成本要低许多,同时具有安装方便、不受插槽数限制、不用外接电源等优点,为工业和科研数据采集提供了一条方便、廉价、有效的途径。
4综合式采集数据传输系统的实现
现在的数据采集系统通常有分布式和总线两种。采用usb接口易于实现分布式,而485接口则易于实现总线式,如果将这两者结合起来,则能够实现一种综合式的数据采集系统。实现方法是:仍然利用上面提到过的usb~485转换器实现两种协议的转换。由于usb的数据传输速率大大高于485,因此在每条485总线上仍然可以挂接多个设备,形成了图4所示的结构,其中d代表一个设备。
这种传输系统适用于一些由多个空间上相对分散的工作点,而每个工作点又有多个数据需要进行采集和传输的场合,例如大型粮库,每个粮仓在空间上相对分散,而每个粮仓又需要采集温度、湿度、二氧化碳浓度等一系列数据。在这样的情况下,每一个粮仓可以分配一条485总线,将温度、湿度、二氧化碳浓度等量的采集设备都挂接到485总线上,然后每个粮仓再通过485总线传输到监控中心,并转换为usb协议传输到pc机,多个粮仓的传输数据在转换为usb协议后可以通过hub连接到一台pc机上。由于粮仓的各种数据监测实时性要求不是很高,因此采用这种方法可以用一台pc机完成对一个大型粮库的所有监测工作。
5前景展望
usb范文篇6
关键词:ch371usb接口at89c52
通用串行总线usb(universalserialbus)是由intel、compaq、digital、ibm、microsoft、nec、nertherntelecom七家世界著名的计算机和通信公司共同推出的新一代总线接口标准。作为一种pc机与外设之间的高速通信接口,usb具有连接灵活、可热插拔、一种接口适合多种设备、速度高(usb1.1协议支持12mb/s,usb2.0协议支持480mb/s)、自动配置、无需定位及运行安装程序、可为外设提供电源、低功耗、低成本、高可靠性等优点,因而在数码相机、便携式仪器、便携式存储设备等产品中广泛应用。
但是,usb接口的开发一般要求设计人员对usb的标准、firmware(固件)编程及驱动程序的编写等有较深入的理解,因此限制了一般的硬件工程师对usb接口产品的开发使用。我们在便携式无线抄表系统中使用的usb接口芯片ch371,使用简单、性能卓越,价格低廉,只要熟悉单片机编程及简单的vb或vc应用程序编程,一般的硬件工程师在极短的周期内就能很容易地开发出相应的usb产品。
1usb总线的通用接口芯片ch371简介
ch371是一个usb总线的通用接口芯片,如图1所示。在本地端,ch371具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机、dsp等控制器的系统总线上。在计算机系统中,ch371的配套软件提供了简洁易用的操作接口,与本地端的单片机通信就如读写硬盘中的文件。ch371屏蔽了usb通信中的所有协议,在计算机应用层与本地端控制器之间提供端对端的连接。使用ch371,不需要了解任何usb协议或者固件程序,甚至驱动程序,就可以轻松地将并口、串口的产品升级到usb接口。它具有以下特点:
*屏蔽usb协议,在计算机应用层与本地端之间提供端对端的连接。
*两种通信模式:单向数据流模式、请求加应答模式,支持伪中断。
*自动完成usb配置过程,完全不需要本地端控制器作任何处理。
*标准的usbv1.1接口,即插即用,d 引脚内置上拉电阻。
*内置4个端点,支持usb的控制传输、批量传输、中断传输。
*通用windows驱动程序,提供设备级接口和应用层接口。
图2
*通用的本地8位数据总线,4线控制,即读选通、写选通、写选输入、中断输出。
*占用16个地址,可选直接地址方式或者复用地址方式。
*内置输入输出缓冲区,以中断方式通知本地端控制器传输数据。
*内置硬件实现的i2c主接口,应用层可以直接读写外挂的i2c从设备。
*在主控方式下可以提供16根输入信号线或者12根独立控制的输出信号线。
*内置上电复位,提供高电平有效复位输出和低电平有效复位输出。
*内置可选的看门狗电路watch-dog,为本地端控制器提供监控。
2基于ch371usb接口的硬件设计
图2给出的是ch371与mcu的硬件接口简图。对mcuat89c52的硬件连接比较简单,主要是在该系统的设计中,如晶振的选择连接以及复位电路等,没有什么特殊的要求,而ch371的复位完全可以采用单片机复位电路产生的复位信号。带i2c接口的串行eeprom24c01的作用是存储产品的vid、pid、设备序列号等信息,只要地址不相同,就可以挂接多片带i2c接口的芯片,用户可以利用提供的动态连接库的函数,非常方便地完成对串地eeprom的读出和写入。系统设计中,也可以没有eeprom,ch371将使用默认的vid、pid、产品描述符和电源描述符,并且没有设备的序列号。
需要注意的是:最好在usb连接器的1和4之间跨接1个100μf的电解电容和1个0.1μf的独石或瓷片电容;12mhz晶振的外壳最好接地;阻抗匹配电阻为80ω~150ω。
3信息传输软件实现流程
下位机数据上传子程序流程简图如图3所示。
下位机中断服务程序流程如图4所示。
对于计算机应用层的程序,在计算机上装载winchiphead提供的ch371的通用驱动程序后,不必再考虑usb通信协议、固件程序、驱动程序、自动配置过程和底层数据传输过程。只需要根据提供的动态连接库的接口函数,用vb或vc编制自己的应用程序即可。
usb范文篇7
关键词:usbγ能谱数据采集wdm
野外地面γ能谱测量技术主要研究地壳岩石土壤中产生的能量范围约为30kev~3000kev的γ射线,这里面包含着轴、钾等天然放射性核元素信息、核工程活动产生的大量人工放射性核元素信息以及γ射线与地壳相互作用产生的相关信息。而用于获取和处理γ能谱数据的多道γ能谱仪是重要的研究课题,其功能是把从γ射线探测器得到的脉冲信号转换为x-y轴的能谱形式并显示出来(x轴代表能量,y轴代表脉冲计数)。
传统的多道γ能谱仪一般采用nim(nuclearinstrumentmodule)插件的标准模式。但其存在体积庞大、抗干扰能力差等缺点,不适合于野外现场测量。为适应多道γ能谱仪智能化、微机化、便携化的实际需要,本设计采用笔记本电脑作为γ能谱仪的上位机。常用接口方式主要有rs-232c串口、红外线端口、epp并口、usb、1394、ethernet等。这几种接口方式的特点比较如表1所示。
表1接口方式特点比较
方式长度(m)速度(b/s)主要优点主要缺点
串口1520k应用广泛,研发简单速度慢,逐渐被淘汰
并口108m速度较快,研发简单逐渐被淘汰
红外线2115k无线传输距离短,可靠性差,耗电大
usb1.1512m传输稳定,速度快,使用方便,具有弹性,代表接口发展方向协议复杂,研发难度较大
13941.5400m传输速度快,具有弹性特定用途(视频),研发难度大
ethernet50010m传输可靠,使用方便,资源共享特定用途(lan),研发难度大
经过比较轮证发现,usb作为近年出现的一种代表微机接口发展方向的新型总线规范,其便捷易用、速度快、可靠性高等特点,使之非常适合作为便携式多道γ能谱仪的接口方式。目前大多数笔记本电脑一般都有两个以下的usb端口,usb规范规定每个端口提供5v、500ma的电量,而笔记本电脑在实际应用时,通常是通过自带锂电池供电的,无法提供足够的电量给外设,这时就会造成外设工作不正常,甚至使系统崩溃。考虑到本系统下位机部分功耗较大,因此供电方式使用外置电源。
笔者在吸收借鉴γ能谱测量技术最新研究成果的基础上,进行了usb便携式多道γ能谱仪的设计。本设计主要完成硬件、固件、设备驱动程序以及应用程序等的设计工作。
图2
1硬件设计
1.1系统总线结构
图1所示为usb便携式多道γ能谱仪的总体结构框图。下位机硬件部分主要由γ射线探测系统(探头)、脉冲信号调理电路、数字电位器、多道脉冲幅度分析器、usb接口电路以及电源电路等构成,其中探头部分包括闪烁探测器、前置电路和高压电路等,多道脉冲幅度分析器主要包括峰值别电路、控制电路、a/d转换电路以及微控制器系统等。上位机由笔记本电脑系统构成。
软件部分由固件、设备驱动和应用程序组成。
1.2usb接口电路
由于usb本身的控制协议较为复杂,需要使用相应的usb接口芯片。本设计采用了philips公司的usb接口芯片pdiusbd12(简称d12),其优点是可以选择合适的微控制器及其开发系统进行外设开发。
d12内部集成了串行输入引擎(sie)、320字节的多结构fifo存储器、收发器以及电压调整器,支持dma方式,采用双缓冲区技术,遵从usb1.1标准。芯片中串行输入引擎(sie)模块起着至关重要的作用,完成所有usb协议层功能,如同步模式识别、并/串转换、位填充/解填充、crc检验/产生、包pid产生/确认、地址识别、握手信号包响应产生等。另外,d12还集成了softconnect、goodlink、可编程时钟输出、低频晶振和终端电阻等特性,提高了系统的性价比。
图4
微控制器采用hyundai公司的gms90l32,它是一种兼容intel8032微控制器的产品,其主要特点是工作电压范围宽(2.7v~5.5v)、功耗低、性价比高。d12与gms90l32的连接如图2所示。本设计使用了多路地址/数据总线复用方式。
此外,本系统选用了美国st公司的psd913f2,它是用于8位微控制器的具有大容量flash存储器、在系统编程(isp)能够和可编程逻辑的器件。它将地址锁存器、flash、sram、pld等集成在一个芯片内,成功地实现了微控制器系统的“mcu psd”两芯片欧洲杯买球平台的解决方案。这种方案既可简化电路设计,节省pcb印制板空间,缩短产品开发周期,又可增加系统可靠性,降低产品功耗。
2系统软件设计
2.1微控制器固件程序
所谓固件程序就是固化在程序存储器中的程序代码。本系统的固件存储在psd913f2的flash存储器中,固件开发使用的是keilc51语言,开发平台为μvision2集成开发环境。
固件的开发是移植与开发相结合。本设计参考了philips公司提供的d12固件程序范例,对于usb协议操作的相关代码可以直接移植使用,而数据采集、传输、存储等部分则是全新的开发工作。
固件程序结构如图3所示。硬件抽象层对d12的数据读、写以及各种指令的写入进行函数封装;d12命令接口层对d12的所有控制指令的函数进行封装;usb向量请求模块完成usb上电配置、向量请求等各类事件的响应处理;usb协议层包括对usb协议操作的封装以及对usb标准请求的响应;中断服务进程包括usb中断、adc中断以及定时器0中断(记录测量时间)等。
主程序及adc中断服务程序流程图如图4所示。主程序首先完成各种初始化,然后进入主循环,等待中断的发生,并根据标志变量执行相应的函数。当打开控制电路时,脉冲峰值别电路自动启动a/d转换,转换结束信号会触发微控制器外部中断1,进入adc中断服务程序,读取a/d转换结果并存入缓存中,然后中断返回。
当d12有事件需要处理时,将触发微控制器外部中断0,微控制器读取d12的中断状态寄存器,判断中断的来源并作出相应的处理。若由数据端点触发,则相应地读取或写入数据;若由控制端点0触发,则判断请求的类型。标准请求由usb协议处理模块处理,用户自定义向量请求由usb向量请求模块处理。
2.2usb设备驱动程序的设计
在windows环境下,usb设备驱动程序遵循wdm(win32drivermode)方式。为了简化设计,并兼顾驱动程序的运行效率,笔者选用了driverstudio2.7工具软件中的driverworks组件进行usb设备驱动程序的开发。driverworks为wdm设备驱动程序的开发提供了完善的支持。其中包含一个非常完善的源代码生成工具driverwizard以及相应的类库和驱动程序范例,它还支持在c 下进行设备驱动程序的开发。通过driverwizard生成的代码只需要进行少量的修改可以使用,这使得驱动程序开发者可以将精力集中在驱动功能的实现上,而不必理会太多的wdm开发细节。
本设计在driverwizard的最后自定义了三个ioctl接口对usb设备进行控制,如表2所示。然后在自动生成的驱动程序代码中向相应的ioctl函数添加代码,用函数buildverdorrequest构建usb协议的自定义向量请求(vendorrequest)。由编译修改后的源代码即可得到驱动程序文件mcad12.sys。
表2自定义ioctl接口
自定义ioctl接口功能说明
mca_ioctl_start启动多道采集数据
mca_ioctl_read开始读取数据
mca_ioctl_start停止多道数据
2.3usb应用程序的设计
应用程序的设计在visualc 6.0开发环境下进行。根据实际要求,本设计需要在软件中对采集的数据进行整理、分析并显示。其功能模块主要有数据采集、谱数据显示、roi操作、系统刻度、谱分析等,其结构框图如图5所示。
在win32系统中,usb设备被抽象为一个文件,应用程序只需要通过几个api函数就可以实现与驱动程序中usb设备的通信。api函数如表3所示。
表3设备文件操作api函数
api函数功能说明
createfile打开设备
readfile从设读取数据
writefile向设备发送数据
closehandle关闭设备
deviceiocontroli/o控制操作
本程序设计使用mfc多线程技术。单击开始按钮,程序就创建一个用户接口线程,并且通过ioctl启动usb设备,然后在此线程每隔一定时间(10~20ms)从usb总线上读取一次数据;而程序自身的主线程则不断地依据读取的数据刷新屏幕,显示多道能谱。当单击停止按钮或是设定采集时间到时,程序则通过ioctl停止usb设备的数据采集,终止用户接口线程,并且停止屏幕谱线的更新。
当创建用户接口线程时,首先从cwinthread类派生一个ciothread类,然后调用afxbeginthread()函数创建ciothread类的对象进行初始化,启动线程运行。根据需要可将初始化和结束代码分别放在类的initinstance()和exitinstance()函数中。其中,initinstance()函数是从usb采集数据的线程的主要函数。从中实现对ioctl的调用、对usb设备数据的读取等功能。其流程如图6所示。
3测试与结论
实测cs放射源γ能谱如图7所示。根据能量为0.6641mev的谱峰,系统可以自动计算能量分辨率,实测能量分辨率小于10%。
usb范文篇8
关键词:usbotc移动应用
usb是连接pc与设备的首选接口。随着高速usb集线器、数码相机、扫描仪、视频会议摄像机、大容量数字存储设备等具有多媒体技术的新型设备的不断涌现,2000年usb-if了usb2.0规范。该规范可提供480mbps的高速传输速率,高速usb2.0与全速usb1.1(传输速率12mbps)和低速usb1.o(传输速率1.5mbps)完全兼容。无论是usb1.1、usb1.0,还是usb2.0,它们都必须通过pc的usb主控制器,在pc的控制下实现与usb设备之间高速、低速的数据交换。作为pc的设备,如果系统没有pc,各设备间无法利用usb接口进行数据交换。目前mp3播放器、数码相机、pda、手机等众多产品都具备usb接口,但它们也只能作为pc外设实现与pc的数据传输,而不能实现它们之间点对点的通信。随着移动终端的普及,不使用pc,直接在移动终端间进行连接的需求越来越多,usbon-the-go(usbotg)的扩展标准正是为了满足这一需求而提出的。usb-if公布的最新版本usbotg就是建立在usb2.0的基础上,用便携式设备作为有限的主机与现有的usb外设相连,以及便携式设备之间的互连,实现它们之间实时、快速的音频数据和视频数据的传输。本文在分析usbotg性能特点的基础上,简要介绍了usbotg在移动领域中的应用及发展前景。
1usbotg的性能特点
1.1usbotg的硬件特点
usb操作简单,即插即用,是免费公开的标准。而且windowsos和许多rtos都提供usb驱动程序,当今市场上已有许多usb设备,usb可以说是无处不在。在移动领域,手机或pda等便携式设备,也需要作为modem连接到pc上进行文件传输,目前许多移动终端生产厂家,都已将usb接口加到新产品上,但它们也只能作为pc外设实现与pc的数据交换。
usbotg扩展了便携式设备之间的连通性,限定了主机(host)功能,在传统的usb外设上增加了主机的功能,适应点对点的连接。在硬件方面,它也添加了更小的连接器和电缆,其中包括袖珍的a插头(mini-a)、袖珍的a插槽(mini-a)和袖珍的ab插槽(mini-ab),这些连接器比通常的usb标准连接器standard-a和standard-b小很多,更适于便携式设备。otg也新增了mini-a至standard-b和mini-a至mini-b两种连接电缆。
otg设备目前有两种:两用otg设备(dual-boledevice)和外设式otg设备(peripheral-onlydevice)。外设式otg设备是传统的usb外设,它只能使用mini-b插槽,不能使用mini-ab插槽。而两用otg设备既可作为主机,也可作为外设。作为主机的两用otg设备不需要支持所有的usb外设,但当它与pc相连时,就只能作为外设使用。两用otg设备都有一个mini-ab插槽,可依照主从设定,通过mini-a或mini-b连接器实现点对点的连接。为了易于区分两用设备,通常mini-a为白色,多为主控接口,插入mini-a的设备为a-设备(a-device);mini-b为黑色,多为从属接口,插入mini-b的设备为b-设备(b-device);mini-ab为灰色,多为双重角色接口。
图1为传统的usb与usbotg的连接对比。在左图中,手机和pda都作为外设式otg设备,通过标准standard-a和mini-b连接器,实现与pc的数据交换。在右图中,手机和pda作为两用otg设备,分别都有一个mini-ab插槽。手机如作为两用otg设备,既可以作为a-设备,完成host的功能,通过mini-a到mini-b连接器,实现手机到pda点对点的实时通信和数据交换;也可以作为b-设备,如标准的usb外设,通过mini-b到mini-a连接器,完成与pda的数据传输。pda同样也是如此。
usbotg通过五脚接口和五线电缆传输数据。除了传统的“vbus”、“d ”、“d-”、“gnd”四个针脚外,第五个针脚为“id”脚,id脚决定了初始化的主从角色:在mini-a插头中,id短路接地,所连设备被初始化为主;在mini-b插头中,id悬空,所连设备被初始化为从。在软件控制下,主从角色也可以利用主设备转换协议(hnp)进行互换。图2为usbotg主从角色的设定。
主设备可提供低功率输出,最小为8ma的电流到usb电缆,当不传输时可关掉vbus。在vbus关闭时,如从属设备需要使用总线,则可请求主设备开启vbus,为vbus重新供电。低功耗可支持usb设备在电池供电的情况下正常工作,延长电池寿命,节省能源。
1.2usbotg的通信协议
usbotg与usb标准仅有最小的差别,如主设备转换协议hnp(hostnegotiationprotoc01)、会议请求协议srp(sessionrequestprotocol)、维持usb通信方式,即usb主/从结构、无对等方式等。主设备转换协议(hnp)可以控制a-设备与b—设备连接中主机角色的转换,它通过a—设备产生使b—设备获得总线控制的条件,使b—设备获得总线控制的机会,实现二者之间的主从转换。会议请求协议(srp)可在会议开始的一个时间段内,vbus高于a—设备的通话门限值,a-设备被默认为主设备。在会议过程中,a-设备与b—设备可通过主设备转换协议,完成主从角色的转换。当vbus跌落到小于a-设备的通话门限值,则通话结束,b—设备将总线控制权交还给a—设备,b—设备再重新转为从属设备,同时,a-设备也还原为主设备。
图3为otg双角色设备驱动程序配置。从图3中可以看出,otg双角色设备驱动程序由usb主设备软件包和usb设备软件包构成。otg驱动通过连接器中“id”的不同连接,或通过是否有主设备转换协议确定双角色设备工作方式的转换,确定使用usb主设备软件包还是usb设备软件包。
当otg双角色设备以主机方式工作时,usb主设备软件包工作。主控制驱动完成usb主设备软件包与双角色usbotg硬件间的数据交换,usb总线驱动保存设备的信息,目标主设备类驱动支持目标设备列表里的设备。otg提供通用的主设备类驱动程序。
当otg双角色设备以从机方式工作时,usb设备软件包工作。设备控制驱动完成usb设备软件包与双角色usbotg硬件间的数据交换,usb协议层完成usb协议规范,usb设备类驱动的功能取决于该双角色otg设备的功能。
2usbotg在移动领域中的应用
usbotg实现了手机或pda与其它usb外设的无障碍连接。图4和图5分别为otg在手机和pda上的应用。在图4中,作为主设备的手机,与手机相连交换信息;与数码相机相连,通过e-mail发送图片,也可上载图片到互联网页;与扫描仪相连,可获得扫描的名片信息;与mp3相连,可交换或发送音乐;与便携式硬盘相连交换文件;与键盘相连,可作为用户接口。
在图5中,作为主设备的pda,与pda、手机相连交换文件;与数码相机相连,可上载图片;与扫描仪相连,可获得图片信息;与mp3相连,可交换音乐文件;与便携式硬盘相连交换文件;与打印机相连打印文件;与键盘相连,可作为用户接口。
usbotg标准的支持者很多。philips是目前usbotg产品化进展最快的厂家之一,推出了usbotg收发器——isp1301、usbotg控制器——isp1362等产品。
usb范文篇9
现代工业生产和科学研究对数据采集的要求日益提高。目前比较通用的是在pc或工控机内安装数据采集卡(如a/d卡及422、485卡)。但这些数据采集设备存在以下缺陷:安装麻烦、价格昂贵、受计算机插槽数量、地址、中断资源的限制,可扩展性差,同时在一些电磁干扰性强的测试现场,可能无法专门对其作电磁屏蔽,从而导致采集的数据失真。
传统的外设与主机的通讯接口一般是基于pci总线、isa总线或者是rs-232c串行总线。pci总线虽然具有较高的传输速度(132mbps),并支持“即插即用”功能,但其缺点是插拔麻烦,且扩展槽有限(一般为5~6个),isa总线显然存在同样的问题。rs-232c串行总线虽然连结简单,但其传输速度慢(56kbps),且主机的串口数目也有限。
通用串行总线(universalserialbus,简称usb)是1995年康柏、微软、ibm、dec等公司为了解决传统总线的不足,而推出的一种新型串行通信标准。该总线接口具有安装方便、高带宽、易扩展等优点,已经逐渐成为现代数据传输的发展趋势。基于usb的数据采集系统充分利用usb总线的上述优点,有效地解决了传统数据采集系统的缺陷。usb的规范能针对不同的性能价格比要求提供不同的选择,以满足不同的系统和部件及相应不同的功能,从而给使用带来极大方便。
2系统介绍
2.1数据采集系统的结构与功能
常见的数据采集系统的硬件总体结构如图1所示。其中数据采集接口卡是硬件部分的核心,它包括a/d转换器、微控制器、usb通信接口等。
在高速数据采集系统中?由于现场输入信号是高频模拟信号,因而信号的变化范围都比较大?如果采用单一的增益放大?那么放大以后的信号幅值有可能超过a/d转换的量程?所以必须根据信号的变化相应地调整放大器的增益。在自动化程度较高的系统中?希望能够在程序中用软件控制放大器的增益?ad8321正是这样一种具有增益可编程功能的芯片。ad8321是美国ad公司生产的一种增益可编程线性驱动器。它具有频带宽、噪声低、增益可编程且易于与单片机进行串行通信等优点,十分适合在数据采集系统中做前置放大。
经过调理后的信号可送入模/数变换器(adc)进行a/d变换。笔者选用的adc是tlc5540,它是一种高速8位模拟数字转换器,能以高达每秒40m的采样速率进行转换,由于采用半闪速结构和cmos工艺制造,因此功耗和成本很低。其75mhz(典型值)的模拟输入带宽使该器件成为欠采样应用的良好选择。该器件带有内部电阻,可用于从5v电源产生2v满度的基准电压,以减少外部元件数。数字输出置于高阻方式。它仅需要5v电源工作,可由usb总线供电。
由于数据采集接口卡是硬件部分的核心,因此应选择能适用usb协议的合适芯片。ez-usbfx2是一种usb2.0集成微控制器。它的内部集成了usb2.0收发器、串行接口引擎(sie)、增强的8051微控制器和一个可编程的串行接口。其主要特性如下:
带有加强的8051内核性能,可达到标准8051的5~10倍,且与标准8051的指令完全兼容;集成度高,芯片内部集成有微处理器、ram、sie(串行接口引擎)等多个功能模块,从而减少了多个芯片接口部分需要时序配合的麻烦;采用软配置,在外设未通过usb接口接到pc机之前,外设上的固件存储在pc上;而一旦外设连接到pc机上,pc则先询问外设是“谁”(即读设备描述符),然后将该外设的固件下载到芯片的ram中,这个过程叫做再枚举。这样,在开发过程中,当固件需要修改时,可以先在pc机上修改好,然后再下载到芯片中;具有易用的软件开发工具,该芯片开发系统的驱动程序和固件的开发和调试相互独立,可加快开发的速度。
2.2方案选择
fx2有三种可用的接口模式:端口、gpif主控和从fifo。
在“端口”模式下,所有i/o引脚都可作为8051的通用i/o口。
在“从fifo”模式下,外部逻辑或外部处理器直接与fx2端点fifo相连。在这种模式下,gpif不被激活,因为外部逻辑可直接控制fifo。这种模式下,外部主控端既可以是异步方式,也可以是同步方式,并可以为fx2接口提供自己的独立时钟。
“gpif主控”接口模式使用portb和portd构成通向四个fx2端点fifo(ep2?ep4?ep6和ep8)的16位数据接口。gpif作为内部的主控制器与fifo直接相连,并产生用户可编程的控制信号与外部接口进行通信。同时,gpif还可以通过rdy引脚采样外部信号并等待外部事件。由于gpif的运行速度比fifo快得多,因此其时序信号具有很好的编程分辨率。另外,gpif既可以使用内部时钟,也可以使用外部时钟。故此,笔者选择了gpif模式。
高速数据采集卡的设计存在两大难点:一是模拟信号的a/d高速转换;二是变换后数据的高速存储及提取。对于第一个问题,由于制造adc的技术不断进步,这个问题已经得到解决。而对于第二个问题,一般的数据采集系统是将a/d转换后的数据先存储在外部数据存储器中,然后再对其进行处理。对于高速数据采集而言,这种方式将严重影响采集速度,且存储值也会受到很大限制。而改进方案是将a/d转换后的数据直接送至计算机内存,这样,采集速度将大大提高,而且可存储大量数据,以便于下一步的处理。
为了解决同步问题,可以由cpld产生同步时钟信号提供给adc和fx2。在本数据采集系统的设计中,cpld同时还可用于产生不同的控制信号,以便对采样进行实时控制。cpld是复杂可编程逻辑器件,它包括可编程逻辑宏单元、可编程i/o单元和可编程内部连线。由于cpld的内部资源丰富,因而可广泛应用在数据采集、自动控制、通讯等各个领域。在本系统的设计中,笔者选用的cpld是lattice公司的isplsi1016。图2所示是其整个usb接口卡的硬件电路图。
3系统软件设计
该系统软件主要包括usb设备驱动程序、设备固件和应用程序。
3.1设备固件(firmware)设计
设备固件是设备运行的核心,可采用汇编语言或c语言设计。其主要功能是控制cy7c68013接收并处理usb驱动程序的请求(如请求设备描述符、请求或设置设备状态,请求或设置设备接口等usb2.0标准请求)、控制芯片cy7c68013接收应用程序的控制指令、控制a/d模块的数据采集、通过cy7c68013缓存数据并实时上传至pc等。
即使外部逻辑或内置的普通可编程接口(gpif)在没有cpu的任何干涉下能够通过四个大的端点fifo来处理高速宽带数据,固件还是有如下固定的工作:
配置端点;通过控制端点零来响应主机请求;控制和监测gpif的活动;利用usart处理所有的特殊请求任务,如计时器、中断、i/o引脚等。
3.2usb设备驱动程序开发
usb系统驱动程序采用分层结构模型?分别为较高级的usb设备驱动程序和较低级的usb函数层。其中usb函数层由两部分组成:较高级的通用串行总线驱动程序模块(usbd)和较低级的主控制器驱动程序模块(hcd)。
在上述usb分层模块中,usb函数层(usbd及hcd)由windows提供,负责管理usb设备驱动程序和usb控制器之间的通信;加载及卸载usb驱动程序;与usb设备通用端点(endpoint)建立通信并执行设备配置、数据与usb协议框架和打包格式的双向转换任务。目前?windows提供有多种usb设备驱动程序,但并不针对实时数据采集设备,因此需采用ddk开发工具来设计专用的usb设备驱动程序。该设备驱动程序应由初始化模块、即插即用管理模块、电源管理模块以及i/o功能等四个模块来实现。
初始化模块可提供一个driverentry入口点以执行大量的初始化函数。
即插即用管理模块用来实现usb设备的热插拔及动态配置。当硬件检测到usb设备接入时,windows查找相应的驱动程序,并调用它的driveren-try例程,同时告诉它添加了一个设备;然后,驱动程序为usb设备建立一个fdo(功能设备对象)。在此处理过程中,驱动程序收到一个irpmnstartde-vice的irp,在它之中包括有设备的资源信息。至此,设备被正确配置,驱动程序开始与硬件进行对话。当然,在设备运行过程中,如果设备状态发生变化(拔除、暂停等),pnp管理器也同样发出相应的irp,以便由驱动程序进行相应的处理。
电源管理模块负责设备的挂起与唤醒。
i/o功能实现模块可完成i/o请求的大部分工作。当应用程序提出i/o请求时,它将调用win32api函数deviceiocontrol向设备发出命令,然后由i/o管理器构造一个irp并设置其majorfunction.域为irpmjdevicecontrol。在usb设备驱动程序收到该irp后?它将取出其中的控制码?并利用一个开关语句查找对应的程序入口。
3.3应用程序设计
应用程序设计由两个部分组成:动态链接库和应用程序。动态链接库负责与内核态的usb功能驱动程序通信并接收应用程序的各种操作请求,而应用程序则负责对所采集的数据进行实时显示、分析和存盘。
动态链接库的工作原理如下:当它收到应用程序开始采样的请求后,首先创建两个线程:采样线程和显示存盘线程。采样线程负责将采样数据写到应用程序提交的内存;而显示存盘线程则负责给应用程序发送显示和存盘消息。当应用程序接收到此消息后,便从它提交的内存中读取数据并显示和存盘。要注意的是:采样线程和显示存盘线程在读写应用程序提交内存时要保持同步。
pc机或工控机应用程序是数据实时采集系统的中心?可采用labview编程。它是当今国际上唯一的编译型图形化编程语言,其特点如下:
(1)能完成对固体表面速度的实时测量;
(2)主介面与多重窗口结合?可完成数据连续采集、实时统计分析、系统参数设置、信号波形显示、被测参数输出等综合系统功能。
(3)能充分利用labview开发平台和windows视窗所提供的良好操作环境?集曲线、图形、数据于一体?可准确描述过程参数的变化。
图3所示是用高速数据采集系统采集通过lab-view显示的一个波形实例,其输入信号是一个频率为5mhz的正弦波。
usb范文篇10
关键词:lonworks神经元芯片并行口i/o模式ez-usb
lonworks技术是美国echelon公司于上世纪90年代初推出的一种现场总线技术。lon(localoperatingnetwork)的意思为局部操作网络,它是用于开发监控网络系统的一个完整的技术平台,lonworks现场总线在网络通讯方面具有突出的优点,作为现场总线中的佼佼者在国内各个领域的测控系统中广泛流行。
通用串行总线(universalserialbus,即usb)是一种快速、灵活的总线接口。与其它通信接口相比,usb总线接口最大的特点是易于使用,这主要表现在成本低、适用于多种设备、支持热插拔等方面,并且所有的配置过程都由系统自动完成,无需用户干预。目前,市场上供应的usb控制器主要有两种:带usb接口的单片机(mcu)和纯粹的usb接口芯片。本文采用cypress公司推出的带智能usb接口的ez-usb单片机。该单片机极大地降低了usb外设的开发难度,为pc机外设的制造商提供了一个性能优良、价格较低的设计方案。采用usb接口设计开发的lon网互联适配器很好地解决了传统适配器由于rs-232与pc/laptop互联而造成的速度上的瓶颈。
1系统框图及工作原理
1.1系统框图
系统框图如图1所示。
互联适配器是lon网与pc/laptop的接口,在通信过程中起着关键的作用,它既完成了lon网与pc/laptop的互联,又实现了数据的交换。互联适配器作为lon网的一个特殊的网络节点——通信处理器,能按照lontalk协议与lonworks总线上所有分布在现场的智能节点进行对等的数据通信,起到上传下达的桥梁作用。当现场的测控设备有数据送到lonworks网络上时,互联适配器负责把所有发送给它的信息接收下来,将测控设备发送来的lontalk显式报文重新打包装帧,向pc/laptop发送。同时,它将从pc/laptop接收来的已解析的数据按lonworks现场总线通信协议构造lontalk显式报文,发送给lonworks网上的测控设备。
相对usb系统而言,pc/laptop是usb主机,互联适配器只是usb外部设备。在整个usb系统中只有一个主控制器,即主机(pc/laptop),主机是总线控制者,usb设备响应主机请求。系统软件设计部分也是针对主机和外部设备这两部分展开的。
1.2工作原理
互联适配器中采用neuron芯片预定义的并口i/o应用模式实现双cpu的通信,并行口的速率可达3.3mbps,实现了高数据速率。
并行i/o应用模式下利用neuron芯片的11个i/o口进行通信,其中,io0~io7为双向数据线,io8~io10为控制信号线,借助令牌传递/握手协议,并行i/o口可用来外接处理器,实现neuron芯片与外接各类微处理器之间的双向数据通信,在这里采用ez-usb单片机与neuron芯片互连。主机pc/laptop控制usb外部设备,通过互联适配器与lon网各现场节点通信,其实质就是互联适配器中ez-usb单片机与neuron芯片之间的通信。
并行口的工作方式有三种,即主模式、从a模式、从b模式。不同的模式下,io8~io10这三根控制信号线的意义不同,这里应用的是从a模式。在从a模式中,认为neuron芯片为从cpu,ez-usb单片机为主cpu,主cpu和从cpu之间的数据传输通过虚拟的写令牌传递协议(virtualwritetoken-passingprotocol)得以实现。主cpu和从cpu交替地获得写令牌(writetoken),只有拥有写令牌的一方可以写数据(不超过255个字节),或者不写任何数据传送一个空令牌。传送的数据要遵从一定的格式,即在要传送的数据前面加上命令码和传送的数据长度,命令码有cmd_xfer(写数据)、cmd_null(传递空令牌)、cmd_resync(要求从机同步)、cmd_acksync(确认同步)四种,最后以eom字节结束。在从a方式中,整个握手/应答协议以及数据传送的实现过程是自动完成的。在通信以前,主cpu和从cpu之间先建立握手信号,即hs信号有效(这由3150的固件自动实现)。然后,主cpu再送一个cmd_resync命令,要求从cpu同步,而从cpu接收到这个信号以后,则发送cmd_acksync,表示已经同步、可以通信了。同步以后,虚写令牌就在主cpu和从cpu之间无限地、交替地传递,拥有虚写令牌的一方就可以向数据总线上写数据,即主cpu可以往从cpu写数据,从机也可以将数据传往主cpu。
需要特别说明的是,neuron芯片的握手及令牌传递的实现是自动的,但是对于非neuron芯片的微处理器(ez-usb),就要求编程人员通过编程使非neuron芯片的微处理器能够执行neuron芯片的握手/令牌传递算法,也即是复制neuron芯片的行为,从而实现双方的通信。
图2互联适配器硬件结构框图
2硬件设计
互联适配器的结构框图如图2所示,主要由神经元芯片和ez-usb单片机组成。
神经元芯片(neuronchip)是lonworks技术的核心?熏芯片中含有lontalk协议的固态软件(简称固件),使其能可靠地通信。神经元芯片主要包含tmpn3150和tmpn3120两大系列,由日本东芝公司生产。tmpn3150支持外部存储器,适合更为复杂的应用,而tmpn3120则不支持外部存储器,它本身带rom。所以,在互联适配器的设计中选用的是tmpn3150,该芯片内有三个微处理器,即mac处理器、网络处理器和应用处理器。对神经元芯片进行电路的设计和扩展,使之成为lonworks网上的一个特殊的lon节点,这样它不仅可以与lonworks网络上的lon节点进行通信,还可以作为适配器的协通信处理器。
tmpn3150片内存储器的地址范围是e800h~ffffh,包括2kb的ram、0.5kb的eeprom、2.5kb保留空间和1kb的用于存储器映象i/o的空间。tmpn3150有16根地址线,可寻址64k空间,可以外接存储器,如ram、rom、eeprom或flash等。由于开发neuron芯片时采用neuronc语言,内存占用大,另外其作为通信协议处理器使用要求有大量的数据缓冲区进行数据交换,而仅仅利用3150内部的2kram空间是远远不够的,因此扩展了外部存储器flash和ram。flash选用at29c512,其地址范围是0000h~7fffh;ram选用is61c256ah-15n,其地址范围是8000h~dfffh。at29c512和is61c256ah-15n的地址范围由neuron芯片的地址线和控制线e及相关的逻辑门电路来确定。神经元芯片的晶振为10mhz。neuron芯片与lon的网络介质的接口采用上海工业自动化仪表研究所生产的双绞线收发器。收发器按其传输速率可以分为tpt/xf-78(传输速率为78kbps)、tpt/xf-1250(传输速率为1.25mkbps)两种型号,用于满足不同的通讯要求。这里选用的是tpt/xf-1250。
ez-usb单片机采用的是ez-usb2100系列中具有44个引脚的an2131s。an2131s是互联适配器的主cpu,利用其i/o端口足以完成所需的功能。ez-usb芯片中包含内部程序/数据ram共8kb?熏不再需要rom或其它非易失性存储器。主cpu与辅cpu的连接很简单,即与辅cpu的11个i/o口进行连接。单片机的pb口接上辅cpu的io0~io7,为两个cpu的并行通讯数据端口。单片机的pc0~pc2分别接神经元芯片io8~io10,完成控制功能。an2131s再通过引脚usbd+和usbd-与主机pc/laptop互联。
3软件设计
适配器的软件程序设计分为两大块。一块为对主机pc/laptop程序的软件设计,另一块为对usb设备——互联适配器程序的软件设计。
3.1usb主机的软件设计
主机的软件设计主要包括两部分:一是基于usb的互联适配器的驱动程序。如图3所示,usb通信使用分层驱动模型,每层处理一部分通信过程,这样可以使不同设备在一些任务上使用相同的驱动。这里使用microsoftwdmddk和microsoftvisualc++6.0来完成。
二是usb通信程序和用户服务程序。用户服务程序通过usb通信程序与系统usbdi(usbdeviceinterface)通信,由系统完成usb协议的处理与数据传输。从逻辑上讲,usb数据的传输是通过管道进行的。usb系统软件通过缺省管道(与端点0相对应)管理设备,设备驱动程序通过其它的管道来管理设备的功能接口。为了满足不同外设和用户的要求,usb提供了四种传输方式:控制传输、同步传输、中断传输和块传输。本系统使用的是块传输。ez-usb提供了16个用于块传输的端点,包括7个in端点(ep1_in~ep7_in)和7个out端点(ep1_out~ep7_out)。每个端点都有一个64字节的缓冲区。块端点无方向控制,一个端点地址对应一个方向,所以端点in1的地址不同于端点out1的地址,本适配器就采用这对端点传输数据。其中,端点0在usb系统中有特定含义,它是ez-usb芯片中唯一的控制端点,用于传输控制信息。
开发可以访问互联适配器的应用程序,可使用任何一个支持win32函数createfile()和deviceiocontrol()的编译器。首先调用createfile()函数,来取得访问设备驱动程序的句柄,createfile()使用设备的链接符作为函数参数。然后调用deviceiocontrol()函数来提交i/o控制码,并且为createfile()函数返回的设备句柄设置i/o缓冲区。最后,还要调用closehandle()关闭设备。其中,最重要的函数是deviceiocontrol(),它的功能是完成应用程序与驱动程序之间数据的交换。deviceiocontrol()函数的具体格式为:
booldeviceiocontrol(
handlehdevice,//外设句柄
dworddwiocontrolcode,//i/o操作控制代码
lpvoidipinbuffer,//输入缓冲区指针
dwordninbuffersize,//输入缓冲区大小
lpvoidipoutbuffer,//输出缓冲区指针
dwordnoutbuffersize,//输出缓冲区大小
lpdwordipbytesreturned,//实际返回的字节数
lpoverlappedipoverlapped//用于异步操作的结构指针
);
3.2usb设备——互联适配器的软件设计
这一部分的软件编写也包括两部分。一部分为对主cpu(ez-usb)的编写。usb内核功能强大,可以自动完成usb协议的转换,从而大大简化了8051的代码。采用c51语言,并使用ez-usb的固件函数库和程序框架。框架完成了一个简单的任务循环,用户函数td_poll()能够实现usb外设的功能。因为从cpu(neuronchip)的并行模式是芯片内部定义的,遵从虚拟的写令牌传递协议,所以需要编写芯片ez-usb的程序来模拟3150的i/o并行口的从a模式。所以td_poll()函数主要完成四项工作:与辅cpu同步、握手、令牌的传送以及并行口数据的读写。
另一部分为从cpu的软件程序的编写,用神经元的编程语言即neuronc语言完成。从cpu主要完成将并口得到的报文解析,再利用neuronc的消息传送机制,将解析的消息传送给适配器下层的应用节点;同时,还将从适配器下层的应用节点以消息形式传送上来的数据或信息构造成ez-usb可识别的报文,通过并口传送给ez-usb。由从机内部定义的与并行i/o对象有关的函数主要有:
io_in_ready():当并口上有数据传送到来时,此函数值为true。此时可调用io_in?穴?雪函数接收数据。
io_out_request():此函数用来向并口总线发出请求以获取令牌。
io_out_ready():当并口总线处于可写状态即3150获取到令牌后,此函数值为true,此时可调用io_out()函数将数据发送到并口。在调用此函数之前应先调用io_out_request()。
io_in():将并口上的数据接收到缓冲区。