百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

通用串行总线USB知识全解,带你了解不一样的USB世界

cac55 2024-10-02 11:30 23 浏览 0 评论

日常生活中我们经常能够接触到的串行接口应该就是就是USB了,大多数情况下我们称它为数据线,它的用处非常多,比较常见的就是手机充电线和之前很多的MP3、MP4充电线以及电脑连接器线,但是对于USB你真的了解吗?

【USB接口的定义】

USB是英文universal serial bus 的缩写,中文含义是“通用串行总线”,它是一种普遍应用在PC领域的新型接口技术。早在1995年,就已经有PC机带有USB接口了,但由于拳法软件及硬件设备的支持,这些PC机的USB接口都闲置未用,1998年后,随着微软在windows 98中内置了对USB接口的支持模块,加上USB设备的日渐增多,USB接口才逐渐走进了使用阶段。

直至到现在使用USB接口的设备与日俱增,包括:数码相机、扫描仪、游戏杆、磁带和软驱、图像设备、打印机、键盘、鼠标等等。

【USB VS IEEE1394】

1.它们的相同点

1)两者都是一种通用外接设备接口

2)两者都可以快速传输大量数据

3)两者都能连接多个不同设备

4)两者都支持热拔插

5)两者都可以不用外部电源

2.它们的不同点

1)两者的传输速率不同。USB的传输速率经过更新换代已经有原先的480mbps优化至每秒150MB,已经提升了将近五倍了;而IEEE1394可以使用3.2Gbps。

2)两者的结构不同。USB在连接时至少需要一台电脑,并且需要HUB来实现互联,整个网络中最多可连接127台设备。IEEE1394并不需要电脑来控制所有设备,也不需要HUB,IEEE1394可以用网桥连接多个IEEE1394网络,也就是说再用IEEE1394实现63台IEEE1394设备之后也可以用网桥将其他的IEEE1394网络连接起来,达到无限制连接。

3)两者的智能化不同。IEEE1394网络可以在其设备进行增减时自动重设网络。USB是以hub来判断连接设备的增减。

4)两者的应用程度不同。现在USB已经被广泛应用于各个方面,而IEEE1394现在只被应用于音频、视频等多媒体方面。

【USB接口的优点】

1.可以热插拔。这点让用户在使用外接设备时,不需要重复“关机 ”等类似操作。而是直接在PC机开机是就可以将USB电缆插上使用。

2.携带方便。USB设备大多以“小、轻、薄”见长,同样20G的硬盘,USB硬盘比IDE硬盘要轻一半的重量,在想要随身携带大量数据时,当然USB硬盘会是首要之选了。

3.标准统一。大家常见的IDE接口的硬盘,串口的鼠标键盘,并口的打印机扫描仪,可是有了USB之后,这些应用外设统统可以用同样的标准与PC连接,这时就有了USB硬盘、USB鼠标、USB打印机等等。

4.可以连接多个设备。USB在PC上往往具有多个接口,可以同时连接几个设备,如果街上一个有4个端口的USBHUB时,就可以在连上4个USB设备,以此类推。

【USB接口接线图】

【USB引脚定义】

【miniUSB接口定义】

【miniUSB引脚定义】

【常见USB接口】

