第4章 USB通用串行总线讲解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
USB的数据格式和类型
(四)传输:传输由OUT、IN、SETUP事务其中的事务构 成,传输有四种类型: 中断传输 批量传输 同步传输 控制传输 其中中断传输和批量转输的结构一样;同步传输有最简单的 结构;而控制传输是最重要的也是最复杂的传输,所有USB 设备的工作均由控制传输开始。
1、中断传输:由OUT事务和IN事务构成,用于键盘、鼠标 等HID(人机交互)设备的数据传输中。 2、批量传输:由OUT事务和IN事务构成,用于大容量数据 传输,没有固定的传输速率,也不占用带宽,当总线忙时, USB会优先进行其他类型的数据传输,而暂时停止批量转输, 如U盘。 3、同步传输:由OUT事务和IN事务构成,有两个特殊地方, 第一,在同步传输的IN和OUT事务中是没有返回包阶段的; 第二,在数据包阶段所有的数据包都为DATA0 4、控制传输:最重要的也是最复杂的传输,控制传输由三 个阶段构成(初始设置阶段、[可选]数据阶段、状态信息阶 段),每一个阶段可以看成一个独立的传输,也即控制传输 其实是由三个传输构成的,用来在USB设备初次接到主机之 后,主机通过控制传输来交换信息,设备地址和读取设备的 描述符,使得主机识别设备,并安装相应的驱动程序。
备,通知设备要接收数据;
数据包阶段——比较简单,就是主机会向设备送数据, DATA0与DATA1交替
握手包阶段——设备根据情况会作出三种反应: 1)设备端点接收正确,设备向主机返回ACK,通知主 机可以发送新的数据,如果数据包发生了CRC校验错误,将 不返回任何握手信息;
2) 设备正在忙,无法接收主机发出的数据包就发送 NAK无效包,通知主机再次发送数据;
USB的数据格式和类型
(二)包:由域构成的包有四种类型: 1、令牌包:可分为输入包、输出包、设置包和帧起始包 (注意这里的输入包是用于设置输入命令的,输出包是用来 设置输出命令的,而不是放据数的) 其中输入包、输出包和设置包的格式相同:
SYNC8+PID8+ADDR7+ENDP4+CRC5 帧起始包的格式:
USB设备有两种供电方式,自给方式(设备自带电源)和 总线供给方式。USB Hub采用自给方式。
USB主机有一个独立于USB的电源管理系统(APM)。 USB系统软件与主机电源管理系统交互来处理诸如挂 起和唤醒等电源事件。为了节省能源,对于暂时不用 的USB设备,电源管理系统将其置为挂起状态,等有 数据传输时,再唤醒设备。
若一个中断等待处理,那么该设备会把中断信息作为数据
包返回,主机收到该数据包,如果校验正确,就向设备发送 ACK,如果不正确,则不返回任何握手信息。
批量传输:
通过差错检测和重传机制,批量传输可以保证主机和设备间进行 无差错的数据传递。操作过程:
输入—— 1) 主机向设备端点发送一个PID为IN的令牌包 2) 若设备未准备好,则返回一个NAK握手包;
bmRequestType(1) + bRequest(1) + wvalue(2) + wIndex(2) + wLength(2)
标准USB设备请求命令
各字段意义: 1、请求类型bmRequestType:D7D6D5D4D3D2D1D0
D7
D6 D5
D4 D3 D2 D1 D0
1 0 11 10 01 00 其他 00011 00010 00001 00000
若设备端点被禁止,需要软件干预,则返回一个STALL握手包; 否则设备返回数据包(DATA0和DATA1交替),主机如果正确接 收,返回ACK,如果校验错误,返回NAK。 输出—— 1) 主机向设备端点发送一个PID为OUT的令牌包 2) 主机向设备端点发送一个数据包(显然为DATA0) 3) 若设备返回ACK握手包,说明数据包已被正确接收,主机可以 继续发送数据包(0/1交替); 若设备返回NAK,说明收到的数据正确,但该设备暂时无法接 收更多数据(如缓冲区已满),因此主机应重发该数据; 若返回STALL,说明设备存在错误,主机不应继续重试; 若收到的数据包存在CRC校验错误,则不会返回任何握手包。
USB串行数据 编码
USB串行数据是用NRZI(None Return Zero lnvert,非 归零反向码)进行编码的,编码过程在数据传输之前完 成,数据传输采用差分方式传输,传输到目的方的数 据再被解码。对数据编码和采用差分信号传输有助于 确保数据的完整性和消除噪声干扰。
USB的数据格式和类型
0) 0 GET_STATUS:用来返回特定接收者的状态 1) 1 CLEAR_FEATURE:用来清除或禁止接收者的某些特性 2) 3 SET_FEATURE:用来启用或激活命令接收者的某些特性 3) 5 SET_ADDRESS:用来给设备分配地址 4) 6 GET_DEscriptOR:用于主机获取设备的特定描述符 5) 7 SET_DEscriptOR:修改设备中有关的描述符,或者增加新的描述符 6) 8 GET_CONFIGURATION:用于主机获取设备当前的配置值 7) 9 SET_CONFIGURATION:用于主机指示设备采用的要求的配置 8) 10 GET_INTERFACE:用于获取当前某个接口描述符编号 9) 11 SET_INTERFACE:用于主机要求设备用某个描述符来描述接口 10) 12 SYNCH_FRAME:用于设备设置和报告一个端点的同步帧
握手包阶段——设备接收到主机的命令信息后,返回 ACK,此后总线进入空闲状态,并准备下一个传输(在 SETUP事务后通常是一个IN或OUT事务构成的传输)
标准USB设备请求命令
标准USB设备请求命令是用在控制传输中的“初始设置步 骤”里的数据包阶段(即DATA0,由八个字节构成),共 有11个,大小都是8字节,具有相同的结构,由5个字段构 成(字段是标准请求命令的数据部分),结构如下(括号 中的数字表示字节数,首字母bm,b,w分别表示位图、字节 、双字节):
中断传输: 中断传输仅包含一个IN事务,结构比较简单。 1) 主机定期向某设备端点发送PID为IN的令牌包。 2) 若该端点没有新的中断信息可供返回,也即设备没有中断 请求,则直接进入握手阶段,设备向主机返回一个NAK握手 包;
若一个端点被禁止而需要主机进行软件干预,则设备向主 机返回一个STALL握手包;
PID域格式及包格式
帧开始包格式
接受和发送包的格式
USB的数据格式和类型
(三)事务Transaction:分别有IN事务、OUT事务和 SETUP事务三大事务,每一种事务都由令牌包、数据包、握 手包三个阶段构成,事务的三个阶段如下:
1、令牌包阶段:启动一个输入、输出或设置的事务 2、数据包阶段:按输入、输出发送相应的数据 3、握手包阶段:返回数据接收情况。在同步传输的IN 和OUT事务中没有这个阶段,这是比较特殊的。
事务的三种类型(按三个阶段来说明):
1、 IN事务: 令牌包阶段——主机发送一个PID为IN的输入包给设备,
通知设备要往主机发送数据;
数据包阶段——设备根据情况会作出三种反应(注意: 数据包阶段不总是传送数据的,根据传输情况还会提前进入 握手包阶段):
1) 设备端点正常,设备往主机里面发出数据包 (DATA0与DATA1交替);
设主保 用 类 标 值 接
接
接
接
备机留 户 请 准 保 收
收
收
收
到到值 定 求 请 留 者
者
者
者
主设
义命求
为
为
为
为
机备
源自文库
的令命
其
端
设
设
命
令
他
点
备备
令
接
收
者
标准USB设备请求命令
2、请求命令代码bRequest:在标准USB命令中,每一个命 令都定义了编号,编号的值就为字段的值,编号与命令名称 如下。命令代码是标准设备请求命令的核心,它们决定了11 个USB标准请求命令:
第4章 通用串行总线USB
USB系统组成 USB系统的接口信号和电气特性 USB数据流类型和传输类型 USB交换的包格式 USB设备状态和总线枚举 USB外围芯片及应用 USB接口数据采集系统硬件电路设计
USB的技术优势
使用USB,用户不需要扩展插卡,无须了解DIP开关 设置、跳线、中断IRQ设置、DMA通道及IO地址等细 节,无须开发底层设备驱动程序。
USB硬件
USB系统 组成
USB主控制器/根集线器 USB集线器 USB设备
USB设备驱动程序
USB软件 USB驱动程序
USB主控制器驱动程序
USB的拓扑结构
物理接口
USB的物理接口有两种类型:A口和B口
B口外形图(公口)
USB系统的接口信号
USB总线包括4根信号线:
GND:地线 -------------黑色 D+: 信号线-------------绿色 D-: 信号线-------------白色 VCC:电源线-------------红色
2) 设备正在忙,无法往主机发出数据包就发送握手包 NAK包,IN事务提前结束,到了下一个IN事务才继续;
3) 相应设备端点被禁止,发送握手包STALL包,事务 也就提前结束了,总线进入空闲状态。
握手包阶段——主机正确接收到数据之后就会向设备发 送ACK包。
事务的三种类型(按三个阶段来说明):
2、 OUT事务: 令牌包阶段——主机发送一个PID为OUT的输出包给设
•与机器的连接方法
USB接口电气特性
USB 主 机 或 根 Hub 对 设 备 提 供 的 对 地 电 源 电 压 为 4.75~5.25V,设备吸入的最大电流值为500mA。当 USB 设 备 第 一 次 被 USB 主 机 检 测 到 时 , 设 备 从 USB Hub吸入的电流值应小于100mA。
SYNC8+PID8+DATA(0~1023Byte)+CRC16
USB的数据格式和类型
3、握手包:结构最为简单的包,格式如下 SYNC8+PID8
有3种类型的握手包:ACK、NAK、STALL
4、特殊包
标识域与包类型
标识域 = 标识码 + 标识码 标识码由四位数据组成,可以表示16种标识码。在USB1.1规范 里,只用了10种标识码,USB2.0使用了16种:
SYNC8+PID8+FRAM11+CRC5
2、数据包:分为DATA0包和DATA1包,当USB发送数据的 时候,当一次发送的数据长度大于相应端点的容量时,就需 要把数据包分为好几个包,分批发送,DATA0包和DATA1包 交替发送,即如果第一个数据包是DATA0,那第二个数据包 就是DATA1。但也有例外情况,在同步传输中,所有的数据 包都是为DATA0。格式如下:
3) 相应设备端点被禁止,发送错误包STALL包,事务 提前结束,总线直接进入空闲状态。
事务的三种类型(按三个阶段来说明):
3、SETUT事务: 令牌包阶段——主机发送一个PID为SETUP的输出包给
设备,通知设备要接收数据;
数据包阶段——比较简单,主机会向设备送一个固定为 8Byte的DATA0包,这8Byte的内容就是标准的USB设备请求 命令(共11条)
连接USB外设只需简单地插上插座即可,甚至不需关 闭电源,真正“即插即用”。
得到400多家大公司的支持,开发了USB电信产品、外 设及软件。
传输波特率(即传输速率)为1.5Mb/s~12Mb/s(USB2.0的 速率达到480Mb/s),通过Hub最多可连接127个外设。
USB系统组成
USB数据由二进制数字串构成,bit序列串构成域(有七 种),域构成包,包构成事务(IN、OUT、SETUP),事 务最后构成传输(中断传输、并行传输、批量传输和控制 传输)。
(一)域:USB数据最小单位,可分为七个类型: 1、同步域(SYNC),8位,固定为0000 0001,用于同步 2、标识域(PID),4位标识符+4位标识符反码,表明包的 类型和格式。(USB的标识码有16种) 3、地址域(ADDR):7位,代表了设备在主机上的地址。 4、端点域(ENDP),4位。 5、帧号域(FRAM),11位,每一个帧都有一个特定的帧号, 帧号域最大容量0x800,对于同步传输有重要意义。 6、数据域(DATA):长度为0~1023字节,在不同的传输类 型中,数据域的长度各不相同,但必须为整数个Byte。 7、校验域(CRC):对令牌包和数据包中非PID域进行校验。