USB总线协议基础知识
可以,比如
从机要发数据给主机时,也可以采取同主机类似的方式:
首先,从机发第1个packet给主机,声明数据传送方向,数据传输地址,数据传输类型。
其次,从机发第2个至第n个packet载有实际数据
最后,主机返回一个packet是一个ACK包,报告数据传输的结果,比如接受出错或成功等信息,这样从机就可以
借此了解到这次传输情况,从而有可能来作出相应措施如决定是否重发。
基本上可以归结为一个“三段式”传输
这里有人可能注意到了,对这样一个传输机制,从机和主机的功能将是一样的,因为这样的实现机制,从机
可能在某一时刻是主机,某一时刻又可能是从机,因为他们要实现同样的功能。这样实现起来的复杂性也将是
一样的。
注:这里概念或许容易混淆,其实,我们这里的主机(master)和从机(slaver)是一个transceiver,即可收可发。
相应的,在某一时刻,master在发数据,我们称其为transmitter,在接受时我们称为receiver.对slaver同样。
我们可能还注意到了,usb这种按pakcet传输的方式在实现时已经很复杂了(至少比rs232要复杂多吧),至少我
们目前看来主从机功能一样这样的实现方式似乎还是可行,但是后面我们谈到usb host时将会了解到host的功
能是如何的复杂,以至于让一个usb function 也带上如此的功能成本和实现复杂性将陡然上升。作为面向广范
应用的usb,这是我们不允许的。我们期望的是一个使用usb 的udisk,使用usb的光驱,使用usb的耳麦等等这些
东西不要因为usb而变得昂贵,复杂。
正是因为这个原因,usb从机的传输发式便由上面的方式改成了下面的方式进行:
首先,主机发第1个packet给从机,声明数据传送方向,数据传输地址,数据传输类型。
其次,从机收到主机送来的第一个packet后,再发第2个至第n个packet载有实际数据
最后,主机返回一个packet是一个ACK包,报告数据传输的结果,比如接受出错或成功等信息,这样从机
就可以借此了解到这次传输情况,从而有可能来作出相应措施如决定是否重发。
而对于usb 主机传输方式保持不变。
对于这样的改变,我们马上就有疑问了:这个改变的传输方式是和未改变之前的等价吗。当然,不全等价。问题
在哪里?仔细观察一下便知,两者区别在于第一个packet是由谁发起的。未改变之前,第一个packet总是由要传
送数据的一方发起,而改变之后的第一个Packet总是由主机发起。这样,就变成如果从机要发送数据给主机时,
总是由主机发起(第一个packet),然后从机开始传送。
可能初次接触我们会感觉怪怪的,怎么从机要给主机发送数据前反而要主机先发packet给从机。
我们要说这样是可以的,因为通常一次传输交互的产生,并非无来由的产生,这些都是由程序员控制的,控制usb
何时收,何时发,及发给谁!!!
这里我们就注意到了,usb function(总是作为从机)的功能一下从原来与主机具有相同功能的tranceiver变成
了现在仅具发送(或接收)功能的transmitter(或Receiver)实现的复杂性及成本可想而知也就相应得减小了。
简介:本节介绍usb full speed function的四种传输类型。
上节中我们了解到了usb host
数据还是发送数据,都是由usb host首先发起。即传输的第一个packet总是由usb host发出的。这个packet将声
明本次即将进行的数据传输方向,数据传输地址和数据传输类型。
控制传输(Control Transfers)
: 或许你已经注意到了,一个usb host端口并不是仅仅支持一个Usb function.如图1,
通过usb hub,一个usb host端口可以连接usb鼠标,usb键盘,Usb写字板......。要连接这么多东西在同一个
usb host上,我们通常会有一个基本问题,即usb host如何识别这些被连接在它的端口上的设备呢。正如通常的
主从式通讯系统一样,如rs485多机通讯,我们通常是用一个特定的地址标志每一个从设备。对这里的usb,我们
采用同样的方法,将为每个挂接在该usb host上的usb function指定一个特定地址,通过这个特定地址来识别
每个usb function.看来这将是一个usb function在数据传输之前必须解决的问题--得到它的地址分配。
这个“地址指定”的过程需要usb host通知usb function才能完成,这个交互过程就是一个控制式传输。通过
这个“控制式传输”,usb host将指定地址给usb function ,以为即将进行的正式通讯做好准备工作。这里细心
的读者可能已经注意到了,既然usb host总要分配地址给usb function才能进行正式的数据传输工作,那么
usb host将如何与
USB总线协议基础知 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)