usb系统范文10篇-ag尊龙app
时间:2023-03-30 20:43:36
usb系统范文篇1
关键词:通用串行总线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系统范文篇2
关键词:通用串行总线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系统范文篇3
关键词: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系统范文篇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
1、usb总线特点
(1)数据传输速率高
(2)数据传输可靠
(3)同时挂接多个usb设备
(4)usb接口能为设备供电
(5)支持热插拔。
usb还具有一些新的特性,如:实时性(可以实现和一个设备之间有效的实时通信)、动态性(可以实现接口间的动态切换)、联合性(不同的而又有相近的特性的接口可以联合起来)、多能性(各个不同的接口可以使用不同的供电模式)。
2、usb接口的结构与典型应用
usb接口引脚定义如图4所示。usb接口数据传输距离不大于5米。其典型应用如下图5所示。
usb总线上数据传输方式有控制传输、同步传输、中断传输、块数据传输。在图5所示系统中,usbhost根据外部usb设备速度及使用特点采取不同的数据传输特点。如通过控制传输更改键盘、鼠标属性,通过中断传输要求键盘、鼠标输入数据;通过控制传输改变显示器属性,通过块数据传输将要显示的数据送给显示器。
3、器件选用:
usb2.0器件:cypress公司fx2系列;
高速adc:ti、lt、ad公司的高速(40msps~80msps)8位adc系列;
高精度adc:ti、lt、ad公司的中高速(2msps~40msps)12/14位adc系列;
高速dac:ad、lt公司的高速(40msps~80msps)8位dac系列;
高精度dac:ad、lt公司的中高速(20msps~80msps)12/14位dac系列;
4、ex-usbfx2的主要特点
ez-usbfx2芯片包括1个8051处理器、1个串行接口引擎(sie)、1个usb收发器、8.5kb片上ram、4kbfifo存储器以及1个通用可编程接口(gpif),如图2所示。fx2是一个全面集成的凯时k66会员登录的解决方案,它占用更少的电路板空间,并缩短开发时间。
ez-usbfx2拥有1个独特的架构,其中包括1个智能串行接口引擎(sie)。它执行所有基本的usb功能,将嵌入式mcu解放出来以用于实现专用的功能,并保证其持续的高性能的传输速率。fx2还包括2个通用可编程接口(gpif),允许它“无胶粘接”,即可与任何asic或dsp进行连接,并且它还支持所有通用总线标准,包括ata、utopia、epp和pcmcia。ez-usbfx2完全适用于usb2.0,并向下兼容usb1.1。
fx2有3种封装形式:56脚sopp、100脚的tqff(薄形四方扁平封装)、128脚的tqfp。引脚数的区别在于输入、输出引脚数的不同,以针对不同的应用要求。
5、本系统的功能:
1、有pga(可编程增益放大器),adc采用20msp~40msps中高速8位adc,dac采用20msps~40msps中高速8位dac。
2、sram采用128k×8高速sram。
3、3、具备16通道数字输入和16通道数字输出,也可以配置为32通道数字输出或32通道数字输入。
4、编写了usb2.0器件的介绍文档,让用户熟悉cypress公司usb器件各种特性。
5、根据usb2.0器件各种内部特性,编写了相应的固件代码和上层测试程序。
6、编写了usb2.0内部传输速度测试程序,以多媒体图象显示程序为例(将图象下载到fx2中,读回主机显示,计算每秒显示帧数)。
7、将usb2.0的slavefifo引出,用户可以将slavefifo通道连接到用户板上试验。
8、配套模拟数据采集显示软件,可以作为功能较为完全的数字存储示波器使用。
usb系统范文篇7
关键词: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系统范文篇8
关键词: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”两芯片凯时k66会员登录的解决方案。这种方案既可简化电路设计,节省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系统范文篇9
关键词:usb2.0fpfofpga固件程序主从系统
引言
数据采集在现代工业生产及科学研究中的重要地位日益突出,并且实时高速数据采集的要求也不断提高。在信号测量、图像处理、音频信号处理等一些高速、高精度的测量中,都需要进行高速数据采集。现在通用的高速数据采集卡一般多是pci卡或isa卡,这些采集卡存在很多缺点,比如安装麻烦,价格昂贵,尤其是受计算机插槽数量、地址、中断资源的限制,可扩展性差。
通用串行总线usb是用来连接设备与计算机之间的新式标准接口总线。它是一种快速、双向、同步传输、廉价的并可以实现热拔插的串行接口。usb技术是为实现计算机和通信集成而提出的一种用于扩充pc体系结构的工业标准。基于usb接口的高速数据采集卡,充分利用了usb总线的优点,它也必将被越来越多的用户所接受。
1usb数据采集卡原理
1.1usb简介
usb是英文universalserialbus的缩写,中文含义是“通用串行总线”。它支持在主机与各式各样即插即用的外设之间进行数据传输。它由主机预定传输数据的标准协议,在总线上的各种设备分享usb总线带宽。当总线上的外设和主机在运行时,允许自由添加、设置、使用以及拆除一个或多个外设。usb总线技术的提出就是想利用单一的总线技术,来满足多种应用领域的需要。usb1.1协议支持两种传输速度,即低速1.5mbps和高速12mbps。为了在高速接口之争中占有一席之地,2000年了usb2.0协议,它向下兼容usb1.1协议,数据的最高传输速率提高到480mbps,这就使usb对打印机和其它需要快速传递大容量数据的外设更具吸引力。
为了满足实际数据采集usb传输速度较高的需要,选择了cypress公司的内置usb接口微控制器芯片ezusbfx2系列,开发了具有usb接口的高速数据采集卡。
1.2系统框图
usb系统是一个主从系统,而非对等(peer-to-peer)系统。在主从系统中,命令是由主设备发出,而从设备只能接收命令,只有在主设备读取数据时,从设备才能提交数据。如图1所示,在usb控制器与电路之间需要一个fifo,来充当数据的缓存区。那么,在usb从设备向主设备发送数据时存在一个问题:fifo多大才能满足要求。为了满足数据采集中高速实时流数据垢应用,避免fifo溢出,在我们的系统中,通过fpga及sdram构造一个容量的fifo(图1虚线框内所示),可以提供一个低成本并能满足高速实时流数据传输的凯时k66会员登录的解决方案。
图2
2usb数据采集卡硬件
2.1ez-usbfx2(cy7c68013)芯片
cypress公司的ez-usbfx2系列芯片是最早符合usb2.0协议的微控制器之一,它集成了符合usb2.0协议的收发器(transceiver),串行接口引擎(sie),增强型的8051内核以及可编程的接口。fx2系列芯片独特的结构使得数据传输速度最高可达56mbps,最大限度地满足了usb2.0的带宽。
ez-usbfx2的微处理器是一个增强型的8051内核,性能可达标准8051的5~10倍,并与标准8051的指令完全兼容。增强型的8051内核使用ram世馘作程序指令和数据存储器,从而使得ez-usbfx2具有“软”特性,也就是说,可以通过自行编写程序指令来实现所需的功能。ez-usbfz2使用增强型sie/usb接口(称为usb核),通过执行usb部本身的协议来简化8051代码编写的工作。这样采用硬件完成usb塄,简化了固件代码的编制。对于固件代码的使用,主机通过软件下载的方法实现。这种方法充分利用fz2内部的8kbram来装载8051代码和数据。由于ez-usbfz2具有重新枚举的能力,所以在初始化枚举时,用户并不需要断天设备就可以装载新的描述符。设备描述符和8051程序代码都能通过主机中的磁盘文件下载,只有制造商号、产品号和设备号从启动时从一个16字节的eeprom下载到硬件中的。通过这种方式,可以比较容易地从主机升级软件和修改usb总线设备的固件代码。
ez-usbfx2的通用可编程接口gpif以及master/slave端点fifo所对应的8/16位数据总线,可以很容易地实现fx2与当前一些主流通过接口(如ata、utopia、epp、pcmcia和大部分dsp处理器)的互连。它共有7个端点,端点0,端点1和in和out,还有端点2、4、6和8。其中,前3个端点的大小是固定的64字节,后4个端点默认大小是2级512字节的fifo,端点2和端点4默认是out端点,端点6和端点8默认是in端点,而端点2和6分别可以定义为2级、3级或4级的存储器,每级的大小也可以是512字节或1024字节。从ez-usbfx2方向来看,一个端点相当于通过总线收发数据的缓冲区,ez-usbfx2从out缓冲区中读取端点数据,将通过usb传的端点数据写入in缓冲区。它求全责备速(12mbps)和高速(480mbps)传输速率,并具有usb协议所规定的4种传输方式,即控制方式(controlmode)、中断传输方式(interruptmode)、批量传输方式(bulkmode)和等时传输方式(isochronousmode)。
ez-usbfx2系列是基于ram的“软”结构,在开发过程中允许无限制设置和升级;它支持全速usb总线吞吐量的传输,使用ez-usbfx2进行设计,可以不受端点数、缓冲区大小和传输速度的限制;此外,其内核中做了大量的辅助指令,简化了编码,同时也加快了对usb特性的了解。基于以上ez-usbfx2系列芯片的特性,在开发的过程中,采用了ez-usbfx2系列中的cy7c68013芯片(128引脚),其简化结构如图2所示。
fx2可配置成三种不同的接口模式ports、gpifmaster和slavefifo,本项目采用slavefifo模式。在该模式下,外部逻辑或外部处理器直接连接到fx2的端点fifo,gpif没有被激活,因为外部逻辑可以直接控制fifo,所以fifo的基本控制信号(标志、片选、使能)由fx2的引脚引出。外部控制可以是同步或异步,可以使用内部时钟,也可以向fx2的接口提供外部时钟。
2.2fpga芯片ep1c6-q240
在本设计中,所用的fpga采用altera公司最新的cyclone芯片ep1c6-q240。它是一款高速价比的fpca芯片,工作电压为1.5v,采用0.13μm工艺技术,全铜sram工艺,其存储器密度可达5980个逻辑单元,包含20个128×36位的ram块,总的ram空间达到92160位,内嵌了2个锁相环电路和一个用于连接sdram的特定双数据率(deficateddatarate)接口。此外,该芯片还支持多种不同的i/o标准(包括pci接口,可连接assp和asic设备的接口以及串行设备接口等)。
这里fpga的作用除了与sdram构成一个大容量的fifo以外,还需要完成一些控制功能。对于本文的应用,需要完成hdb3码到nrz码的转换及数据的串并转换等。具体问题要具体分析,用户可根据自己的需求对fpga进行编程。
2.3a/d转换芯片max1180
max1180是maxim公司的双通道105msps、3.3v工作电压、低功耗的高速a/d芯片,采样数据10位电平量化。它是采用差分输入,带有宽带跟踪/保持(track-and-hold)的双通道9级流水线型结构的adcs,如图3所示。实际的芯片包括两个图示的电路,作为输入的两路通道,互不干扰。各路采样信号每半个时钟周期通过一个stage,完成连续转换到数据输出共需5个时钟周期。每个流水线首先通过一个1.5位的快闪adc对输入电码量化,然后再由dac产生一个对应于量化结果的电压并与输入电压作差,输出电压放大2倍后送到下一级流水线处理。a/d-d/a两次变化以及差分处理的目的在于进行差错校正,以保证在流水线上的各个阶段,adc的偏移量得到补偿并且无代码丢失。
2.4硬件连接
根据系统对数据传输的速度和实时性的要求,配置cy7c68013工作的接口模式为slavefifo模式。当进行数据采集时,硬件连接方式如图4所示。
a/d转换器的采样时钟同时作为cy7c68013的slavefifo模式的读写控制时钟,即cy7c68013的接口时钟连接到ifclk引脚。scwr/slrd是cy7c68013slavefifo的写使能/读允许信号。fpga向c7c68013slavefifo提供slavefifo输出允许信号sloe,仅在数据输出时有效。fd[15:0]为16位双向数据总线。fifoadr1:0》为端点fifo选择信号。在数据输入时固定为00,选择的是端点2;在数据输出时固定为10,选择的是端点6。
3usb数据采集卡软件
软件设计是一个usb设备开发的必备环节。usb应用系统软件设计分为三部分:初始化软件、主机操作系统上的客户驱动程序以及主机应用程序。初始化软件是下载到控制器中的固件代码,它响应各种来自系统的usb标准请求(包括usb设备的枚举、驱动程序的选择加载等),完成连接设备和主机的任务。主机应用软件通过客户驱动程序与系统usbi(usbdeviceinterface)进行通信,其主要任务是将采集进来的数据流,根据所需处理功能的要求来完成各种基于windows程序的处理。
3.1ez-usbfx2的初始化
通过固件程序的调度,主机才能得到设备的描述符以及完成端点数据的传输。对于固件程序的编程,其基本结构如下:
①初始化,包括处理器和电路的初始化;
②主函数,包括完成符合设备特定要求的代码;
③中断处理,包括处理各种中断的程序代码。
总的来说,固件程序的编写有两种方式。其一,对于熟悉8051汇编语言的用户来说,可以直接利用汇编语言编写结构紧凑、高效率的固件代码;其二,ez-usb以利用现成的固件程序框架函数,根据设备的需求添加相庆的用户,来完成特定的目的。
为了加快usb接口的开发过程,利用ez-usbfx2提供的一些框架函数来简化用户代码,使用相应端口(端口2输入,端口6输出)利用ez-usbfx2的slavefifo结构采用此处理传输,基本的固件程序框架函数如下:
voidtd_init(void)//该函数用来完成ez-usbfx2的初始化
{cpucs=0x10;//工作频率48mhz
ifconfig=0xc3;//决定fx2的工作模式(slavefifo)及相关设置
in07val=bmep2;
out07val=bmep6;//使能端点2输入和端点6输出
…
ep2fifocfg=0x6d;//autoout=0,autoin=1,wordwide=1
syncodelay;
ep6fifocfg=0x75;//autoout=1,autoin=0,wordwide=1
syncdelay;//对端点2和端点6的配置,wordwide=1配置的是使用16位数据线。
ep2cfg=0xea;//端点2:输入、批量传输、最大包字节为1024,双缓冲
syncdelay;
ep6cfg=0xaa;//端点6:输出、批量传输、最大包字节为1024、双缓冲
syncdelay;
}
voidtd_poll(void)//此函数在设备运行时反复被调用,它包括完成用户任务的函数
{
}
booltd_suspend(void)//该函数在设备进行挂起状态前调用
{
return(true);
}
booltd_resume(void)//设备重启后调用
{
return(true);
}
在整个固件程序中,ez-usbfx2设备上电或复位后,首先对所有的内部状态变量初始化,随后调用td_init()函数,并开中断,此时固件程序不断检测控制端口0是否收到setup包。一旦收到,固件程序就开始调用用户函数td_poll(),其中用户需要完成的功能代码就在td_poll()函数一。调用完成后,重复检测端口0是否收到setup包,若有,继续执行设备请求,调用td_poll()函数;否则,检测usb核是否有usb挂起事件,若有,调用td_suspend()函数,其返为真时,检测usb核是否有重新开始事件,没有时,设备进入挂起状态,反之,调用td_resume(),进行下一次循环;当td_suspend()函数返回为假时,直接转入下次循环。
此外,固件程序框架中还定义了许多中断处理函数,当用到时可以在相应的九加入自己编写的代码,这样既清晰又便于理解,用户就可以在不用改变整个程序的前提下,仅仅通过改变相应的模块,来实现自己的功能。
3.2主机软件部分
主机软件部分包括usb客户驱动程序主和机应用程序。usb客户驱程序是支持即插即用功能的标准wdm驱动程序,它为实现控制传输、中断传输和批传输提供了标准接口函数。而主机应用程序的作用在于与操作系统相互作用,当操作系统认为有新设备接入时,就会自动调用相应的设备驱支以。加之该软件需要一个图形用户界面来控制所用的函数,这里采用vc 来编制应用程序,利用createfile得到usb句柄,用deviceiocontrol来向设备驱动程序发送请求,完成在ez-usbfx2中的数据批传输的读取与写入。程序实例如下:
handledevicehandle;
devicehandle=createfile(\\.\ezusb0,generic_write,
file_share_write,null,open_existing,0,null);
//得到设备ezusb0的句柄
deviceiocontrol(devicehandle,
ioctl_ezusb_bulk_write,
lpvoidlpinbuffer,//;输入数据存储地址指针
sizeof(bulk_transfer_control),
lpvoidlpoutbuffer,//输出数据存储地址指针
dwordnoutbuffersize,//输出缓存大小
lpdwordlpbytesreturned,//接收输出数据字节计数器变量的指针
null);
//写数据到ez-usbfx2设备
deviceiocontrol(devicehandle,ioctl_ezusb_bulk_read,
lpvoidlpinbuffer,//输入数据存储地址地
sizeof(bulk_transfer_control),
lpvoidlpoutbuffer,//输出数据存储地址批晚霞
dwordnoutbuffersize,//输出缓存大小
lpdwordlpbytesreturned,//接收输出数据字节计数器变量的指针
null);
//从ez-usbfx2设备中读数据
colsehandle(devicehandle);//关闭usb句柄
usb系统范文篇10
关键词:超低功耗msp430数据采集usb接口设计
引言
实现系统运行的最小功耗是现代电子系统的普通取向,也是绿色电子的基本要求。采有最小功耗设计方法既能减少电子设备的使用功耗,又能减少备用状态下的功率消耗。在节省能源的同时还有利于减少电磁污染,有利于电子系统向便携式方向发展,有助于提高系统的可靠性。
现代工业生产和科学研究对数据采集的要求日益提高。在许多场合要求数据采集系统向便携化方向发展,要求系统具有体积小、功耗低、传输速率快、使用方便灵活等特点。在数据采集系统中,如何节省电能以使系统工作时间更长,如何通信才能使系统数据传输速度更快,已经成为系统开发过程中必须加以考虑的主要内容。
微控制器msp430的超低功耗技术在众多单片机中独树一帜,同时它具有集成高度等特点,因此,选用该控制器作为系统的主控制器,实现数据采集和flash存储等功能。此外,usb端口与以往的普通端口(串口与并口)相比具有传输速度快、功耗低、支持即插即用、维护方便等优点;因此在通信设计时,结合uart转usb芯片cp2101以实现usb接口通信。上述设计既利用了msp430的超低功耗特性,又利用了cp2101设计usb接口的简便性,设计得到的数据采集系统可以实现便携化、低功耗、使用方便等目标。
1msp430数据采集系统的usb接口设计
1.1采信系统简介
本系统实现多路数据的采集、flash存储及usb通信等功能。单片机系统主要完成信息采集、a/d转换、对信号进行放大滤波处理、数据通信、flash存储等;实时时钟记录采集数据的时间;cp2101实现usb接口,并把单片机采集到的信号传给微机;微机完成数据接收、存入数据库、数据处理、计算、显示等功能。
1.2超低功耗msp430微控制器
msp430是ti公司近几年推出的16位系列单片机。它采用最新的低功耗技术,工作在1.8~3.6v电压下,有正常工作模式(am)和4种低功耗工作模式(lpm1、lpm2、lpm3、lpm4);在电流电压为3v时,各种模式的工作电流分别为am:340μa、lpm1:70μa、lpm2:17μa、lpm3:2μa、lpm4:0.1μa,而且可以方便地在各种工作模式之间切换。它的赶低功耗性在实际应用中,尤其是电池供电的便携式设备中表现尤为突出。在系统初始化后进入待机模式,当有允许的中断请求时,cpu将在6μ的时间内被唤醒,进入活动模式,执行中断服务程序。执行完毕,在reti指令之后,系统返回到中断前的状态,继续低功耗模式。
本设计采用msp430f13x微控制器。它具有非常高的集成度,单片集成了多通道12位a/d转换、pwm功能定时器、斜边a/d转换、片内usart、看门狗定时器、片内数控振荡器(dco)、大量的i/o端口、大容量的片内ram和rom以及flash存储器。其中flash存储器可以实现掉电保护和软件升级。
1.3usb接口芯片选型
通用串行总线usb是由intel等厂商制定的连接计算机与具有usb接口的多种外设之间通信的串行总线。传统上,usb接口的开发较为复杂。在同其它usb接口芯片相比较之后,本设计选择了无需外部元件的uart转usb芯片cp2101。选择这种接口芯片,可使usb通信接口设计变得十分容易。与同类产品相比,cp2101具有以下优点:
①具有较小的封装。cp2101为28脚5mm×5mmmlp封装。这在pcb上的尺寸就比竞争对手小30%左右。
②高度成度。片内集成512字节eeorom(用于存储厂家id等数据),片内集成收发器、无需外部电阻;片内集成时钟,无需外部晶体。
③低成本,可实现usb转串口的凯时k66会员登录的解决方案。cp2101的usb功能无需外部元件,而大多数竞争者的usb器件则需要额外的终端晶体管、上拉电阻、晶振和eeprom。具有竞争力的器件价格,简化的电路,无成本驱动支持使得cp2101在成本上的优势远超过竞争者的凯时k66会员登录的解决方案。
④具有低功耗、高速度的特性,符合usb2.0规范,适合于所有的uart接口(波特率为300bps~921.6kbps)。工业级温度范围为-40℃~85℃)。
2usb通信的硬件接口电路
硬件电路如图1所示。cp2101的suspend与suspend引脚接到msp430f13x的普通串口上。这两个引脚传送usb挂起和恢复信号,此功能便于cp2101器件以及外部电路的电源管理。当在总线上检测到挂起信号时,cp2101将进入挂起模式,可以节省电能。在进入挂起模式时,cp2101会发出suspend与suspend信号。为了避免suspend与suspend在复位期间处于高电平,使用10kω的下拉电阻确保suspend在复位期间处于低电平。
cp2101的usb功能控制器管理usb和uart间所有的数据传输,以及由usb主控制器发出的命令请求以及用于控制uart功能的命令等。cp2101的uart接口处理所有的rs232信号,包括控制和握手信号。cp2101的vbus与vregin引脚必须始终连到usb的vbus信号上。在vregin的输入端加去耦电容(1μf与0.1μf并联)。cp2101与单片机接口是标准uart电平,与计算的usb端口连接是usb标准电路,因此,无论与3v还是5v供电的单片机连接都不需要电平转换。
3usb通信接口的软件程序设计
usb接口程序设计包括三部分:单片机程序开发、usb设备驱动程序开发、主机应用程序开发。三者互相配置才能完成可靠、快速的数据传输。其中usb设备驱动程序cygnal公司已经提供。这里所要编写的是剩下的两部分。一部分为单片机msp430f13x的串行通信程序,即对波特率、数据位、校验位、有无奇偶校验等通信协议的设计及单片机串行通信功能控制器的设置;另一部分为主机对cp2101的通信程序,这部分要在vc 环境中调用api函数实现。
3.1单片机程序设计
在iarembeddedworkbench嵌入式集成开发环境中,编写单片机通信程序,可实现在线编辑修改。msp430的内核cpu结构是按照精简指令集和高透明指令的宗旨来设计的,使用的指令有硬件执行的内核指令和基于现有硬件结构的高效率的仿真指令。以下为系统发送数据的部分应用程序(包括初始化及触发uart端口程序):
#include"msp430x13x.h"
/*************************串口*************************/
voidsend_byte(charsdata){
txbuf0=sdata;/*发送数据缓存(utxbuf0)*/
while(ifg1&tuxifg0)==0);/*目的操作数位测试,发送中断标志*/
}
/*************************main*************************/
voidmain(void){
chara;
uinta=0x0055;
wdtctl=wdtpw wdthold;/*停看门狗,wdtctl看门狗寄存器*/
uctl0=char;/*8位接收控制寄存器urctl线路空闲\u24322异步\u26080无反馈8位1位停止位\u26080无校验位*/
utctl0=ssel0;/*发送控制寄存器utctl0,uclk=aclk时钟*/
ubr00=0x0d;/*32kb/2400b=13.65,波特率选择寄存器*/
ubr10=0x00;/*高字节*/
umctl0=0x6b;/*调节*/
me1|=utxe0 urxe0;
/*开usart0txd/rxd接收/发送允许*/
ie1|=urxif0;/*打开usart0rx接收中断允许位*/
p3sel|=0x30;/*p3.4,5=usart0txd/rxd,选择模块功能*/
p3dir|=0x10;/*目标操作数置位,p3.4=1,输出模式*/
_eint();/*开中断*/
//主循环
for(;;)
{send_byet(a );}
}
3.2usb设备驱动程序的安装
当把开发板接到主机的usb端口时系统会提示发现新硬件,并要求安装驱动程序:
先安装cp2101的驱动程序cp2101_drivers.exe到c:filestors-232bridgecontroller.
完成上面两步的安装后,在系统的设备管理器中会看见cp2101虚拟的那个com口。在以后的设计中就是对这个口进行操作。此时可能应用串口调试助手调试下位机程序,接收发送数据。
3.3主机应用程序设计
主机应用程序的编写使用vc 编译环境中的api(应用程序设计接口)函数实现。应用程序的设计方法与串口编程类似。首先必须查找设备并打开设备的句柄,然后进行读写和控制操作,最后是关闭设备句柄。为了提高效率,可使用多线程技术实现读写。具体步骤如下:
①把cp2101的动态链接库cp2101.dll文件拷贝到,或者路径下。当程序运行时就能调用cp2101.dll。
②在visualstudio6.0中打开cp2101setids.dsw,选择release或者debug建立cp2101.exe工程文件。
③在vc 6.0中链接cp2101.lib,这时就可以应用cp2101的动态链接库了。
④在vc 里进行编程,用api功能函数对usb堆栈、cp2101的eeprom及数据传输的通信协议等进行编程。
当数据传输完毕时,应用cp2101_close()函数关闭设备句柄。可以根据实际应用修改cp2101的vid和pid,并用相应函数写进cp2101的eeprom中。但须注意的是,修改后要用cp2101_rest()函数使cp2101复位并重新安装驱动程序。