从左往右依次为:miniUSB公口(A型插头)、miniUSB公口(B型插头)、USB公口(B型)、USB母口(A型插座)、USB公口(A型插头

【前置USB接口】

前置USB接口是位于机箱前面板上的USB扩展接口。目前使用USB接口的各种外部设备越来越多,例如移动硬盘、闪存卡、数码相机等等,但在使用这些设备(特别是经常使用的移动存储设备)时每次都要做到机箱后面去使用主板板裁USB接口显然是不方便的,前置USB接口在这方面给用户提供了很好的易用性,目前,前置USB接口已经成为机箱的标准配置。

前置USB接口要使用机箱所附带的USB连接线连接到主板上所相应的前置USB插针(一般是8针、9针或10针,两个USB成对,其中每个USB使用4针传输信号和供电)上才能使用。在连接前置USB接口时一定要事先仔细阅读主板说明书和机箱说明书中与其相关的内容,千万不可将连线接错,不然会造成USB设备或主板的损坏。

另外,使用前置USB接口时要注意前置USB接口供电不足的问题,在使用耗电较大的USB设备时,要使用外接电源或直接使用机箱后部的主板板载USB接口,以避免USB设备不能正常使用或被损坏。

【USB通讯协议】

1.USB总线拓扑结构

USB 体系采用分层的星型拓扑来连接所有USB 设备,如下图所示:以HOST-ROOT HUB为起点, 最多支持7 层(Tier),也就是说任何一个USB 系统中最多可以允许5个USB HUB 级联。一个复合设备(Compound Device)将同时占据两层或更多的层。

2.USB设备

USB设备包括Hub和功能设备而功能设备又可以细分为定位设备字符设备等等。为了进一步叙述我们给出端点(endpoint)和管道(pipe)的概念。

端点: 每一个USB设备在主机看来就是一个端点的集合主机只能通过端点与设备进行通讯以使用设备的功能每个端点实际上就是一个一定大小的数据缓冲区这些端点在设备出厂时就已定义好在USB系统中每一个端点都有唯一的地址这是由设备地址和端点号给出的每个端点都有一定的特性其中包括传输方式总线访问频率带宽端点号数据包的最大容量等等端点必须在设备配置后才能生效(端点0除外) 。

端点0通常为控制端点用于设备初始化参数等端点12等一般用作数据端点存放主机与设备间往来的数据 。

管道: 一个USB管道是驱动程序的一个数据缓冲区与一个外设端点的连接它代表了一种在两者之间移动数据的能力一旦设备被配置管道就存在了管道有两种类型数据流管道其中的数据没有USB定义的结构与消息管道其中的数据必须有USB定义的结构管道只是一个逻辑上的概念 。

所有的设备必须支持端点0以作为设备的控制管道通过控制管道可以获取完全描述USB设备的信息包括设备类型电源管理配置端点描述等等只要设备连接到USB上并且上电端点0就可以被访问与之对应的控制管道就存在了 。

3.USB主机

在USB 框架中,规范主要定义了USB 设备的各种状态、常用操作、USB 设备请求、描述符、设备类等。

这里重点介绍下枚举的过程。当设备连接到主机时,按照以下顺序进行枚举:

1)连接了设备的HUB 在HOST 查询其状态改变端点时返回对应的bitmap,告知HOST 某个PORT 状态发生了改变。

2) 主机向HUB 查询该PORT 的状态,得知有设备连接,并知道了该设备的基本特性。

3.)主机等待(至少100mS)设备上电稳定,然后向HUB 发送请求,复位并使能该PORT。

4) HUB 执行PORT 复位操作,复位完成后该PORT 就使能了。现在设备进入到defalut状态,可以从Vbus 获取不超过100mA 的电流。主机可以通过0 地址与其通讯。

5)主机通过0 地址向该设备发送get_device_descriptor 标准请求,获取设备的描述符。

6)主机再次向HUB 发送请求,复位该PORT。

7)主机通过标准请求set_address 给设备分配地址。

8)主机通过新地址向设备发送get_device_descriptor 标准请求,获取设备的描述符。

9)主机通过新地址向设备发送其他get_configuration 请求,获取设备的配置描述符。

10) 根据配置信息,主机选择合适配置,通过set_configuration 请求对设备而进行配置。这时设备方可正常使用

USB 设备的常用操作包括:设备连接、设备移除、设备配置、地址分配、数据传输、设备挂起、设备唤醒等。

USB 的请求包括标准请求、类请求以及厂商请求三类。所有的请求都通过默认管道发送,按照控制传输的三个阶段进行。首先HOST 通过一次控制事务传输向Device 发送一个8字节的Setup 包,这个包说明了请求的具体信息,如请求类型、数据传输方向、接收目标(Device/Interface/Endpoint 等)。

4.USB的四种传输方式

1)控制传输

控制传输是一种可靠的双向传输,一次控制传输可分为三个阶段。第一阶段为从HOST 到Device 的SETUP 事务传输,这个阶段指定了此次控制传输的请求类型;第二阶段为数据阶段,也有些请求没有数据阶段;第三阶段为状态阶段,通过一次IN/OUT 传输表明请求是否成功完成。

控制传输对于最大包长度有固定的要求。对于高速设备该值为64Byte;对于低速设备该值为8;全速设备可以是8 或16 或32 或64。

控制传输在访问总线时也受到一些限制,如:

1.高速端点的控制传输不能占用超过20%的微帧,全速和低速的则不能超过10%。

2.在一帧内如果有多余的未用时间,并且没有同步和中断传输,可以用来进行控制传输。

2)中断传输

中断传输是一种轮询的传输方式,是一种单向的传输,HOST通过固定的间隔对中断端点进行查询,若有数据传输或可以接收数据则返回数据或发送数据,否则返回NAK,表示尚未准备好。

中断传输的延迟有保证,但并非实时传输,它是一种延迟有限的可靠传输,支持错误重传。

对于高速/全速/低速端点,最大包长度分别可以达到1024/64/8 Bytes。高速中断传输不得占用超过80%的微帧时间,全速和低速不得超过90%。中断端点的轮询间隔由在端点描述符中定义,全速端点的轮询间隔可以是1~255mS,低速端点为10~255mS,高速端点为(2interval-1)*125uS,其中interval取1到16之间的值。

