USB总线协议中的一些基本概念
来源:互联网 发布:日本动漫软件下载 编辑:程序博客网 时间:2024/05/21 18:33
USB总线协议中经常会遇到一些概念,自己总结了下,讲基本的概念进行描述
1.USB系统模型:
USB实际上是一个数据通信协议,由几个大公司定义的。
USB系统由两部分组成,USB主机和USB设备,平常看到的USB主机就是集成在PC上的USB口;USB设备就是我们连接在PC上的设备,如U盘。其中USB设备始终是被动的,USB主机器控制所有的传输,即所有的事务都是由USB主机发起。USB设备通常由两部分芯片组成,USB协议解释芯片+MCU(搬数据)。
1.USB设备地址与端点的区别
端点(EndPoint):首先从物理机制来说,端点可以使嵌入式系统或PC上的一个数据缓冲区,用来存放或发送USB的数据;从逻辑上看,端点可以视为数据的收发器,按照预先定义的传输方式来交换数据。每个端点具有唯一的地址,即端点号。每个端点的属性由硬件芯片设置,需要从data sheet中查看。在USB的固件中,就存在对端点的描述,包括输入/输出方向,端点号,端点包的容量即Buffer大小,如果一次事务传输的数据量>EndPoint.Buffer,则会分包,如TCP传输的数据包>MCU时,在链路层则会出现分片包;其中端点描述为4bit,每个设备最多有2^4=16个端点,其中0号端点为配置端点,可以是双向的。其他端点只能是单向的。一个控制器具体有几个端点以及端点的属性,需要查看芯片手册。
USB设备地址为7bit,2^7=128,其中0号地址是设备枚举成功前默认的地址,所以一个USB主机最多可以连接127个USB设备。USB系统为一个拓扑结构,USB主机需要知道每个设备的地址。
数据在USB设备和USB主机的传输方式是串口模式,但是USB主机与PC的传输是采用PCI总线,并口方式进行的。
2.USB总线上二进制数的发送顺序
当一个数据需要多个字节表示的时候,数据的传输就需要考虑字节顺序了
USB总线上二进制数的发送顺序是按照LSB->MSB的方式进行。
如0x12345678,在USB总线上的发送顺序是0x78,0x56,0x34,0x12的字节顺序发送.
如果数据0x12345678,在PC中采用的保存方式是Little Endian方式(数据在内存中保存的方式0x78 0x56 0x34 0x12),则数据在USB总线的发送不需要转化,如intel
而如果数据0x12345678在PC中采用的保存方式是Big Endian方式(数据在内存中保存的方式0x12 0x34 0x56 0x78),则数据在发送之前需要进行转化。
同时接受段的MCU也需要注意数据的保存方式,处理字节位与地址的关系。
网络字节序采用"所见即所得”的方式获取,如网络抓包工具收到两个字节 0x01 0x02,按照一般的数学常识,数抽从左到右增长的的方式,则解释为0x0102,intel CPU模式则需要进行数据的转化。
即,网络字节流可以理解为Big Endian的方式处理的。
3.USB 事务与传输的概念
4.USB 4种传输模式以及应用场景
5.USB帧格式
5.USB如何实现低功耗
- USB总线协议中的一些基本概念
- eMule 协议中的一些基本概念
- USB总线协议概述
- 总线协议类---USB
- USB总线协议概述
- USB协议的基本概念
- USB架构概述之四总线协议
- 网络协议的一些基本概念
- MPEG2中的一些基本概念
- CPP 中的一些基本概念
- pcb 中的一些基本概念
- GT中的一些基本概念
- c#中的一些基本概念
- FFMPEG中的一些基本概念
- FFMPEG中的一些基本概念
- FFMPEG中的一些基本概念
- WebLogic中的一些基本概念
- oracle中的一些基本概念
- 指针和数组
- cisco mds 9500系列光纤交换机恢复密码
- JQuery $.ajax 捕获异常信息
- Warning: $HADOOP_HOME is deprecated. hadoop1.0.1解决方法
- 售前职位职责分类
- USB总线协议中的一些基本概念
- iphdr结构
- 10 个免费的 C/C++ 集成开发环境
- Android中AsyncTask的简单用法
- Spring 3.x企业应用开发实战
- Oracle 中常见函数在teradata中如何实现
- [[面经]]广移,纯干货
- android博客地址
- SLF4J: Failed to load class "org.slf4j.impl.