原创 USB接口基本概念(2)

2014-5-22 14:13 1435 10 11 分类: 通信 文集: 接口

1、USB事务处理是USB主机和USB设备数据通信的基础。共7种事务:IN事务处理、OUT事务处理、SETUP、PING、SOF、SPLIT、PRE事务处理。

一个完整的USB事务处理包含3个阶段:令牌阶段、数据阶段、握手阶段

令牌包阶段:(主机到USB设备)每一个事务处理类型都从一个令牌阶段开始,它定义了事务处理的类型。


数据包阶段:传输相关的数据,在一个事务处理中可以传输的最大数据包是1024字节(高速设备)。


握手阶段:对数据发送方提供了一个反馈信号,通知发送方数据是否已经被正确接收。

 

例子: IN事务处理步骤

(1)USB主机向USB设备发送IN令牌包,表示主机可以接收数据;

(2)USB设备正确接收到IN令牌包,然后向USB主机发送数据包

(3)USB主机正确接收到数据包后,向USB设备返回ACK握手包,确认传输成功。

事务处理可以采用块传输、中断传输、同步传输和控制传输4种方式。

USB 传输类型有四种: 控制传输,中断传输,块传输,同步传输。

传输类型和事物处理的关系:

事物处理是USB通信最小的单位,各种传输类型都是由事物处理组成的,比如控制传输类型分成三个阶段:建立阶段,数据阶段,状态阶段。每个阶段都是由特定的事务组成;

建立阶段需要一个SETUP事务处理;数据阶段可能需要多个 IN/OUT事务处理;控制阶段由一个IN事务和一个OUT事务处理组成。对于每一个事务,都是由令牌阶段、数据阶段、握手阶段组成。

2、USB总线设备列举过程

为什么枚举:

枚举就是从设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根据这些信息来加载合适的驱动程序。


在设备的枚举过程中都是使用控制传输,端点0(管道0);

枚举过程:

(1)主机检测到插入USB设备后,使用默认地址0,向USB设备发送GetDescriptor(Device)请求,获取设备描述符;

(2)主机发送SetAddress请求,为连接的USB设备分配一个唯一的设备地址;

(3)主机使用新的地址向USB设备发送设备描述符请求,获取全部描述符,包括产品ID,供应商ID等;

(4)主机循环发送描述符请求,获取配置、接口、端点描述符和自定义描述符;

(5)主机根据USB设备的配置信息,如产品ID、供应商ID等,选择并加载一个合适的驱动程序。

(6)在加载驱动程序后,便可以进行各种配置操作和数据传输等。

 

文章评论1条评论)

登录后参与讨论

用户377640 2014-5-24 08:54

学习了,有用。

shihlin_812989226 2014-4-15 16:08

相关推荐阅读
pengchengcheng082_593158939 2015-08-21 16:26
Linux 下 的 vi 编辑器
一、按ESC键 跳到命令模式,然后: :w 保存文件但不退出vi :q 不保存文件,退出vi :wq 保存文件并退出vi :q! 不保存文件,强制退出vi :w! 强制保存,不推出...
pengchengcheng082_593158939 2015-07-28 15:57
面向对象和面向过程区别
转自 http://blog.sina.com.cn/s/blog_4dd5955301000a2m.html     面向对象和面向过程的区别,实在是难用一两句话说明白。   ...
pengchengcheng082_593158939 2015-05-23 10:39
后仿真能否被形式验证(Formal Verification)和静态时序分析(Static Timing Analysis)所取代
转自 http://www.cnblogs.com/jyaray/archive/2011/04/26/2029856.html 验证的主要目的:就是检查时间模型是否满足时间要求,是否实现了时...
pengchengcheng082_593158939 2015-05-19 11:18
两种代码方式
下面的两段程序等价,RTL图以及综合后的结果 完全一样。看似简单,其实是两种不同的思维方式。在复杂电路中能体现出两种方式各自的特点,第一种容易理解,第二种则结构更清晰,更接近综合后的结果。以前习惯用上...
pengchengcheng082_593158939 2015-05-14 16:28
Linux 下 的 cc 和 gcc
转自 http://www.cnblogs.com/zhouyinhui/archive/2010/02/01/1661078.html   在Linux下一会看到cc,另一会又看到gcc...
pengchengcheng082_593158939 2015-05-13 17:19
mips 编译器
1、linux 系统下编程的编译器 GNU toolchain(GNU工具链)是一个包含了由GNU项目所产生的各种编程工具的集合。这些工具形成了一条工具链,用于开发应用程序和操作系统。  ...
我要评论
1
10
关闭 站长推荐上一条 /2 下一条