Usb 详解USB 作为一种串行接口,应用日益广泛
如同每个工程设计人员必须掌握I2C,RS232这些接口一样,我们也必须掌握usb
但是 usb 的接口协议实在有点费解,linux uhci 驱动作者之一Alan Stern 曾经就说过 “The USB documentation is downright evil
Most of it is just crap, written by a committee
You're better off ignoring most of it ”
本文将从整体上介绍usb 协议,包括 usb host ,usb hub,usb function
希望能给读者一个总体上的了解
也因此,文章将分成相应的三部分讲解
usb function 1
初识 usb
usb 是一种串行接口协议,它靠d+,d- 两条数据线构成的差分线来进行数据传输,这让我们非常感兴趣它到底和我们通常熟悉两线rs232/485有何区别
了解这种区别有助于我们对usb 作一个深入的了解
那么让我们回想一下到底一个两线rs232 的数据是如何传送的,如图一:在这里我们的重点在于,我们发现要在串行口传送数据一个最体码的要求恐怕就是:要知道数据传输何时开始,何时结束
即如何delimit
那么 rs232 怎么做的
显然,在idle(空闲)时,即无数据传送时,数据线处于高电平,等到有数据开始传送,发送方首先拉低数据线(start) ,表示数据传输开始,接受端也因为这个“start ”信号开始准备接受即将到来的数据,类似一次握手,随后,在两者之间的数据传送开始,结束后主方再次拉高数据线,表示结束传输,自此两者重新进入Idle 状态
等待下一轮传送开始
了解了 rs232, 那么我们自然想到usb 如何做到这个呢, 既然是串行位流传输, 也理所当然的