除高速高带宽中断端点外,一个微帧内仅允许一次中断事务传输,高速高带宽端点最多可以在一个微帧内进行三次中断事务传输,传输高达3072字节的数据。

3)批量传输

批量传输是一种可靠的单向传输,但延迟没有保证,它尽量利用可以利用的带宽来完成传输,适合数据量比较大的传输。

低速USB 设备不支持批量传输,高速批量端点的最大包长度为512,全速批量端点的最大包长度可以为8、16、32、64。

批量传输在访问USB 总线时,相对其他传输类型具有最低的优先级,USBHOST 总是优先安排其他类型的传输,当总线带宽有富余时才安排批量传输。

高速的批量端点必须支持PING 操作,向主机报告端点的状态,NYET 表示否定应答,没有准备好接收下一个数据包,ACK 表示肯定应答,已经准备好接收下一个数据包。

4)同步传输

同步传输是一种实时的、不可靠的传输,不支持错误重发机制。只有高速和全速端点支持同步传输,高速同步端点的最大包长度为1024,低速的为1023。

除高速高带宽同步端点外,一个微帧内仅允许一次同步事务传输,高速高带宽端点最多可以在一个微帧内进行三次同步事务传输,传输高达3072 字节的数据。

全速同步传输不得占用超过80%的帧时间,高速同步传输不得占用超过90%的微帧时间。

5.总线协议

USB采用little edian 字节顺序,在总线上先传输一个字节的最低有效位,

最后传输最高有效位,采用NRZI 编码,若遇到连续的6 个1 要求进行为填充,即插入一个0。

所有的USB 包都由SYNC 开始,高速包的SYNC 宽度为32bit,全速/低速包的SYNC段度为8bit。实际接收到的SYNC产度 由于USB HUB 的关系,可能会小于该值。

USB数据包的格式

PID表征了数据包的类型,分为令牌(Token)、数据(Data)、握手(Handshacke)以及特殊包4 大类,共16 种类型的PID。

对于令牌包来说,PID之后是7位的地址和4 位的端点号。令牌包没有数据域,以5位的CRC 校验和结束。SOF 是一类特殊的令牌包,PID 后跟的是11位的帧编号。

对于数据包来说,PID之后直接跟数据域,数据域的长度为N字节,数据域后以16位的CRC校验和结束。

Start-Split和Complete-Split包:

在Start-Split 和Complete-Split 包中主要指定了此次分离传输所在

的HUB 的地址和下行端口编号以及端点类型(控制、中断、批量、同步)。以及此次传输中数据包在整个数据中的位置(第一个包、中间的包、末尾的包)。

握手包包括ACK,NAK,STALL以及NYET 四种,其中ACK表示肯定的应答,

成功的数据传输;NAK 表示否定的应答,失败的数据传输,要求重新传输;STALL 表示功能错误或端点被设置了STALL 属性;NYET 表示尚未准备好,要求等待。

数据在USB 总线上的传输以包为单位,包只能在帧内传输。高速USB 总

线的帧周期为125uS,全速以及低速USB 总线的帧周期为1mS。帧的起始由一个特定的包(SOF 包)表示,帧尾为EOF。EOF 不是一个包,而是一种电平状态,EOF 期间不允许有数据传输。


鼎酷IOT部落(dkiot888)是由鼎易鸿基&万酷电子联合出品,专注于为大家提供物联网精髓的新媒体平台。我们关注物联网行业最新动态,专注做您的物联网口袋知识库,旨在搭建共同学习的知识平台,让您学得方便,聊得畅快;鼎酷IOT部落用心做大家的“良仆”。各项内容鼎酷IOT 部落微信公众号同步。物联网行业顶尖产品咨询也欢迎留言。

相关推荐

服务器用的CPU和个人电脑用的CPU有什么区别?一篇文章告诉你!

服务器cpu和普通cpu的区别你的电脑CPU是‘短跑健将’,服务器CPU却是‘铁人三项选手’——它不追求瞬间爆发力,而要7×24小时扛住千军万马的数据洪流!想知道为什么企业机房敢收天价服务费?答案全藏...

“吃鸡”新版本第1天,玩家进入游戏点击“立即更新”,后悔了!

欢迎诸位小伙伴们来到天哥开讲的《和平精英》“精英小课堂”~每逢两三个月,这款游戏就会迎来一次大版本迭代更新,很多朋友会在第一时间更新版本,前往全新的主题模式里一探究竟。不过也有一些老玩家并不会立刻更新...

