USB开发步骤之标准篇
Transactions(数据交换)
一个transaction是在host和设备(device)之间的不连续相互数据 交换,通常由host开始交换,交换的开始是由Token的包开始的,接下来是双方向上的数据包,在数据包传送完之后,就会由设备(device)返回一 个握手(handshake)包。USB系统通过IN,OUT,和SETUP的包来指定USB地址和endpoint(最多是128个,0通常被用来用做 缺省的传送配置信息的),并且这些被指定的设备必须通过上面形式的包来回应这种形式的指定。每个SETUP的包包含8个byte的数据,数据用来指示传送 的数据类型。对于DATA数据包来说,设置两种类型的数据包是为了能够在传送数据的时候做到更加的精确。ACK handshake的包用来指示数据传送的正确性,而STALL handshake则表示数据包在传送的过程中出了故障,并且请示host重新发数据或者清除这次传送。PRE格式的包主要是用在在一个USB的系统中如 果存在不同速率的设备的时候,将不同于总线速度的设备中就会回应一个PRE的包从而会忽略该设备。
各种不同类型的包的大小是不同的,DATA的数据包最大是1023bytes.
Start of Frame(SOF)
SOF是host用来指示frame的开头的。SOF的包包括11个bit的桢序号,从0到0X7FF(i.e. USBD_ISO_START_FRAME_RANGE-1),SOF对于所有的高速设备来说是有效的。
Power
每个设备可以从总线上获得100mA的电流,如果特殊的向系统申请,最多可以获得500mA的电流,在挂机的状态下,电流只有500uA.
驱动程序的安装步骤
Windows用设备描述字或者接口描述字来了解到底是什么样的设备被接入到系统。 Windows初始化的Hardware ID中有设备提供商的ID域(IDVendor,IDProduct,和BCDDevice)。如果你没有向系统提供一个INF文件的话,系统就会自动选 择提供一个兼容ID(可能不是工作得很好,就像你买了一个Rockswell的Modem,而你使用标准Modem的驱动程序,你的Modem可能会工作 的有很多的毛病,也可能跑得飞快,电脑的事情,什么都可能发生,就像中国足球........我在九四年就发誓不再为中国足球恼火,可是俺前不久还是骂了 一下那个叫章鱼鳞的小伙子,怎么就.......好歹还是一孩子,就原谅一回吧,哎!)
USB的新特性
共享性 一个物理设备可以使用许多不同的pipe
实时性 可以实现和一个设备之间有效的实时通信
动态性 可以实现接口间的动态切换
联合性 不同的而又有相近的特性的接口可以联合起来,
多能性 各个不同的接口可以使用不同的供电模式
自动性 缺省的pipe的使用使基系统的建立和配置变得自动并且快速
以上几个方面只是简要的介绍了一下USB的标准的一些情况,介绍得非常非常之浅,还有 象USB的host在系统中的唯一性和device的带宽分布,以及hub,和USB的电气特性等等,以及网络分层结构等方面我就不赘述了,在标准里面有 详细的叙述。鄙人仅致力于用中文给大家一个比较浅显的介绍,希望不会给大家不正确的引导。(诸位大虾倘要做USB设备,当阅读美利坚合众国之原版文章。切 记,切记!不瞒大家,朕亦十分反感大不列颠国之文字,一日,吾弟问朕,国人何以皆学洋文,朕曰寡人如何得知,料想倘念好洋文,就有机会去诳洋人钱财。)
本来想单独开一个USB2.0的页,可是敲中文实在是太麻烦,再加上现在的 USB2.0只是一个DEMO的期间,USB2.0的器件更是没有,关于USB2.0没有什改变,所有的硬件不用改变,就可以跑USB2.0,到时候 400多Mb可以让你任何的器件都可以通过USB来玩了,不过,现在只是在USB的高速的host和USB的高速HUB间可以有这么高的速度,普通的外设 就差了一些,不知道以后会不会变化!稍后我将给出USB2.0的专题介绍。
- 基于S3C44B0X的心电血压监测仪USB接口设计(11-28)
- C8051F320在USB设计中的应用(01-18)
- 基于ISP1581型接口电路的USB2.0接口设计(01-18)
- 用CP2101将USB口扩展成串口(01-18)
- TM1300 PCI-XIO口的UART和USB接口设计(01-17)
- 基于CH371的实用USB接口设计(01-23)