关于USB传输大体有个概念,下一步就来看看究竟USB上传的什么东西,以什么格局传数据,先不触及端点的概念。
各 种总线的数据传输都是以固定的层次协议进行的,USB当然也不破例。所谓的层次也仅仅个笼统的概念算了,便是表达一种依靠联系,上层要依靠与底层,上层以 底层为根底,上层只需求关怀自己的东西就行了,假如你还不了解,那就持续看,学习一个东西不可能一两句话说的了解一个点,需求全面了解后才干清楚各个点。
要 完成两个机器(机器的规模比较广,可所以电脑,交换机,单片机)的通讯总是要有一个载体才能够,关于机器当然是电平凹凸为载体,具体的说机器甲要告知机器 乙一件作业(比方说一条指令),那么机器甲能够经过一根线(串行数据总线)连到机器乙的一个IO口上,甲发送一个个的凹凸电平,乙固定时刻检测自己的这个 IO口,然后逐一记载下放到自己的缓冲里,这样乙就收到甲送的数据了。上述便是一个简略的数据链路层(计算机网络里这么叫)的描绘,这一层要确保的便是甲 发的每一位数据,乙都能够正确及时的承受,而且对在传输进程中犯错的数据做出反响。其实比数据连路更底层的还有物理层,这便是真实的物理介质,关于机器就 是电线了,数据便是电线上传输的电压,USB是用的四线,两个电源,两个数据线。
这儿也打个比方,比方人与人进行沟通,咱们当然是经过说话了,物理层便是空气和传输的声波,数据链路层便是咱们说的每一个字,物理层便是空气,担任把咱们说的话转换成声波传给对方,数据链路层担任让对方能正确的听到每个字,假如听的不清能够告知对方重新说一遍。
经 过上述的两个底层,就能够确保每一位数据能够正确的传到对方那里去。下一步的作业当然是解析数据代表了什么,一般来说,数据都是以一串数为单位,一般称为 一个包,机器间传输都是以一个包为单位传出,就像人们说话都是以一句话为单位输出相同。每一个包包含有许多位数据,这些数据又分段表明不同的含义,如图 一,这是一个USB令牌阶段的包,Sync是同步数据(相当于说话时先打个招呼,告知对方要跟他说话了),PID是包标明(告知对方这个包是干什么用 的),ADDR是对方的地址(叫对方的姓名),ENDP是用端点几通讯(先不介绍这个),CRC5是校验位(判别这个包是否在传输中犯错),EOP是包结 束。
|——————————————————–|
|Sync|PID|ADDR|ENDP|CRC5|EOP|
|________________________________________________________|
图一
USB 的数据包又分为三种,一个是令牌包,一个是数据包,另一个是握手包。每一次的USB通讯业务处理都是以令牌包最初,告知对方要跟谁说话,这句话是用来干嘛 的。假如要求有数据传输,则下一步便是数据包,别的假如要求对方要有反应,则会宣布握手包。令牌包又简略的包含OUT,IN,STEP三种类型,OUT是 用于主机告知设备主机要向USB设备发送数据,IN是用于主机告知设备要上传数据,而STEUP是用于主机向USB设备发送装备信息,在枚举进程中会用 到。别的数据包和握手包的具体格局什么的,能够参照具体的协议。
能够看到在所以的通讯进程中,主机都是发起者,不管是主机发送数据到USB设备仍是USB设备发送数据到主机,都必须收主机操控。图二为一次业务的进程
令牌阶段——》数据阶段——》握手阶段
图二
这个进程能够这样描绘,甲和乙对话,甲是老板,乙是职工。第一节现已讲过了,乙面试便是枚举,在这个进程中,甲多段的发送STEP令牌包给乙,乙收到后假如要反应数据,就发数据包给甲,甲正确接纳后,跟甲握握手,表明这次对话成功。
乙被正式选取后,甲会分派使命(OUT),这时甲对乙说有使命给你(令牌阶段),然后乙就开端听,甲说你的使命便是记载数据而且上报(这段话便是数据包),乙说好的(握手包)。
乙开端正式作业,而且记载数据。过了一段时刻,甲开端要求提交数据(IN),乙把数据报告给甲(数据阶段),甲说好(握手成功)。这儿乙不能自动的去向老板报告,只能被迫的干活。
上面现已讲USB主机和设备间数据传输的进程,都是我个人了解,有不正确和不到位的我们提出,便利初学者了解,谢谢··