中关村在线·aigo存储杯《无畏契约》全国高校争霸赛招募启事

以青春之名,燃电竞之火1赛事背景与宗旨在金秋送爽的9月,芊芊学子们即将回归校园生活。为了给精彩的校园生活锦上添花,由中关村在线与aigo存储联合主办的《无畏契约》全国高校争霸赛正式启幕,旨在为全国高...

【生肖狗】9.7-9.10提醒:人算不如天算,转变即是转机

九月上旬的风,带着秋意的清爽,也带着几分不可捉摸的变数。对于生肖狗的朋友们来说,9月7日到9月10日这四天,格外需要留意“计划与变化”的碰撞——你们向来习惯提前规划,做事稳妥周全...

转转客服IM系统的WebSocket集群架构设计和部署方案

本文由转转技术李帅分享,原题“转转客服IM的WebSocket集群部署方案”,下文有修订和重新排版。1、引言转转作为国内头部的二手闲置交易平台,拥有上亿的用户。用户在使用转转app遇到问题时,一般可以...

上线3天Steam好评率86%,《时间旅者:重生曙光》开启生存恐怖新篇章

这里究竟发生了什么?末日降临,真正的故事悄然启幕。目前,生存恐怖类游戏《时间旅者:重生曙光(Cronos:TheNewDawn)》已在PC(Steam、EpicGamesStore)、P...

什么神仙洗衣机让我一天有28小时?拆开松下「大四洗」藏了啥秘密

说起家庭洗衣的烦恼,想必很多人都有过类似的经历:贴身内衣要单独洗,宝宝的口水巾得小心呵护,宠物玩具怕藏污纳垢,床单被套又体积庞大,把这些东西混在一起洗担心越洗越脏,分开洗又得反复操作,洗完烘、烘完再洗...

爆料人挖出GTA6注册的奇葩域名 延续经典讽刺风格

等待《侠盗猎车手6》的日子跨越了数个春秋,在游戏圈期盼着这部可能成为史上最重磅游戏的过程中,每过一段时间就会有些许消息浮出水面。最新线索来自数据挖掘者Tez2在GTA论坛的发现,他可能偶然发现了关于...

跟着故事去旅行——读《驼峰间:旅行、探险与征服》

作者:郭冰茹《驼峰间》记录了旅行家伊本·白图泰有生之年流传的一则寓言,说一对父子被关进了监狱,有一天儿子问父亲他们每天吃的都是些什么肉,父亲说有牛、羊和骆驼,并且详细地描述了每种动物的特点。但不管父亲...

前端工程师需要熟悉的Linux服务器(SSH 终端操作)指令

在Linux服务器管理中,SSH(SecureShell)是远程操作的核心工具。以下是SSH终端操作的常用命令和技巧,涵盖连接、文件操作、系统管理等场景:一、SSH连接服务器1.基本连接...

跳票6年后,「丝之歌」首发把Steam服务器干爆了 | 玩点好的

文丨果脯樱花隧道昨天晚上22点,「鸽」了6年的《空洞骑士:丝之歌》终于上线,算是了却不少玩家的执念。毕竟,这款游戏实在让人等了太多太多年,而且曾有过多次定档后跳票的「案底」,不知道把多少人都整出了P...

对标魔兽失败!腾讯版“魔兽”运营一年多后,宣布国际服凉凉

大家好,这里是正惊游戏,我是正惊小弟。有很多游戏都想干掉《魔兽世界》,但是大部分魔兽杀手都知道自己不是魔兽的对手,不过是想蹭一下人气而已。腾讯也有一款曾经想对标魔兽的大作,可是上线才一年半国际服就宣布...

408 Request Timeout:服务器等待客户端发送请求的时间过长。

408RequestTimeout是HTTP状态码之一,表示客户端在发送请求时,服务器等待的时间过长,最终放弃了处理该请求。此问题通常与网络延迟、客户端配置、服务器设置或者应用程序的性能有关...

梦幻西游:9.9维护解读,全新时间服锁定129级

梦幻西游:9.9维护解读,全新时间服锁定129级9月9日维护解读。1、教师节活动开启,一共7天。挂机,答题,收笔墨纸砚,收海马,搞起来。或者是提前收点家具,教师节期间体力珍贵,家具会涨价。又或者是教师...

只是拆掉一面墙,空间就立马大变样,这种设计思路,值得学习

你有没有过这样的经历?刚买的房子户型图看起来方方正正,装修完却发现——玄关鞋柜只能塞在角落,进门就撞墙;餐厅正好在过道中间,吃饭像走流程;明明有四个房间,却有一个空着没用,像块食之无味的鸡肋;客餐厅之...

取消回复欢迎 发表评论: