当前位置:技术文章首页 >> 嵌入式技术 >> 嵌入式系统 >> usb全接触之usb function----usb传输(2)

usb全接触之usb function----usb传输(2)

2008-08-29 22:26:50  作者:不详  来源:互联网  浏览次数:990  文字大小:【】【】【

usb全接触之usb function----usb传输(2)

发表时间:1970-01-01 00:00:00    来源:    责任编辑:ARM开发论坛    阅读数:

简介:本节介绍usb full speed function的四种传输类型。


上节中我们了解到了usb hostusb function 之间采用的是一种“非对称”的传输,也就是说,无论usb接受数据还是发送数据,都是由usb host首先发起。即传输的第一个packet总是由usb host发出的。这个packet将声明本次即将进行的数据传输方向,数据传输地址和数据传输类型。

1 控制式传输(Control Transfers)

: 或许你已经注重到了,一个usb host端口并不是仅仅支持一个Usb function.如图1,


Image usb_architectetor
图一: usb层状图


通过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 function进行交互来分配地址呢。这里,是这样解决的:usb协议保留了一个“通用地址”0,usb host 通过这个地址0来和初始未分配地址的usb function进行通讯,进行一些初始的预备工作,诸如这里的为它非配一个特定地址。后面我们就会了解到,usb除了配置地址外,还有一些其它参数需要事先主从双方达成共识。这些参数也都是通过控制式传输完成的。一个Usb 的控制式传输如图二示:

字串5

Image contrl_transfer
图二: usb控制传输


一个Usb的控制式传输总是分为两个或三个阶段进行传输:setup stage,data stage(视情况而定),status stage。

  1. 首先是setup stage,联系上节所说的Usb传输模式,usb Host总是先发起第一个packet--这里它
    1. 首先发起setup,
    2. 之后发起以data0为起始的setup data,
    3. 最后usb function回应ack结束一次交互。
  2. 其次假如有data stage,类似的,还是按照上节说的usb传输模式,
      1. usb host总是先发起第一个Packet--Out(或in),
      2. 之后usb host(或usb function)发起以data1为起始的payload data,
      3. 最后Usb fuction(或usb host)回应ack结束一次交互。
    1. 假如数据未传完,继续data stage,同上继续。
  3. 最后是status stage,类似的,
    1. usb host首先发起第一个Packet--in(或out),
    2. 之后usb function(或usb host)发起以data1为起始的Null data(0长度),
    3. 最后Usb host(或usb function)回应ack结束一次交互。

M开发论坛
如此,整个控制式传输结束。 你或许有疑问,data stage为什么进行了多次而非一次完成?实际上,usb总是将一批大量的数据分成了许多小段来进行传输,称为一个pay load。这样传输的目的是轻易对传输进行控制。既然一次大量的数据总是被分成一段一段来分次传输,那么这里就出现了一个需要事先确定的参数(wMaxPacketSize):即每次这个小段有多大。这个参数如地址指派一样,正式传输之前需要事先达成共识。通过控制式传输,现在我们已经完成了usb function的地址指定等参数的设置工作,下一步可以进行正式的数据传输了。



注:文章图片来源于cypress EZ-USB FX2 Manual Technical Reference ARM


责任编辑:


相关文章
 

最新文章

更多

· 嵌入式LwIP协议栈的内存管理
· 基于Web的嵌入式设备管理
· Java在嵌入式系统中的应用
· 开发嵌入式系统选择分析
· 在嵌入式系统中的内存压...
· 一种嵌入式便携汽油标号...
· 嵌入式中FPGA的被动串行配置
· 一种低成本的Ehternet嵌...
· 嵌入式静止图像编码系统设计
· 在嵌入式Linux下ARM处理...

推荐文章

更多

· 嵌入式LwIP协议栈的内存管理
· 基于Web的嵌入式设备管理
· Java在嵌入式系统中的应用
· 开发嵌入式系统选择分析
· 在嵌入式系统中的内存压...
· 一种嵌入式便携汽油标号...
· 嵌入式中FPGA的被动串行配置
· 一种低成本的Ehternet嵌...
· 嵌入式静止图像编码系统设计
· 在嵌入式Linux下ARM处理...

热点文章

更多

01-01·[接口与通讯] 红外遥控系统原理及单片机软... (3804)
01-01·[单片机技术] 温度传感器PT100的应用 (2424)
09-17·[可编程逻辑] 基于VHDL语言的智能密码锁设计 (1984)
09-08·[可编程逻辑] 基于FPGA的QPSK调制解调电路... (1973)
09-08·[单片机技术] AT89S52的中文简介及资料下载 (1909)
11-24·[电子基础] 与初学者谈电子制作(电子入门) (1789)
09-09·[电源技术] 基于DSP的三相SPWM波发生软件... (1789)
10-24·[传感与控制] MODBUS RTU通讯协议在S7-200... (1612)
12-01·[单片机技术] 基于ARM智能家居控制器设计与... (1612)
11-24·[单片机技术] 常用LED数码管驱动电路2(单 ... (1601)
09-08·[电源技术] 能延长电池寿命的单节电池升... (1537)
09-11·[仪器与仪表] 应用ADuC847芯片设计压力及温... (1520)