usb设计理念范文

2024-09-27

usb设计理念范文(共9篇)

usb设计理念范文 篇1

USB OTG设计

随着PDA、移动电话、数码相机、打印机等消费类产品的普及,用于这些设备与电脑,或设备与设备之间的高速数据传输技术越来越受到人们的关注,IEEE1394和USB是用于此类传输的两个主要标准。这两个标准都提供即插即用和热插拔功能,都可以向外提供电源,也都支持多个设备的连接。其中IEE1394支持较高的数据传输速度,但相对比较复杂、价格较高,主要用于需要高速通信的AV产品;而最初的USB标准主要面向低速数据传输的应用,其中USB1.1支持1.5Mbps和12Mbps的传输速率,被广泛用于传输速率要求不高的PC机外设,如:键盘、鼠标等。USB2.0标准的推出使USB的传输速度达到480Mbps。而USBOTG技术的推出则可实现没有主机时设备与设备之间的数据传输。例如:数码相机可以直接与打印机连接并打印照片,从而拓展了USB技术的应用范围。图1是USB技术的典型应用示意图。

1主机通信协议与对话请求协议

USBOTG标准在完全兼容USB2.0标准的基础上,增添了电源管理(节省功耗)功能,它允许设备既可作为主机,也可作为外设操作(两用OTG)。OTG两用设备完全符合USB2.0标准,并可提供一定的主机检测能力,支持主机通令协议(HNP)和对话请求协议(SRP)。在OTG中,初始主机设备称为A设备,外设称为B设备。可用电缆的连接方式来决定初始角色。图2所示是用第5个ID脚确定默认主机的示意图,两用设备使用新型mini-AB插座,从而使mini-A插头、mini-B插头和mini-AB插座增添了第五个引脚(ID),以用于识别不同的电缆端点。mini-A插头中的ID引脚接地,mini-B插头中的ID引脚浮空。当OTG设备检测到接地的`ID引脚时,表示默认的是A设备(主机),而检测到ID引脚浮这的设备则认为是B设备(外设)。系统一旦连接后,OTG的角色还可以更换。主机与外设采用新的HNP,A设备作为默认主机半提供VBUS电源,并在检测到有设备连接时复位总线、枚举并配置B设备。OTG标准为USB增添的第二个新协议称为对话请求协议(SRP)。SRP允许B设备请求A设备打开VBUS电源并启动一次对话。一次OTG对话可通过A设备提供VBUS电源的时间来确定(注:A设备总是为VBUS供电,即使作为外设)。也可通过A设备关闭VBUS电源来结束一闪会话以节省功耗,这在电池供电产品中是非常重要的。例如,在两台蜂窝电话通过连接互相交换信息时,一台连接在电费的mini-A端,是A设备,默认为主机。另一台是B设备,默认为外设。当在不需要USB通信时,A设备可以关闭VBUS线,此时B设备就会检测到该状态并进入功低耗模式。

2OTG功能的构建

图3所示电路给出了构建OTG功能时需要在基础USB外设上添加的电路,电路中的通用串行总线控制器可以是一个微处理器和USBSIE(串口引擎),也可以是集成的μP/USB芯片或与USB收发器相连的ASIC。为总线提供电源的外部设备需要一路3.3V稳压输出供电电压,以便为逻辑电路和连接在D+、D-引脚的1500Ω电阻提供电源。通过D+、D-引脚上的上拉电阻可向主机发出设备已连接的信号,并指示设备的工作速度。电阻上拉至D+表示全速运行,电阻上拉至D-表示低速运行。其它端点(包括D+和D-的15kΩ下拉电阻)用于检测上拉电阻的状态。由于USB设计需要提供热插拔功能。因此,其ESD保护电路主要用于为D+、D-和VBUS引脚提供保护。

为了增加OTG的两用功能,必须扩充收发器功能来使OTG设备既可作为主机使用,也可以作为外设使用。而要实现上述功能,就需要在图3所示电路中添加D+和D-端的15kΩ下拉电阻并为VBUS提供供电电源。此外,收发器还需要具备以下三个条件:

(1)可切换D+/D-线上的上拉和下拉电阻,以提供外设和主机功能。

(2)作为A设备时,需要具有VBUS监视和供电电路;作为B设备初始化SRP时,需要监视和触发VBUS。

(3)具有ID输入引脚。

作为两用OTG设备,ASIC、DSP或其它与收发器连接的电路必须具备充当外设和主机的功能,并应按照HNP协议转换其角色。

收发器所需添加的大多数电路用于VBUS引脚的管理。作为主机,它必须能够提供5V、输出电流可达8mA的电源。图3中的模拟开关用于配置收发器的各种功能。

ASIC和控制器还必须包含USB主机逻辑控制功能,包括发送SOF(帧启动)包、发送配置u36755输入u36755输出数据包,在USB1msec帧内确定传输进程、发送USB复位信号、提供USB电源管理等。

3Maxim要提供的USBOTG方案

MAX3301E是Maxim公司研制的一款USBOTG收发器,该器件集成有电荷泵,可将PDA、蜂窝电话和数码相机等移动设备与USB外设直接连接而无需PC机的参与。采用MAX3301E和一个嵌入式USB主机,就可直接将诸如打印机或外部硬盘驱动器这样的外设连接。MAX3301E内部包括USBOTG收发器、UBUS电荷泵、线性稳压器和I2C2线串行接口。内部电平转换器使MAX3301E能够与采用+1.65至+3.6V逻辑电源电压的器件连接。MAX3301E中的电荷泵工作在+3V至+4.5V输入电源下,可产生符合OTG要求的VBUS输出,且输出电流大于8mA。该器件可利用内部比较器控制并测量VBUS,同时支持USBOTGSRP和HNP,其典型应用电路如图4所示。

 

usb设计理念范文 篇2

在人们对声音质量要求日益提高的今天, 大量普及的板载声卡已经不能满足高品质音乐回放与娱乐的需求。受制与集成化与成本的控制, 以及电脑内部复杂电磁环境的干扰, 板载声卡并不能发出令人满意的声音。加上笔记本电脑逐渐普及, 却又不能通过加装板卡式独立声卡来改善音质, 使用USB外置声卡成了提高音频质量最合适的方案。

2 工作原理

该设备使用标准的USB音频协议, 在WINDOWS以及MAC平台上都不需要安装特定驱动。声卡与电脑通信, 从USB接口获得数据流, 通过PCM2706将信号转换成S/PDIF格式, 然后利用DIR9001将S/PDIF信号转化为音频I2S信号, 接下来由WM8740解码, 还原出模拟信号。最后经过LPF电路与耳机放大电路, 分别将信号送至线性输出端口与耳放端口。结构如下:

PCM2706是T I公司生产的具有USB接口、耳机输出和S/PDIF输出的立体声音频DAC, 支持USB1.1标准, 采样率最高支持48khz, 16bit精度。该器件自带解码输出, 但为了获取更好的音质, 只将其作为USB通信接口使用。

DIR9001是最高支持96k Hz, 24bit的数字音频接收器, 支持S/PDIF, EIAJ CP-1201, IEC60958, AES/EBU协议的数字音频格式。DIR9001有一个突出的技术优点, 它内建低抖动的时钟恢复系统, 理论值为50ps, 这对确保数字信号的品质大有帮助, 这也令DIR9001名声在外, 获得不少发烧友的青睐。

WM8740是一个高性能的立体声DAC, 为如CD、DVD、家庭影院、机顶盒和数字电视音频应用而设计的系统。拥有高达117db的信噪比。WM8740支持从16位到24位, 采样率最高达192k Hz的数据输入。WM8740由数字插补滤波器, 多比特Σ-Δ转换器等构成。立体声DAC采用串行接口, 封装为小型28引脚SSOP。还包括一个数字控制的静音和每个通道衰减器功能。

LPF电路部分

在此电路中, 为保证特性优良, 阻容器件应配对且保证参数准确。图中运放使用OPA2604, 该运放听感良好, 失真小, 价格适中。

耳放部分使用NE5532作为放大器。

此外, 音频电路对供电的要求较高, 在设计中必须注意电源纹波控制及数模隔离。信号在PCB上的走线尽量短。

3 测试方法及结果

使用创新E-MU 1212M声卡作为输入源, 使用软件RMAA测试。

频响曲线

总结:该声卡的实际听感与测试结果达到了高保真的要求。符合最初的设计目的。

摘要:本外置声卡设计使用PCM2706作为USB接口芯片, 使用DIR9001接收, 用wolfson WM8740音频DAC解码, 实现高品质音频信号输出、耳机驱动。本文简要阐述了利用上述芯片设计USB外置声卡的方案、构架、各部分特性以及性能测试结果。

新型双向USB接口设计简述 篇3

摘 要:本文就新型USB接口的设计,具体介绍了新型USB接口是一种双向USB接口,可以一次性地插入母座中,减少磨损,延长使用寿命且使用方便等情况。

关键词:USB接口 双向 设计

随着电子产品的普及,USB接口被广泛应用。USB接口在使用时,需要进行经常性的插拔,虽然在USB接口母座一侧设置防呆板,但是由于USB接口上的正反标志不明显,往往在使用时插错,不能正确地将USB接口插入母座。在插错时,会给USB接口的接头造成磨损,久而久之就会造成USB接口接触不良,以及母座接头损坏。

一、双向USB接口的结构

双向USB接口的结构主要包括:接口本体、金属连接壳、信号连接片、导电端子组、固定片,如图1所示。接口本体的一端连接金属连接壳,金属连接壳内设有信号连接片。信号连接片位于金属连接壳的中部,信号连接片的一端与接口本体连接。信号连接片的两个侧面为信号连接面,信号连接面设有导电端子组。

图1 双向USB结构示意图

图2 局部剖视图图3 双向USB一种结构示意图

导电端子组的导电端子一面为导电金属片,导电金属片固定于信号连接面,导电金属片的一端与接口本体连接,如图2所示。导电端子的另一面为导电胶,信号连接面设有柔性基板,导电胶嵌设于柔性基板内,且导电胶的一端与接口本体连接。导电端子的导电金属片与导电胶通过导线交叉连接在一起,如图3所示。

在金属连接壳上至少有一个侧面设有U形的缝隙,U形的缝隙围成一个固定片,使固定片的中部向外凸起,这样设置固定片,可以辅助将USB接口固定于母座内,防止松脱。

信号连接片设置于金属连接壳的中部,它使USB接口具有对称结构,在与母座插接时,可以正、反向地与母座插接,避免造成误插。

二、双向USB接口与母座连接

双向USB接口插入母座的接口内,其信号连接片的一个信号连接面与防呆板相对,该信号连接面上的导电端子组的导电端子与防呆板上的信号连接端子接触,并导通,从而实现双向USB接口与母座连接,如图4所示。双向USB接口在插接过程中,无需考虑接口的方向,使用方便。

目前,有些USB接口在与母座连接时,由于USB接口较短,与母座连接较为松弛,造成连接不良。为了让USB接口更好地与母座紧固连接,我们在金属连接壳中的至少一个侧面上设置固定片,使固定片的中部凸起。由于固定片只有一端与金属连接壳连接,因此具有弹性,在与母座连接时,固定片上的凸起会一直与母座的内侧接触,起到紧固作用。作为优选,可在金属连接壳的两个相对侧面上分别设置U形的缝隙以及固定片。

图4 双向USB接口与母座配合的结构示意图

(作者单位:广东省中山市技师学院)

endprint

摘 要:本文就新型USB接口的设计,具体介绍了新型USB接口是一种双向USB接口,可以一次性地插入母座中,减少磨损,延长使用寿命且使用方便等情况。

关键词:USB接口 双向 设计

随着电子产品的普及,USB接口被广泛应用。USB接口在使用时,需要进行经常性的插拔,虽然在USB接口母座一侧设置防呆板,但是由于USB接口上的正反标志不明显,往往在使用时插错,不能正确地将USB接口插入母座。在插错时,会给USB接口的接头造成磨损,久而久之就会造成USB接口接触不良,以及母座接头损坏。

一、双向USB接口的结构

双向USB接口的结构主要包括:接口本体、金属连接壳、信号连接片、导电端子组、固定片,如图1所示。接口本体的一端连接金属连接壳,金属连接壳内设有信号连接片。信号连接片位于金属连接壳的中部,信号连接片的一端与接口本体连接。信号连接片的两个侧面为信号连接面,信号连接面设有导电端子组。

图1 双向USB结构示意图

图2 局部剖视图图3 双向USB一种结构示意图

导电端子组的导电端子一面为导电金属片,导电金属片固定于信号连接面,导电金属片的一端与接口本体连接,如图2所示。导电端子的另一面为导电胶,信号连接面设有柔性基板,导电胶嵌设于柔性基板内,且导电胶的一端与接口本体连接。导电端子的导电金属片与导电胶通过导线交叉连接在一起,如图3所示。

在金属连接壳上至少有一个侧面设有U形的缝隙,U形的缝隙围成一个固定片,使固定片的中部向外凸起,这样设置固定片,可以辅助将USB接口固定于母座内,防止松脱。

信号连接片设置于金属连接壳的中部,它使USB接口具有对称结构,在与母座插接时,可以正、反向地与母座插接,避免造成误插。

二、双向USB接口与母座连接

双向USB接口插入母座的接口内,其信号连接片的一个信号连接面与防呆板相对,该信号连接面上的导电端子组的导电端子与防呆板上的信号连接端子接触,并导通,从而实现双向USB接口与母座连接,如图4所示。双向USB接口在插接过程中,无需考虑接口的方向,使用方便。

目前,有些USB接口在与母座连接时,由于USB接口较短,与母座连接较为松弛,造成连接不良。为了让USB接口更好地与母座紧固连接,我们在金属连接壳中的至少一个侧面上设置固定片,使固定片的中部凸起。由于固定片只有一端与金属连接壳连接,因此具有弹性,在与母座连接时,固定片上的凸起会一直与母座的内侧接触,起到紧固作用。作为优选,可在金属连接壳的两个相对侧面上分别设置U形的缝隙以及固定片。

图4 双向USB接口与母座配合的结构示意图

(作者单位:广东省中山市技师学院)

endprint

摘 要:本文就新型USB接口的设计,具体介绍了新型USB接口是一种双向USB接口,可以一次性地插入母座中,减少磨损,延长使用寿命且使用方便等情况。

关键词:USB接口 双向 设计

随着电子产品的普及,USB接口被广泛应用。USB接口在使用时,需要进行经常性的插拔,虽然在USB接口母座一侧设置防呆板,但是由于USB接口上的正反标志不明显,往往在使用时插错,不能正确地将USB接口插入母座。在插错时,会给USB接口的接头造成磨损,久而久之就会造成USB接口接触不良,以及母座接头损坏。

一、双向USB接口的结构

双向USB接口的结构主要包括:接口本体、金属连接壳、信号连接片、导电端子组、固定片,如图1所示。接口本体的一端连接金属连接壳,金属连接壳内设有信号连接片。信号连接片位于金属连接壳的中部,信号连接片的一端与接口本体连接。信号连接片的两个侧面为信号连接面,信号连接面设有导电端子组。

图1 双向USB结构示意图

图2 局部剖视图图3 双向USB一种结构示意图

导电端子组的导电端子一面为导电金属片,导电金属片固定于信号连接面,导电金属片的一端与接口本体连接,如图2所示。导电端子的另一面为导电胶,信号连接面设有柔性基板,导电胶嵌设于柔性基板内,且导电胶的一端与接口本体连接。导电端子的导电金属片与导电胶通过导线交叉连接在一起,如图3所示。

在金属连接壳上至少有一个侧面设有U形的缝隙,U形的缝隙围成一个固定片,使固定片的中部向外凸起,这样设置固定片,可以辅助将USB接口固定于母座内,防止松脱。

信号连接片设置于金属连接壳的中部,它使USB接口具有对称结构,在与母座插接时,可以正、反向地与母座插接,避免造成误插。

二、双向USB接口与母座连接

双向USB接口插入母座的接口内,其信号连接片的一个信号连接面与防呆板相对,该信号连接面上的导电端子组的导电端子与防呆板上的信号连接端子接触,并导通,从而实现双向USB接口与母座连接,如图4所示。双向USB接口在插接过程中,无需考虑接口的方向,使用方便。

目前,有些USB接口在与母座连接时,由于USB接口较短,与母座连接较为松弛,造成连接不良。为了让USB接口更好地与母座紧固连接,我们在金属连接壳中的至少一个侧面上设置固定片,使固定片的中部凸起。由于固定片只有一端与金属连接壳连接,因此具有弹性,在与母座连接时,固定片上的凸起会一直与母座的内侧接触,起到紧固作用。作为优选,可在金属连接壳的两个相对侧面上分别设置U形的缝隙以及固定片。

图4 双向USB接口与母座配合的结构示意图

(作者单位:广东省中山市技师学院)

usb设计理念范文 篇4

王晖

摘要关键词简单介绍USB接口的特点和Philips公司的USB接口芯片ISP1581;详细介绍USB接口的硬件原理设计、固件开发流程及USB设备的调试。

USB

ISP158

1固件

枚举

微控制器接口

DMA 引

通用串行总线USB(Universal Serial Bu s是近年来应用在PC领域的新型接口技术;是一些大PC厂商,如Microsoft、Int el等,为了解决日益增加的PC外设与有限的主板插槽和端口之间的矛盾,而制定的一种串行通信的标准。USB以其高速、易于安装配置、使用灵活和可靠性高而日益受到人们的欢迎。现在已广泛使用于计算机和周边设备的连接,如键盘、鼠标、打印机、存储设备等。

USB控制器一般有两种类型:一种是MCU集成在芯片里面;另一种是纯粹的USB接口芯片,仅处理 USB 通信。前者由于开发时需要单独的开发系统,因此开发成本较高;后者只是一个芯片与MCU接口,实现USB 通信功能,因此成本较低、可靠性较高。本文主要介绍Philips公司的ISP1581器件的使用方法,它属于后者。1硬件设计

1.1I S P1581芯片特点

ISP1581 是一个高速USB 器件控制器。它实现了USB 2.0/1.1 物理层和数据协议

层的任务,并且实现了

连同端点EP0(设置用于 访问设置缓冲器在内的 16 个USB 端点的共同协 作;用于基于微控制器 的系统,与微控制器/微 处理器的通信是通过一 个高速的通用并行接口 实现的,接口速度可达 12.5M字节/s或12.5 M字/s;支持DMA传输, 可很好地实现与大容量

存储设备的接口;通过ATA/A TAPI接口,可以直接与ATA/A TAPI设备相连。ISP1581能适应大多数设备类规范的设计,非常适合做很多外围设备,如打印机、扫描仪、外部大容量存储器和数码相机等的外部接口。(注: ATA/A TAPI,Advanced Technology Attachmen t/Advanced Technology Attachment Peripheral Int erface。中文名称为高级技术附加装置/高级技术附加装置外围接口。ATA是一种硬盘接口标准,ATA标准的接口类型其实就是IDE 接口类型。

1.2I S P1581内部模块功能描述

ISP1581内集成了多个模块,各自完成不同功能,如图1所示。

① USB2.0收发器。模拟收发器通过集成的终端电阻直接与USB电缆相连。

② Philips串行接口引擎(SIE,Serial Interface Engine。完成所有USB协议层的功能,主要完成以下的功能:同步方式的识别、并行/串行的转换,位填充/解除填充、CRC校验/产生、包标识(PID校验/产生、地址识别和握手评估/产生。考虑到速度,它是全硬件的,不需要

DREQ,DACK CS0,CS1, [16:0] DS/WR 图

1ISP1581内部结构方框图

固件介入。

③ 存储器管理单元(M M U和集成RA M。MMU 和集成RAM 实现了USB 总线和微控制器管理器或DMA 管理器之间的速度转换。

④ 微控制器/处理器接口和微控制器/处理器的管理器。可以直接与大部分微控制器相连。

⑤ DMA 接口和DMA 管理器。DM A 管理器接收到DMA 命令后,可直接把数据从内部RAM 传送到外部DM A 设备或从外部DM A 设备传送给内部RAM。

2硬件连接

ISP1581 有一个快速通用接口,利用它可以实现与大

部分类型的微控制器/处理器的通信。上电时,由引脚BUS_CONF、MODE1 和MODE0 共同设置。由于MMC2107的外部地址、数据总线是分开的,因此在本开发平台上ISP1581只能工作在通用处理器工作模式下,设置方式如表1所列。

ISP1581提供微控制器接口与微控制器进行数据传输,也支持DMA 传输。在微控制器速度较高时,两者的读写访问速度均可达12.5M b/s ,采用DMA 方式会增加电路设计的复杂度。经过综合比较,采取微控制器接口方式。USB 模块硬件连接原理如图2所示。

注:①ISP1581提供两种复位方式:a.ISP1581集成有上电复位电路(POR, RESET 引脚接电源,实现上电复位功能。b.RESET 引脚接MMC2107的一个数字I/O 引脚,将该引脚置低800μs 后置高,实现复位。②ISP1581 的供电电压为3.3V 或5.0V ,I/O 引脚最大能承受5.0V 的电压。根据I/O 口的电压,从3.3V 和5.0V 中选择一个作为供电电压。

3I S P 1581固件(F I R E W A R E 程序设计 由于所有的通信都是由主机发起,设备只能响应来

自主机的命令。在这种结构下,ISP1581的固件采取中断驱动。这样一方面保证了快速的数据传输和较好的软

件结构,另一方面简化了编程和测试。

固件程序由5部分组成,如图3所示。(1主循环流程

上电后,初始化MMC2107和ISP1581。然后,主循环程序轮询检查事件标志,进入相应的子程序进行进一步的处理。图4是主循环的流程。

1设置工作方式

注:这里使用16位总线,AD[0]必须与ISP1581的地端相连。图

3固件结构和数据流向 图

4USB主循环程序

2MMC2107与ISP1581硬件连接原理

(2中断服务程序(ISR流程

图5所示的中断服务流程,用来处理由ISP1581产生的中断。通过访问ISP1581的中断寄存器,建立正确的事件标志,以通知主循环程序进行处理。(3USB 标准请求处理

进行应用通信以前,主机必须枚举设备。该过程是通过给端点0发送包含标准设备请求(CHA P_9的控制传

输实现的。USB 标准请求流程(见图6译码设备请求类型,转到相应的处理子流程。枚举过程如下: ①主机使用默认地址(地址0读取设备描述符G etDeviceDescriptor;② SetAddress;③ 连续3次G etDev iceDescriptor ,读取全部设备描述符;④ G etConfigDescriptor;

⑤ G etStringDescriptor(可能没有;⑥ 读取全部ConfigDescriptor 后,主机将找到新设备,提示安装驱动程序。⑦ 在设备能通信前,主机给出SetConfiguration 请求,设备收到后调整有关信息,使设备能被客户软件利用。(4厂商请求处理(VENDOR 厂商请求和USB 标准请求一样,都根据控制传输的内容进行相应处理。本开发平台的固件程序中定义了两个厂商请求,分别为取得固件版本和将批量数据写入设备或从设备中读出数据。

取得固件版本流程如图7所示。主机发送批量数据读写请求时,在控制传输的数据阶段,主机给出需要传输的数据字节数、数据传输方向、页索引和数据定位。控制传输结束后,主机和设备就可以根据双

方约定,启动批量传输。批量传输流程如图8所示。调

试 4.1 调试步骤

USB 的调试可分为以下几个步骤: ① 若USB 芯片正常工作,可实现软连接,将设备插 入主机后,主机上出现“未知设备类型”的USB 设备;② 提供描述符,提供正确的VID 和PID 后,主机能够识别设备,但要求提供设备的驱动程序;③ 安装驱动程序后,调试各端点,使其均可传输数据,用主机端的测试程序对其进行测试,验证硬件及固件的正确性。

中断服务程序

5中断服务程序流程 图6

USB标准设备请求流程 取得固件版本

图7

取得固件版本流程 图8

批量传送流程

4.2调试工具

因为每一次USB的传输过程,都有时效要求,等待时间过长,通信过程也就中止了,因此不适合用硬件仿真器来设断点调试。可采用串口辅助调试过程,即在固件代码中加入类似于Printf的语句,向串口输出一些信息。借此,可以知道程序是否运行到此处,以及运行到此处时相应的变量或寄存器值。

设备完成配置后,在Bus Hou nd中可看到该设备(bus Hound是一种应用软件。选择该设备,就可以对主机与此设备间的通信数据进行分析和监视。Bus Hound 工作在主机端,串口工作在微控制器端。将串口调试和Bus Hound两种手段配合使用,可以使USB通讯过程的调试更加容易。

在调试USB设备时,还可使用UsbView程序。在该程序中可以查看设备描述符、配置描述符和端点描述符是否正确。

usb设计理念范文 篇5

摘要:本文主要介绍支持USB2.0高速传输的EZ-USB FX2单片机CY7C68013,并详细说明用此芯片实现高速数据采集系统和相应的Windows驱动程序及底层固件程序的开发过程。

关键词:CY7C68013  USB2.0  数据采集  固件

1    引言

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

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

2    硬件设计

2.1支持USB2.0高速传输的CY7C68013

Cypress Semiconductor公司的EZ-USB FX2是世界上第一款集成USB2.0的微处理器,它集成了USB2.0收发器、SIE(串行接口引擎)、增强的8051微控制器和可编程的外围接口。FX2这种独创性结构可使数据传输率达到56Mbytes/s,即USB2.0允许的最大带宽。在FX2中,智能SIE可以硬件处理许多USB1.1和USB2.0协议,从而减少了开发时间和确保了USB的兼容性。GPIF(General Programmable Interface)和主/从端点FIFO(8位或16位数据总线)为ATA、UTOPIA、EPP、PCMCIA和DSP等提供了简单和无缝连接接口。

CY7C68013的GPIF引擎具有自动传输数据结构的特性,这种特性使得外围设备和主机通过CY7C68013可以无缝的、高速的.传输数据。为了实现高速的数据传输,CY7C68013CPU不会直接参与数据的传输,而是直接利用GPIF的自动传输数据模式。图1和图2说明了主机IN和OUT数据传输过程。

2.1.1 端点缓冲区

FX2包含3个64字节端点缓冲区和4K可配置成不同方式的缓冲,其中3

个64字节的缓冲区为EP0、EP1IN和EP1OUT。EP0作为控制端点用,它是一个双向端点,既可为IN也可为OUT。当需要控制传输数据时,FX2固件读写EP0缓冲区,但是8个

SETUP字节数据不会出现在这64字节EP0端点缓冲区中。EP1IN和EP1OUT使用独立的64字节缓冲区,FX2固件可配置这些端点为BULK、INTERRUPT或ISOCHRONOUS传输方式,这两个端点和EP0

一样只能被固件访问。这一点与大端点缓冲区EP2、EP4、EP6和EP8不同,这四个端点缓冲区主要用来和片上或片外进行高带宽数据传输而无需固件的参与。EP2、EP4、EP6和EP8是高带宽、大缓冲区。它们可被配置成不同的方式来适应带宽的需求。

2.1.2 接口信号

在利用GPIF进行高速数据传输系统设计时,GPIF waveforms的编辑是非常重要的,它控制着整个数据传输过程的读写时序。此时CPU的作用已经非常小了,它只起着下载代码到内部RAM以及在固件中如何触发GPIF waveforms的作用。FX2专门为GPIF提供了外围接口信号,如8位或16位的数据线、控制信号、Ready信号以及地址线。

IFCLK(双向时钟信号):IFCLK是一个参考时钟,可以配置成输入或输出。当配置为输出时,IFCLK被FX2驱动为

30MHz或48MHz;当配置为输入时,时钟范围为5-48MHz。

GPIFADR[8:0](输出):GPIF使用GPIFADR信号为外部设备提供地址线,在总线上地址值是自增的。

FD[15:0](双向):这是USB主机通过FX2和外部设备进行数据传输的数据线,它可配置成8位或16位。当16位时,FD[7:0]代表端点FIFO

中的第一个字节,FD[15:8]代表第二个字节。

CTL[5:0](输出):FX2为外部设备提供了几个控制信号,如读写选通、使能等。

RDY[5:0](输入):FX2提供了几个状态检测信号,它可以检测外部设备的状态,如FIFO的空、满、半满等。

GSTATE[2:0](输出):这是调试信号,表示GPIF波形执行的状态,通常连接到逻辑分析仪上。

2.2   AD9238

AD9238是一个双通道的12位

A/D转换器,采用单3V供电,速度可以是20MSPS、40MSPS和65MSPS;低功耗,工作在20MSPS时,功耗为180mW,40MSPS时,功耗为330mW,65MSPS时,功耗为600mW;具有500MHz 3dB带宽的差分输入;片上参考源及SHA;灵活的模拟输入范围:1Vp-p~2Vp-p;适用于:超声波设备,射频通讯,电池电源仪器,低价示波器等。本系统采用20MSPS的AD9238,可充分发挥USB在高速传输模式下的数据传输优势。

2.3   数据采集系统

该数据采集系统整个框图如图3所示,该系统由以下几部份组成:USB控制器、FIFO、CPLD、AD9238以及数据采集前端电路。

图3 数据采集系统框图

CPLD主要是控制时序,时钟分频等。FIFO主要是起着高速数据缓冲作用,当FIFO半满时,数据开始向USB主机发送。我们采用的是同步FIFO,时钟信号接IFCLK,当FIFO的/RD信号和/OE信号有效时,每个IFCLK上升沿就输出一个数据;当FIFO的/WR信号有效时,IFCLK上升沿就读进一个数据。AD9238的20MHz时钟信号是通过CPLD分频所得。当程序使能AD9238的/OEB_A和/OEB_B信号时,AD9238双通道开始进行数据采集并向FIFO写数据。

系统前端的调理电路采用的是AD公司的AD8138,该放大器具有较宽的模拟带宽(320MHz,-3dB,增益1),而且可以实现将单端输入变成差分输出的功能。此项功能在现代高速模数变换电路中非常有用,因为几乎所有的高速A/D芯片都要求模拟信号为差分输入,虽然部分芯片的手册中提到对于单端输入信号也可使用,但这样一来会使A/D转换结果的二次谐波增大,降低信噪比(SNR)。AD8138很好的解决了这个问题,用户可以很容易的将单端信号转换成差分输出而不必使用变压器,并且它的输入阻抗高达6MΩ,可以直接与输入信号相连而省略隔离放大器,大大精简了电路结构。图4为AD8138的典型应用电路。

图4  AD8138典型应用电路

3

; 软件设计

3.1 Windows驱动程序设计

USB设备驱动程序基于WDM。WDM型驱动程序是内核程序,与标准的Win32用户态程序不同。采用了分层处理的方法。通过它,用户不需要直接与硬件打它道(在USB驱动程序中尤为明显),只需通过下层驱动程序提供的接口号访问硬件。因此,USB设备驱动程序不必具体对硬件编程,所有的USB命令、读写操作通过总线驱动程序转给USB设备。但是,USB设备驱动程序必须定义与外部设备的通讯接口和通讯的数据格式,也必须定义与应用程序的接口。

Cypress公司提供了完整的CY7C68013驱动程序源码、控制面板程序及固件的框架,这大大提高了用户开发的进度。用户只需稍加修改或不需任何修改即可使用所带驱动程序,软件开发者大量的时间主要集中在应用程序和固件的开发。本文所述的数据采集系统驱动程序就在原来的基础上进行了简单的修改来满足我们的需要。根据我们自己的需求,一般只需修改DeviceIoControl例程,如我们主要增加了控制数据传输函数、启动和停止AD、复位FIFO等,即IOCTL_START_AD、IOCTL_STOP_AD、IOCTL_RESET_FIFO。

3.2 底层固件设计

要实现USB2.0的高带宽数据传输,必须使用它特有的GPIF特性,在开发固件前,首先必须根据实际需要对GPIF waveform进行编辑。CY7C68013开发工具中带有一个GPIF Designer,如图5所示,编辑完waveform后,选择Tools->Export to GPIF.c File来输出GPIF.c文件,然后将该文件加入keil c工程进行编译。

由于CY7C68013的EP2、EP4、EP6、EP8四个端点共享4K FIFO缓冲区,所以在该系统中,我们将EP2配置成4K的缓冲区,并设置为IN。用EP1OUT作为AD的控制参数传递,如启动和停止AD数据输出、复位FIFO等。在固件程序中,最重要的就是TD_Init和TD_Poll()两个函数。

图5 GPIF Designer

在TD_Init()中主要完成GPIF相应寄存器的初始化,如下:

void TD_Init(void)             // Called once at startup

{

// set the CPU clock to 48MHz

CPUCS = ((CPUCS & ~bmCLKSPD) | bmCLKSPD1);

SYNCDELAY;

EP2CFG = 0XE8;     // EP2IN, bulk, size 1024, 4x buffered

SYNCDELAY;

EP4CFG = 0x00;     // EP4 not valid

SYNCDELAY;

EP6CFG = 0x00;     // EP6 not valid

SYNCDELAY;

EP8CFG = 0x00;     // EP8 not valid

SYNCDELAY;

FIFORESET = 0x80;  // set NAKALL bit to NAK all transfers from host

SYNCDELAY;

FIFORESET = 0x02;  // reset EP2 FIFO

SYNCDELAY;

FIFORESET = 0x00;  // clear NAKALL bit to resume normal operation

SYNCDELAY;

EP2FIFOCFG = 0x01; // allow core to see zero to one transition of auto out bit

&

nbsp;SYNCDELAY;

EP2FIFOCFG = 0x11; // auto out mode, disable PKTEND zero length send, word ops

SYNCDELAY;

EP6FIFOCFG = 0x09; // auto in mode, disable PKTEND zero length send, word ops

SYNCDELAY;

GpifInit ; // initialize GPIF registers

SYNCDELAY;

EP2GPIFFLGSEL = 0x02; // For EP2IN, GPIF uses FF flag

SYNCDELAY;

// global flowstate register initializations

FLOWLOGIC = FlowStates[19];      // 0011 0110b - LFUNC[1:0] = 00 (A AND B), //TERMA/B[2:0]=110 (FIFO Flag)

SYNCDELAY;

FLOWSTB = FlowStates[23];        // 0000 0100b - MSTB[2:0] = 100 (CTL4), not //used as strobe

SYNCDELAY;

GPIFHOLDAMOUNT = FlowStates[26]; // hold data for one half clock (10ns) assuming //48MHz IFCLK

SYNCDELAY;

FLOWSTBEDGE = FlowStates[24];    // move data on both edges of clock

SYNCDELAY;

FLOWSTBHPERIOD = FlowStates[25]; // 20.83ns half period

SYNCDELAY;

// reset the external FIFO

OEA |= 0x07;     // turn on PA0、 PA1、 PA2 as output pin

IOA |= 0x07;     // pull PA0、 PA1、 PA2 high initially

IOA &= 0xFB;     // bring PA2 low

EZUSB_Delay (1); // keep PA2 low for ~1ms, more than enough time

IOA |= 0x04;     // bring PA2 high and exit reset

IOA &= 0xFC;     // bring PA0、 PA1 low and enable AD

}

在TD_Poll()中主要完成外部FIFO状态的检测和数据的传输,主要程序部分如下:

void TD_Poll(void)

{

usb设计理念范文 篇6

主要区别就是传输速度,USB1.1和1.0的数度分别为12Mbps和1.5Mbps。而USB2.0更是达到480Mbps,速度已经超过IEEE1394的400Mbps,几乎可与IDE相提了,可与IDE的速度拼了,

以上提到的的是Mbps,不是MBps.1Byte=8bits。平时提到存储空间都是指Byte.因为USB所有的版本都是向下兼容的,所以对比USB2.0,1.1和1.0都是马上被淘汰的技术,不需要太过关注。还有就是,你将USB2.0的设备接在低版本的USB接口上,或是将低版本的USB设备接在USB2.0接口上,传输速度都按下限来算的。

usb设计理念范文 篇7

本文介绍的USB接口的红外数据传输模块是我们红外智能车辆管理系统的一部份,它负责将车主信息传送到车辆管理卡中。红外通信是一种成本低廉,简单易用的无线通讯方式,广泛用在计算机与设备及设备与设备之间的通信,我们的车辆管理卡就是通过红外的方式同外界进行数据通信。目前,大多数PC并没有红外接口,为了与车辆管理卡进行数据通信,本文设计了一个基于PC机USB接口的红外数据传输模块。考虑到成本以及应用的特定性,没有实现IrDA规范,而是制定了一个较简单通信协议,简化了软硬件设计。

1 硬件设计

1.1 红外发送、接收接口设计

红外信号发送的原理如图1所示,与非门U2A、晶振Y1等构成振荡电路,产生38k交变信号。当BM为高电平时,U2B被锁死,38k交变信号无法通过,没有红外信号发出。当BM为低电平时,振荡电路产生的38k信号经由与非门U2B,U2D到达晶体管Q1基极,控制着Q1的导通与截止,当Q1导通时有红外信号发送出去,信号的强度跟Q1集电极电流大小成正比;当Q1截止时,就没有红外信号发射。所以当BM为低电平时,红外发光二级管发射38k交变红外信号。

红外接收原理如图2所示,TSOP34138芯片为VISHAY公司为远程控制系统开发的红外接收模块,它能够将38 k的红外载波信号解码输出为单片机可以直接读取的电平信号。当没有38 k红外信号时1脚输出高电平;当接收到38 k红外信号时,1脚输出为低电平,触发单片机INT0中断。

1.2 底层通信协议

数据传送采用脉宽编码方式,一次数据传输的格式如下:起始码+数据+结束码。以下的论述中,编码格式我们用BM脚的高低电平来表示,BM脚为低电平时有红外信号发出,BM脚为高电平时,没有红外信号发出。在发送端,起始码格式为12 ms低电平+12 ms高电平;bit1编码格式为560 μs低电平+1 690 μs高电平;bit0编码格式为560 μs低电平+560 μs高电平;结束码为560 μs低电平。接收端通过判断两次低电平中断之间的间隔来解码。

1.3 USB固件

本模块的主要控制芯片为CY7C68013,这款芯片满足USB2.0规范,自带增强型51内核。在本设计中它除了完成与主机的USB通信工作,同时也是红外编解码的主控芯片。为了帮助用户开发设计,Cypress公司提供了一整套的工具链以及各种应用的示例程序。固件主要完成USB协议的实现工作,同时也完成红外通信的相关处理。

USB通信有控制传输、块传输、中断传输、同步传输4种方式,根据我们实际需要,选择了块传输的方式,固件程序在厂家提供的例子程序bulkloop的基础上编写。这个示例程序中提供一个程序框架,它完成了USB协议实现的大部分工作,我们可以通过修改和添加代码来实现自己的功能。

首先,我们要修改设备描述符中的厂商ID和产品ID。打开dscr.a51文件,找到DeviceDscr栏中对应的Vendor ID和Product ID,分别修改为自己的厂商ID和产品ID。

然后,我们要添加代码实现特定的功能。框架程序FW在系统上电后,完成一系列初始后,循环调用TD_Poll函数检测各端点是否有数据收到。在此,我们选用端点2和端点6作为工作端点。我们可以在这个函数中添加相应的代码。流程图如图3所示。

CY7C68013除了完成USB通信工作外,还要完成红外信号的收发工作。在发送端,由于我们采用硬件振荡电路产生38k基波信号,程序中处理发送的程序非常简单。按照通信协议依次赋值BM为高低电平即可,定时器T0用于定时。在接收时,INT0会产生多次中断,在中断处理程序中通过比较上一次中断和本次中断时间间隔来确定起始码、BIT1码、BIT0码 。当接收到8个bit数据时,将这个byte数据存储到变量中;依次读取全部数据。

2 上位机程序设计

2.1 驱动程序

Cypress公司为CY7C68013提供了通用的驱动程序CYUSB.SYS以及一个设备安装文件CyUSB.INF。CYUSB.SYS能够理解基本的USB命令,但是不能理解厂商自定义的命令。这个驱动程序与应用程序的接口类在CyAPI.lib中实现,具体的使用方法将在下一节上位机应用程序设计中详细说明。为了能够正确驱动设备我们需要对CyUSB.INF做以下修改:

(1) 用编辑器打开CyUSB.INF文件找到下面这一行

复制上面这行,并且去掉前面的分号。

(2) 更改复制行中的VVVV为自己的厂商ID,PPPP为产品ID。

(3) 同上修改另一行

并且修改"Cypress Generic USB Device"字符串为自己的设备名如"USB Infrared Write Card Device"。这样windows在加载设备时发现的设备名将为USB Infrared Write Card Device 。

(4)在设备管理器中强制使用CYUSB.SYS作为本设备的驱动程序。

经过以上几个步骤,即可成功驱动设备。

2.2 上位机应用程序设计

CyAPI.lib是Cypress提供的一个类库,这个类库为CyUsb.sys驱动程序提供了一个高级应用程序编程接口,有了这个类库,我们可以使用Open,Close,XferData这样的方法来同USB设备通信,勿需使用DeviceIoControl这样的Windows API,大大简化了应用程序编写,提高了效率。我们的编程采用Visual C++ 6.0,为了使用类库,必须在使用了CCyUSBDevice类的文件中包含CyAPI.h,并且将CyAPI.lib静态链接到工程中。这个类库使用设备和端点模型,首先用new方法新建一个CCyUsbDevice类实例,然后使用Open方法打开特定厂商ID和产品ID的设备,设备打开后可以使用CCyUsbEndPoint类的XferData方法同设备进行数据交换。

3 结果分析

为了检验模块的性能,我们进行了大量的测试实验。在办公室环境下,当角度为

0°(模块与车辆管理卡正对)时,最大距离为20 m;当角度为30°时,最大距离为7 m ;当角度为60°时,最大距离为2 m。在上述的扇形范围内平均写卡成功率为99.5%,完全符合设计要求。

摘要:利用CY7C68013芯片设计了一个USB接口的红外数据传输模块,实现了红外智能车辆管理系统的写卡操作,多次试验证明该模块稳定可靠,符合设计要求。

关键词:USB红外数据传输,车辆管理系统,驱动程序

参考文献

[1]潘言全.利用单片机实现的红外通信接口.中国水运,2007;7(05):140—141

[2][美]艾珂尔逊.USB大全.陈逸,译.北京:中国电力出版社,2001

[3][美]海德.USB设计应用实例.孙耀国,译.北京:中国铁道出版社,2003

usb设计理念范文 篇8

【摘要】实现了基于威盛VT6656 基带MAC和射频收发器LA2230的WLAN网络适配器的软硬件设计,用于捕获WLAN管理帧、控制帧及数据帧,满足无线局域网的实时监测及安全防范对数据采集的要求。

【关键词】WLAN;网络适配器;软硬件设计

前言

近年来,无线局域网获得了很大的发展,我国也制定了以保护国家信息安全和机密为目的的WAPI认证体系标准。但是,WLAN的安全性一直是制约WLAN发展的一个重要因素,对于WLAN网络的监测迫在眉睫。为了对网络进行监测,不外乎捕获数据进行分析,由于硬件厂商在开发无线网络适配器时进行了无线数据以太网格式的转换,利用市面上购买的网卡只能捕获经过以太转换之后的数据链路层的数据,对于WLAN特有的管理帧和控制帧无能为力。只有把网卡设置成为射频监听模式才能捕获管理帧和控制帧,但网卡制造商往往没有提供这个接口,鉴于此,我们自己开发了无线网卡,对网卡进行完全控制,便于捕获控制帧和管理帧,实现对无线网络的分析和监测。

1.硬件设计

硬件采用威盛单芯片WIFI解决方案VT6656。威盛 VT6656 无线网络控制芯片是一种单晶片解决方案,采用了一个IEEE802.11a/b/g媒体存取控制器(MAC),并集成了一枚基带处理器。该控制器可提供54M高速的无线连接。基于威盛 VT6656的WLAN模块提供了宽裕的带宽,从而实现高清晰数字媒体内容的传输,以及移动办公环境或公共热点地区所需的高速网络访问。VT6656支持USB2.0且向后兼容 灵活的威盛VT6656兼容于USB 2.0,后向兼容 USB1.1 接口,并且兼容于目前流行的所有RF 芯片,确保了模块制造者更多的选择RF来降低成本。

硬件框图如下:

如图所示,硬件电路包括基带MAC芯片VT6656,射频收发部分,接口部分,存储部分,天线及滤波部分组成。其中,基带MAC芯片VT6656支持可变的数据传输速率:6,9,12,18,24,36,48,54Mbps 的 OFDM(正交多载波频分复用 5.5,11Mbps for CCK,1,2Mbps for BPSK);支持天线多样性;接收包为 RSII status;支持接口 Airoha:AL2230, VIA:VT6635(b/g RFIC),VT6636(a/b/g RFIC)。MAC特性支持形组/独立模式;支持多播包过滤;两个32位计数器;硬件支持威盛本机环回测试(内/外);支持BSS PCF;支持 IBSS ATIM;支持硬件的简单测试(连续传输/接收包);支持4个MIB计数器,发送请求成功计数,发送请求失败计数,响应失败计数,FCS错误计数。射频部分采用台湾洛达科技公司的Airoha的AL2230芯片。接口部分支持基于I2C总线的EEPROM,用于保存设置信息,同时,支持USB1.1和USB2.0标准的USB接口。

2.系统软件设计

无线网卡的软件部分分为固件,驱动程序和配置管理程序三个部分,软件体系结构如图2所示。

其中,网卡固件程序由芯片厂商威盛公司提供,烧录在芯片内部,通常在固件中完成MAC层和PHY层的功能,并提供对上层(驱动层)和下层(物理层)的接口。驱动程序要根据芯片手册和工作环境自己编写,而配置管理程序通过调用驱动程序完成网卡的配置和管理,配置参数存储在EEPROM存储器中。下面简要介绍一下基于Linux的驱动程序开发。

驱动程序主要完成在系统上电之后对网卡寄存器和固件的初始化,并进行相关设置,使网卡处于收发就绪状态。在驱动程序中,必须要完成的功能包括初始化无线网卡和固件;分配收发缓冲器;使用标识符接口管理无线网卡的操作;接收事件;发送事件;异常处理等等。驱动程序工作流程如图3所示。

在驱动程序中,主要数据结构类型及函数声明如下:

// 初始化卡类型及操作模式

typedef enum _CARD_PHY_TYPE {

PHY_TYPE_AUTO=0,

PHY_TYPE_11B,

PHY_TYPE_11G,

PHY_TYPE_11A

} CARD_PHY_TYPE, DEF* PCARD_PHY_TYPE;

typedef enum _CARD_OP_MODE {

OP_MODE_INFRASTRUCTURE=0,

OP_MODE_ADHOC,

OP_MODE_AP,

OP_MODE_UNKNOWN

} CARD_OP_MODE, *PCARD_OP_MODE;

// 802.11 帧类型定义

#define WLAN_TYPE_MGR 0x00

#define WLAN_TYPE_CTL0x01

#define WLAN_TYPE_DATA 0x02

#define WLAN_FTYPE_MGMT 0x00

#define WLAN_FTYPE_CTL0x01

#define WLAN_FTYPE_DATA 0x02

//信道切换函数声明

BOOL CARDbChannelSwitch (

IN PVOID pDeviceHandler,

IN BYTEbyMode,

IN BYTEbyNewChannel,

IN BYTEbyCount

);

//基本服务集搜索函数声明

PKnownBSS BSSpSearchBSSList(

IN HANDLE hDeviceContext,

IN PBYTE pbyDesireBSSID,

IN PBYTE pbyDesireSSID,

IN CARD_PHY_TYPE ePhyType

);

//网卡控制函数声明

int private_ioctl(PSDevice pDevice, struct ifreq *rq);

//写入数据函数声明

void ControlvWriteByte(IN PSDevice pDevice,IN BYTE byRegType,

IN BYTE byRegOfs,IN BYTE byData );

//读取数据函数声明

void ControlvReadByte(IN PSDevice pDevice,IN BYTE byRegType,IN BYTE byRegOfs, IN PBYTE pbyData );

3.结论

利用TP-LINK W640G无线路由器做AP(MAC地址为00-0A-EB-D0-D2-A4),和本网卡进行数据通信,捕获数据如图4,从图中可以看出,这是网卡接收到的信标帧,源MAC地址为00-0A-EB-D0-D2-A4,网卡MAC地址为01-00-5E-7F-FF-FA,与实际测试环境相符合。说明了网卡是成功的。

参考文献

[1]陈祖爵,黄学霜等.嵌入式无线局域网适配器的设计与实现[J].计算机工程,2007,8(15):235-240.

[2]VT6656 datasheet[M].威盛公司,2006.

[3]LA2230 datasheet[M].日本三洋公司,2002.

[4]汪涛,蔡皖东.无线网卡驱动程序设计与实现技术研究[D].西安:西北工业大学,2004.

[5](美)Jonathan Corbet,Alessandro Rubini. Linux Device Drivers,3rd Edition[M].魏永明译.北京:电子工业出版社2006:130-243.

作者简介:

黄博(1980—),男,四川通江人,重庆城市管理职业学院助理实验师,研究方向:嵌入式系统应用。

王万刚(1977—),男,重庆人,硕士,重庆城市管理职业学院讲师,研究方向:电子组装工艺。

USB协议简介 篇9

USB是一种协议总线,即主机与设备之间的通信需要遵循一系列约定,协议内容较多,这里仅作一些简单介绍,深入学习,可参看USB规范(WWW.usb.org)。

为了理解协议中的名称,先看图10.32。该图突出了主机上的客户软件和USB逻辑设备(编程涉及的设备)之间的通信流(CommunicationFlow),该通信流跨越了USB驱动程序USBD、主控制器驱动程序UHCD、主控制器等硬件接口及其连接。端点(Endpoints)是USB设备的惟一可识别的部分,是主机和设备之间通信流的终点。每一个逻辑设备有若干个独立端点,每一个端点在设计时被分配一个惟一的由设备确定的标识符,称之为端点号。

如图10.32所示,将用于通信流流动的通道称为管道(Pipe),这是忽略了许多中间环节的很形象的称呼,对于理解USB系统中的信息传输很有帮助。图中把3个端点看成了一个接口,关于接口的说明安排在后面。

1.包格式

包的概念在前面已经介绍了,包是帧的基本成分。常用的包有令牌包、数据包和握手包。对于高速传输,还定义了事务分割专用令牌包(事务分割开始令牌包和事务分割完成令牌包)。

1)令牌包格式

在USB系统中,所有的通信都是由主机发出相应的令牌所引起的。令牌包格式图

10.33所示。

其中PID为包标识,ADDR为设备地址,ENDP为端点号,CRC5是对ADDR和ENDP域进行校验的5位CRC校验码,校验多项式为:G(X)=X5+X2+1。

2)数据包格式

数据包用于主机与设备之间的数据传输。数据包格式如图10.34所示。

其中PID为包标识,DATA为数据位,最多为8192个位,DATA应是字节的整数倍。CRCl6是对DATA域进行校验的16位CRC校验码,校验多项式为:G(X)=X16+X15+X2+1.

3)握手包格式

握手包用来指示数据被成功接收、命令被接收或被拒绝等事务状态。握手包格式如图10.35所示。

握手包仅由PII)组成。有四种常用握手包(ACK、NAK、STALL和NYET)和一个专用握手包,握手包的类型是通过PID的编码来体现的。

ACK包表示接收器已成功接收数据。

NAK包表示接收设备不能接收数据或发送设备不能发送数据。

STALL包表示端点已终止或不支持控制管道请求。

NYET包表示接收器还没有任何响应。

4)帧开始包SOF(StartOfFrame)在全速或低速时,主机每隔1ms0.0005ms发出一个帧开始包SOF,在高速时,每隔125s0.0625s发出一个SOF,以表示开始一个新帧。SOF包的格式如图10.36所示。

其中FmmeNumber为帧编号,每发一帧后FrameNumber加l,当11位都为1(即3FFH)时再加1又回到0。在SOF包中对FrameNumber域进行CRC校验。

2.PID域格式

上面的几种包的开始都是PID域。PID域的格式如图10.37所示。

低4位用来标识不同的包,高4位分别为低4位的非。这样安排是为了保证对PID可靠的译码,从而也使得包的其他部分能得到正确解释。表lO.20表示了PID编码和对应的PID类型。其中第3列是PID的低4位,即PID编码。

表中有两种数据包PID,都用于数据的传输,以它们开头的两种数据包除了包PID部分有一位(及与它对应的反向位)不同外,其他部分都相同。设置这两种数据包是为了使发送方和接收方保持同步,这涉及到一些细节,将在10.3.6小节中介绍。在图10.38~10.40中不妨将它们看成一种数据包。

3.USB传输的处理过程

前面已经提到USB系统中有四种传输:一个传输通常要分解成若干个事务;而一个事务的处理一般要经历令牌包、数据包和握手包三个阶段,但也有一些事务的处理没有数据包阶段或没有握手包阶段,还有一些事务只有令牌包阶段。下面对这四种传输的处理过程分别作一些介绍。

1)块传输

用于主机与USB设备之间的批量数据传输,通常一次块传输需要分解成若干个块传输事务。显然,一次块传输的方向是单一的,对主机而言,要么是输入,要么是输出。因此,一次块传输是由若干个IN事务或由若干个OUT事务组成的。图10.38所示是块传输事务处理过程示意图。图中的PING包和NYET包仅用于高速传输设备,初学者暂时可以不考虑。

对于要进行输入的块传输,一般要执行若干个IN事务。每执行一个IN事务时,主机都首先发出IN令牌包。设备端点收到后做出响应,一般是回送一个数据包。如果不能回送数据,则回送NAK包或STALL包。NAK表示设备暂时不能回送数据;STALL表示端点一直停着或需要IJSB系统软件进行干预;如果主机收到合法数据包,则回以ACK握手包;如果主机在接收数据时发现有错,则不给设备任何回音。

对于要进行输出的块传输,一般要执行若干个OUT事务。每执行一个OUT事务时,主机都首先发出OUT令牌包,接着发出数据包。设备在收到数据包后,根据情况回以握手包;回以ACK表示数据已接收无误,并通知主机可开始下一个0UT事务,以便传送下一个数据包;回以NAK表示数据已接收无误,但是主机不要再送数据,因为设备暂时不能接收(如缓冲区满);如果端点已终止,则回以STALL,通知主机不要再重发数据,因为设备出现了故障;如果接收时出现CRC校验错,则不发任何握手包。

需要指出,IN事务和OUT事务不仅在块传输事务中用到,在其他几种传输事务中也要用到,当然,处理的过程可能有所不同。

2)中断传输

用于数据传输量小,无周期性,但对响应时间敏感,要求马上响应的数据传输。中断传输的名字暗示一个设备可以引起一个硬件中断,这个硬件中断将使主机进行快速响应。但真实情况是中断传输和所有其他USB传输一样,只在主机访问设备时出现。之所以将其称为中断传输,是因为它可保证主机将在最短的延迟里响应或发送数据。中断传输的特别之处在于主机将按照特定的周期访问可引起中断的端点(称为中断端点),看是否有中断情况发生。图10.39所示为中断传输事务的处理过程。

对于要进行输入的中断传输,主机按照特定的周期执行IN事务,如果没有中断发生,中断端点回以NAK包;如果有中断情况发生,则回送中断数据。主机收到数据后,发一个ACK包。

对于要进行输出的中断传输,主机按照特定的周期执行OUT事务,在发送OUT令牌后,接着发送数据包。如果没有中断发生,中断端点回以NAK包或STALL包;如果有中断情况发生且接收数据无误,则回送ACK包。需要指出,在设备没有中断发生的情况下,主机一直会按照特定的周期执行OUT事务,并且所发送的数据保持不变。当有中断发生时,才修改数据指针,指向下一个数据区。

一个中断传输由一个或多个IN事务或者一个或多个OUT事务组成。一个中断传输用以下两种情况之一结束:当请求的数据量被传送完时,或者当数据包的长度小于规定的最大值(包括0长度包)时。中断传输的结束表示要传送的数据已经到齐,接收方可以加以利用;而主机对中断端点周期性的查询还将继续进行下去,以便在下一个中断情况发生时,开始下一个中断传输。

3)等时传输

用于有周期性、传输速率不变的数据传输。等时传输在每帧中传送的字节数是一定的。一个等时传输由一个或多个连续帧里每帧一个IN或一个OUT事务所组成。图10.40表示了等时传输事务的处理过程。可以看出,等时传输的IN事务和OUT事务只包括令牌包和数据包两个阶段,没有握手包阶段,也不支持重试。

4)控制传输

控制传输提供了一种方法来配置USB设备,并对它的操作的某些方面进行控制。每个设备必须设置一个缺省的控制端点(通常是O号端点)。控制端点用来配置设备、控制设备状态以及设备操作的某些方面。控制端点响应一些通过控制传输发送过来的USB特殊请求。例如,当系统检测到设备时,系统软件必须读取该设备的描述符,以确定其类型和操作特性。

控制传输至少由两个阶段组成,也可以是三个阶段:

①SETUP阶段:控制传输总是从SETUP阶段开始,这个阶段把信息发送给目标设备,定义对设备的请求类型(例如,读设备描述符),

②数据阶段:这个阶段仅仅是为需要数据传输的请求定义的。例如,在数据阶段,读描述符请求把描述符的内容发送给主机。一些请求在SETUP阶段之外不需要数据传输。

③状态阶段:这个阶段总是用来报告被请求的操作的结果。

在SETUP阶段,一个SETUP事务被用来向控制端点传输信息。SETUP事务类似于

一个OUT事务,只是包标识PID是SETUP,而不是OUT。图10.41所示为SETUP事务的执行过程。SETUP事务的数据阶段总是利用DATA0PID。如果接收正确,控制端点则回以ACK包;如果接收不正确或数据丢失,则不回送任何握手包。

控制传输的数据阶段不是必需的。如果需要有这个阶段,则它由一个或多个IN事务或者一个或多个OUT事务组成。数据阶段的所有事务的方向必须是一致的,即都是IN事务或都是OUT事务。数据阶段传送的数据量及方向是在SETUP阶段规定的。如果数据量超过了预先确定的数据包规模,则数据的发送需要多个能携带最大包的事务(IN或OUT),剩下的部分(不足最大包规模)再安排一个事务。

控制传输的状态阶段是该传输的最后一个阶段,它只需要一个事务。状态阶段的数据流方向应该与前面的阶段不同,并且总是利用DATAlPID.例如,如果数据阶段执行的是OUT事务,则状态阶段就是一个IN事务。如果一个控制传输没有数据阶段,则状态阶段由一个IN事务组成。图10.42所示为控制读传输、控制写传输以及没有数据阶段的控制传输的事务排列顺序、触发位的值(在括号内)及数据PID的类型。

上面介绍的传输及传输事务的处理过程反映了USB系统中数据传输的过程。注意到一帧(或微帧)中包括了四种传输事务,所以实际的传输过程要比这里所讲的复杂。

4.数据触发技术

在USB系统中采用了数据触发技术。数据触发是一种机制,用来确保数据传输的发送方和接收方之间保持同步,对于需要大量事务的一次长传输过程尤为重要。数据触发机制可以使握手包出错情况下发送方和接收方之间能重新同步。

数据触发仅仅支持中断传输、块传输和控制传输。支持数据触发机制的发送方和接收方在每一次数据传输时都必须具有触发位。当双方都认为数据传输已经正确完成以后,都会把自己的触发位转换为和原来相反的状态。两种类型的数据包(DATAO和DATAl)被交替传送,并且包的接收方将会把它和触发位作比较,以确定接收的包是否正确。发送方使用的数据包类型和它的触发位当前状态保持一致(例如,如果触发位为0,则数据包用DATA0)。下面仅以OUT事务为例来理解数据触发机制。

例10.1图10.43所示为无错误的OUT事务的处理过程和触发位的变化情况。假定发送方和接收方的触发位开始都是0。传输的过程如下:

事务处理l:

①主机向目标设备发送一个OUT令牌。

②目标设备无错误地收到该令牌包。

③主机向目标设备发送一个DATA0数据包(和它的触发位保持一致)。

④目标设备收到数据包DATA0,它和触发位一致。

⑤目标设备成功收到数据包DATA0,触发位转变为1。

⑥目标设备向主机发送一个ACK握手包,通知主机数据已经被无错误接收。

⑦主机无错误地收到ACK包。

⑧成功地收到ACK包,主机把触发位转变为l。

事务处理2:

①主机向目标设备发送一个新的OUT令牌,开始下一个事务处理过程。

②目标设备无错误地收到该令牌包。

③主机向目标设备发送一个DAl、A1数据包(和它的触发位保持一致)。

④目标设备收到数据包DATAl,它和触发位一致。

⑤目标设备成功收到数据包DATAl,触发位转变为0。

⑥目标设备向主机发送一个ACK握手包,通知主机数据已经被无错误接收。

⑦主机无错误地收到ACK包。

⑧成功地收到ACK包,主机把触发位转变为0。

这个处理过程对每一个事务都是如此,直到整个传输完成。只要收到的数据包和触发位相一致,并且发送方无错误地收到ACK握手包,那么发送方和接收方就保持同步。

上面是数据包和握手包都被正确传输的情况。下面分别看一下数据包传输出错和握手包传输出错时的情况。

例l0.2图10.44所示为一个传输的第m个OUT。事务的处理过程,期间数据包传输出现了错误。主机和目标设备所采取的行动如下:

事务处理m:

①主机向目标设备发送一个OUT令牌。

②目标设备无错误地收到该令牌包。,

③主机向目标设备发送一个DATA0数据包(和它的触发位保持一致)。

④当目标设备收到数据包DATAO时,发现有错。

⑤因为检测到数据包的错误,目标设备将会忽略这个包。数据被丢弃,不向主机发握手包。因为数据包没有正确接收,触发位保持不变。

⑥主机等待握手包的返回,但是没有响应。在总线超时周期(16个位时间)到达后,主机检测到没有响应,于是它认为数据包的传输不成功,主机的触发位保持不变。主机必须在以后重新进行该事务处理。

事务m重新进行:

①主机再向目标设备发送OUT令牌。

②目标设备无错误地收到该令牌包。

③主机向目标设备发送一个DATAO数据包(和它的触发位保持一致),这个数据包在上一次传送时没有成功。

④目标设备成功地收到数据包DATA0,它和触发位保持一致。

⑤因为正确收到数据包DATA0,所以目标设备将触发位转变为1。

⑥目标设备向主机发送一个ACK握手包,通知主机数据已经被无错误接收。

⑦主机无错误地收到ACK包。

⑧成功地收到了ACK包,主机把触发位转变为l。

由上面的处理过程可以看出,尽管传输发生了错误,但是主机和目标设备还是能够保持同步。

例10.3图10.45所示为一个传输的第n个OUT事务的处理过程,期间由于ACK包错误而失败。对错误检测和恢复的每一步列举如下:

事务处理n:

①主机向目标设备发送一个OUT令牌。

②目标设备无错误地收到该令牌包。

③然后主机向目标设备发送一个DATA0数据包(和它的触发位保持一致)。

④目标设备收到数据包DATA0,它和触发位一致。

⑤目标设备成功收到数据包DATA0,触发位转变为1。

⑥目标设备向主机发送一个ACK握手包,通知主机数据已经被无错误接收。

⑦主机收到的ACK包出现了错误。

⑧由于主机检测到了错误,所以它不能确定目标设备是否已经成功地接收到数据。因此,主机的触发位没有改变(还是0)。主机假定目标设备没有收到数据,因而会重新进行该事务处理。

事务n重新进行:

①主机再向目标设备发送OUT令牌。

②目标设备无错误地收到该令牌包。

③主机重新向目标设备发送DATA0数据包(和它的触发位保持一致),这个数据包在上一次传送时不知道目标设备是否已正确接收。

④目标设备无错误地收到数据包DATA0,但是它和触发位不一致。

⑤目标设备认为其本身和主机不同步,因而丢弃数据,并且触发位保持不变(1)。

⑥目标设备向主机发送一个ACK握手包,通知主机数据已经被无错误接收,这是因为

主机明显没有收到上一次的ACK握手包。

⑦主机无错误地收到ACK握手包。

⑧成功地收到了ACK包,主机把触发位转变为1。现在主机和目标设备就为下一次的事务处理做好了准备。

上一篇:员工警告处分通知下一篇:《必然》学习感想