USB总线协议中的一些基本概念

本文详细阐述了USB系统模型、设备地址与端点的区别、USB总线数据传输顺序、事务与传输概念、四种传输模式及应用场景等核心内容,旨在帮助读者深入理解USB协议的基本原理。

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如何实现低功耗

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值