首页/文章/ 详情

新手都能看懂的 USB 通信协议

21分钟前浏览10
USB接口随处可见,手机、电脑、电视,以及各种电子产品充电口(虽然是USB-C,但它也是USB)都有USB的身影。

USB应用非常广泛,很多嵌入式设备也具有USB通信能力,这里给大家分享一下USB通信协议主要内容,新手都能看明白(当然,最好还是有一定通信协议基础才行)


   1、基本概念

一个【传输】(控制、批量、中断、等时):由多个【事务】组成;
一个【事务】(IN、OUT、SETUP):由一多个【Packet】组成。
USB数据在【主机软件】与【USB设备特定的端点】间被传输。【主机软件】与【USB设备特定的端点】间的关联叫做【pipes】。一个USB设备可以有多个管道(pipes)。

  2 、包(Packet)

包(Packet)是USB系统中信息传输的基本单元,所有数据都是经过打包后在总线上传输的。数据在 USB总线上的传输以包为单位,包只能在帧内传输。高速USB 总线的帧周期为125us,全速以及低速 USB 总线的帧周期为 1ms。帧的起始由一个特定的包(SOF 包)表示,帧尾为 EOF。EOF不是一个包,而是一种电平状态,EOF期间不允许有数据传输。
注意:虽然高速USB总线和全速/低速USB总线的帧周期不一样,但是SOF包中帧编号的增加速度是一样的,因为在高速USB系统中,SOF包中帧编号实际上取得是计数器的高11位,最低三位作为微帧编号没有使用,因此其帧编号的增加周期也为 1mS
  • USB总线上的情形是怎样的?

包是USB总线上数据传输的最小单位,不能被打断或干扰,否则会引发错误。若干个数据包组成一次事务传输,一次事务传输也不能打断,属于一次事务传输的几个包必须连续,不能跨帧完成。一次传输由一次到多次事务传输构成,可以跨帧完成。  
USB包由五部分组成,即同步字段(SYNC)、包标识符字段(PID)、数据字段、循环冗余校验字段(CRC)和包结尾字段(EOP),包的基本格式如下图:

1.1 PID类型(即包类型)


1.2 Token Packets

此格式适用于IN、OUT、SETUP、PING。  
PID 数据传输方向
IN Device->Host
OUT Host->Device
SETUP Host->Device
PING Device->Host

1.3 Start-of-Frame(SOF) Packets

SOF包由Host发送给Device。
  1. 对于full-speed总线,每隔1.00 ms ±0.0005 ms发送一次;

  2. 对于high-speed总线,每隔125 μs ±0.0625 μs发送一次;

SOF包构成如下图所示


1.4 Data Packets  

有四种类类型的数据包:DATA0, DATA1, DATA2,and MDATA,且由PID来区分。DATA0和DATA1被定义为支持数据切换同步(data toggle synchronization)。  

1.5 Handshake Packets

  • ACK: 对于IN事务,它将由host发出;对于OUT、SETUP和PING事务,它将由device发出。

  • NAK: 在数据阶段,对于IN事务,它将由device发出;在握手阶段,对于OUT和PING事务,它也将由device发出;host从不发送NAK包。

   2、事务(Transaction)

在USB上数据信息的一次接收或发送的处理过程称为事务处理(Transaction)即:The delivery of service to an endpoint。一个事务由一系统packet组成,具体由哪些packet组成,它取决于具体的事务。可能由如下包组成:
  • 一个token packet
  • 可选的data pcket
  • 可选的handshake packet
  • 可选的special packet

2.1 输入(IN)事务处理

输入事务处理:表示USB主机从总线上的某个USB设备接收一个数据包的过程。
  • 【正常】的输入事务处理

  • 【设备忙】时的输入事务处理

  • 【设备出错】时的输入事务处理

2.2. 输出(OUT)事务处理

输出事务处理:表示USB主机把一个数据包输出到总线上的某个USB设备接收的过程。
  • 【正常】的输出事务处理

  • 【设备忙时】的输出事务处理

  • 【设备出错】的输出事务处理

2.3 设置(SETUP)事务处理

  • 【正常】的设置事务处理

  • 【设备忙时】的设置事务处理

  • 【设备出错】的设置事务处理

   3、USB传输类型 

在USB的传输中,定义了4种传输类型:
  • 控制传输 (Control Transfer)

  • 中断传输 (Interrupt Transfer)

  • 批量传输 (Bulk Transfer)

  • 同步传输 (Isochronous)

3.1 控制传输 (Control Transfer)

控制传输由2~3个阶段组成:
  1. 建立阶段(Setup)

  2. 数据阶段(无数据控制没有此阶段)(DATA)

  3. 状态阶段(Status)

每个阶段都由一次或多次(数据阶段)事务传输组成(Transaction)。
控制数据由USB系统软件用于配置设备(在枚举时),其它的驱动软件可以选择使用control transfer实现具体的功能,数据传输是不可丢失的。

3.1.1 建立阶段

主机从USB设备获取配置信息,并设置设备的配置值。建立阶段的数据交换包含了SETUP令牌封包、紧随其后的DATA0数据封包以及ACK握手封包。它的作用是执行一个设置(概念含糊)的数据交换,并定义此控制传输的内容(即:在Data Stage中IN或OUT的data包个数,及发送方向,在Setup Stage已经被设定)。

3.1.2 数据阶段

根据数据阶段的数据传输的方向,控制传输又可分为3种类型:
  1. 控制读取(读取USB描述符)

  2. 控制写入(配置USB设备)

  3. 无数据控制

数据传输阶段:用来传输主机与设备之间的数据。
  • 控制读取

是将数据从设备读到主机上,读取的数据USB设备描述符。该过程如下图的【Control Read】所示。对每一个数据信息包而言,首先,主机会发送一个IN令牌信息包,表示要读数据进来。
然后,设备将数据通过DATA1/DATA0数据信息包回传给主机。最后,主机将以下列的方式加以响应:当数据已经正确接收时,主机送出ACK令牌信息包;当主机正在忙碌时,发出NAK握手信息包;当发生了错误时,主机发出STALL握手信息包。
  • 控制写入

是将数据从主机传到设备上,所传的数据即为对USB设备的配置信息,该过程如下的图【Control Wirte】所示。对每一个数据信息包而言,主机将会送出一个OUT令牌信息包,表示数据要送出去。紧接着,主机将数据通过DATA1/DATA0数据信息包传递至设备。
最后,设备将以下列方式加以响应:当数据已经正确接收时,设备送出ACK令牌信息包;当设备正在忙碌时,设备发出NAK握手信息包;当发生了错误时,设备发出STALL握手信息包。

3.1.3 状态阶段

状态阶段:用来表示整个传输的过程已完全结束。
状态阶段传输的方向必须与数据阶段的方向相反,即原来是IN令牌封包,这个阶段应为OUT令牌封包;反之,原来是OUT令牌封包,这个阶段应为IN令牌封包。
对于【控制读取】而言,主机会送出OUT令牌封包,其后再跟着0长度的DATA1封包。而此时,设备也会做出相对应的动作,送ACK握手封包、NAK握手封包或STALL握手封包。
相对地对于【控制写入】传输,主机会送出IN令牌封包,然后设备送出表示完成状态阶段的0长度的DATA1封包,主机再做出相对应的动作:送ACK握手封包、NAK握手封包或STALL握手封包。

3.2 批量传输 (Bulk Transfer)

用于传输大量数据,要求传输不能出错,但对时间没有要求,适用于打印机、存储设备等。
批量传输是可靠的传输,需要握手包来表明传输的结果。若数据量比较大,将采用多次批量事务传输来完成全部数据的传输,传输过程中数据包的PID 按照 DATA0-DATA1-DATA0-…的方式翻转,以保证发送端和接收端的同步。
USB 允许连续 3次以下的传输错误,会重试该传输,若成功则将错误次数计数器清零,否则累加该计数器。超过三次后,HOST 认为该端点功能错误(STALL),放弃该端点的传输任务。
一次批量传输(Transfer)由 1 次到多次批量事务传输(Transaction)组成。
翻转同步:发送端按照 DATA0-DATA1-DATA0-…的顺序发送数据包,只有成功的事务传输才会导致 PID 翻转,也就是说发送端只有在接收到 ACK 后才会翻转 PID,发送下一个数据包,否则会重试本次事务传输。同样,若在接收端发现接收到到的数据包不是按照此顺序翻转的,比如连续收到两个 DATA0,那么接收端认为第二个 DATA0 是前一个 DATA0 的重传。
它通过在硬件级执行“错误检测”和“重传”来确保host与device之间“准确无误”地传输数据,即可靠传输。它由三种包组成(即IN事务或OUT事务):
  1. token

  2. data

  3. handshake

  1. For IN Token (即:IN Transaction)

  • ACK: 表示host正确无误地接收到数据

  • NAK: 指示设备暂时不能返回或接收数据 (如:设备忙)

  • STALL:指示设备永远停止,需要host软件的干预 (如:设备出错)

  1. For OUT Token (即:OUT Transaction)

如果接收到的数据包有误,如:CRC错误,Device不发送任何handshake包
  • ACK: Device已经正确无误地接收到数据包,且通知Host可以按顺序发送下一个数据包

  • NAK: Device 已经正确无误地接收到数据包,且通知Host重传数据,由于Device临时状况(如buffer满)

  • STALL: 指示Device endpoint已经停止,且通知Host不再重传

  1. Bulk读写序列

即由一系统IN事务或OUT事务组成。
3.3 中断传输(Interrupt Transfer)
中断传输由IN或OUT事务组成。
中断传输在流程上除不支持PING 之外,其他的跟批量传输是一样的。他们之间的区别也仅在于事务传输发生的端点不一样、支持的最大包长度不一样、优先级不一样等这样一些对用户来说透明的东西。
主机在排定中断传输任务时,会根据对应中断端点描述符中指定的查询间隔发起中断传输。中断传输有较高的优先级,仅次于同步传输。
同样中断传输也采用PID翻转的机制来保证收发端数据同步。下图为中断传输的流程图。
中断传输方式总是用于对设备的查询,以确定是否有数据需要传输。因此中断传输的方向总是从USB设备到主机。

DATA0或DATA1中的包含的是中断信息,而不是中断数据。

3.4 同步传输(Isochronous Transfer)

  1. 它由两种包组成:

  2. token

  3. data

同步传输不支持“handshake”和“重传能力”,所以它是不可靠传输。
同步传输是不可靠的传输,所以它没有握手包,也不支持PID翻转。主机在排定事务传输时,同步传输有最高的优先级。
同步传输适用于必须以固定速率抵达或在指定时刻抵达,可以容忍偶尔错误的数据上。实时传输一般用于麦 克风、喇叭、UVC Camera等设备。实时传输只需令牌与数据两个信息包阶段,没有握手包,故数据传错时不会重传。



来源地址:  
https://blog.csdn.net/myarrow/article/details/8484113  

声明:


 
声明:文章来源网络,作者:Arrow。本号对所有原创、转载文章的陈述与观点均保持中立,推送文章仅供读者学习和交流。文章、图片等版权归原作者享有,如有侵权,联系删除。 

来源:硬件笔记本
ACT电路电子ANSA通信控制管道
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-11-21
最近编辑:21分钟前
硬件笔记本
本科 一点一滴,厚积薄发。
获赞 157粉丝 46文章 698课程 0
点赞
收藏
作者推荐

闷声干大事,稚晖君一口气发布5款人形机器人!

刚刚,“鸽”了一年的稚晖君,终于带着具身智能新品来填坑了!没有什么比抽奖抽一台,更能体现对产品的自信了。一上来,稚晖君也没藏着掖着,就在直播现场搭建的“摄影棚”里,机器人当场秀了一波在语音指令下动手调饮料的操作:△2倍速现场主持人,也由此番发布的远征A2机器人亲自担当。一套小连招下来,网友们be like:B站科技区流量担当,诚不我欺(手动狗头)。尽管发布会只有短短1小时不到,但稚晖君和他背后公司智元机器人憋了一年,此番属实带来不少干货,先给大家伙做个小总结:发布远征A2系列人形机器人全栈开源灵犀X1系列机器人,主打一个“人形机器人人人造”自研关节模组实现量产化迭代升级,灵巧手自由度升级至19个定义具身智能G1至G5演进路线……总之,可以说是秀产品力的同时,也把硬核DIY的科技情怀给拉满了。具体详情,咱们一项一项展开来唠~面向量产的人形机器人就像稚晖君自己所说,自去年8月中旬发布远征A1以来,他及他身后的智元机器人颇有些低调,在公众视野里可以说是“鸽”了一年。但其实这一年中,智元机器人一直在“闷声干大事”。智元机器人销售服务总经理姜青松对此补充说:我们每个月都在迭代,但因为不具备商用条件,所以没有宣传。而现在,面向商用,智元确实在这场发布会上,给出了阶段性的思考和答案。首先,在产品方面,远征A2系列机器人相较于前代,主打的就是一个“面向量产改进”。为此,智元此番发布了3款适用于不同场景的机器人:远征A2,身高一米七,体重140斤,是能双足行走的交互服务机器人。大模型加持下,具备流畅的讲解能力和稳定的运动功能。远征A2-W,轮式柔性智造机器人。一开场给稚晖君做饮料的就是它,具备动态任务编排、复杂作业执行,以及双臂协同作业等能力。远征A2-Max,重载特种机器人,能够搬动40kg以上的重物。该款机器人目前处于产品研发阶段。具体到技术细节上,智源机器人将机器人系统划分为动力域、感知域、通信域和控制域。动力域方面,智元自研的PowerFlow关节模组实现量产化迭代升级。其中最强型号额定扭矩达到270Nm,峰值扭矩达到512Nm。稚晖君表示,PowerFlow此番提升,主要是可靠性和稳定性达到量产级别。在现场,他也透露这款关节模组将开启对外售卖。此外,机器人灵巧手的自由度也升级至19个,其中主动自由度达到12个,并引入了基于MEMS原理的触觉感知和视触觉感知技术。使用工具拧螺丝:拆快递:干点穿针引线的精细活,都不在话下:感知域方面,远征A2系列集成了RGBD相机、激光雷达、全景相机等传感器,引入自动驾驶Occupancy感知方案,通过SLAM算法进一步提升环境理解能力。通信域方面,智元自研了专为具身智能打造的轻量化、高性能通信框架AimRT。相比ROS等第三方中间件,在性能、稳定性、系统部署效率和灵活性均有提升的同时,兼容了ROS/ROS2已有生态。AimRT还将于9月底开源。控制域方面,结合Model-based和Learning-based两种算法,智元进一步提升了机器人的运动控制和适应能力。并预研了基于自然语言指令集驱动的、可以适配不同机器人本体的AgentOS,基于强化学习,实现机器人技能的精准编排和高效执行。另外,智元还构建了面向开放生态的软件平台AIMA(AI Machine Architecture),覆盖机上、云端和客户端。该平台集成了机器人软件的核心技术,同时提供丰富的二次开发接口。具身智能技术演进路线值得关注的是,配合自家商用化进程,智元此番还提出了类似自动驾驶L1-L5的具身智能技术演进路线:G1至G5(其中“G”指通用人工智能)。其中,G1为传统自动化阶段,机器人基于大量人工编排执行任务,辅以简单视觉,基本不具备泛化能力。G2阶段,有了大模型的加持,机器人开始实现一大类场景的快速迁移。方法是,针对大量不同场景任务,提炼出可复用的原子能力,且以相对通用的方式实现这些能力。过去一年,智元机器人在G2路线取得了阶段性突破,实现了通用的:位姿估计模型UniPose、抓取模型UniGrasp,力控插拔模型UniPlug等一系列zero-shot和few-shot的通用原子技能。不过嘛,以上阶段都还采用了大量手工编排。到了G3端到端阶段,机器人训练从算法驱动变成数据驱动。此时,由手工设计各类原子能力变为依靠大量数据采集。这一阶段的目标是,形成一套通用技能训练框架。比如发布会反复提到的“PPT能力”,即抓、放、递……稚晖君特意提醒,当前实验表明,端到端是一条具备Scale up潜力的路线。在G3基础上,G4主要实现通用操作大模型。举个例子,比如对于开瓶子、开门把手这两个动作,G3阶段还需要单独采集数据,以训练不同的技能。但对人类来说,其实动作的底层逻辑是相通的。因此,G4引入了大量跨场景的真实、仿真数据,再加上时间模型等类似技术,让AI理解背后物理原理,从而执行更加复杂的任务。至于最后的终极目标:AGI。对具身智能来说,主要还是能够走出实验室,在开放场景具备跨任务的泛化能力。从G1到G5,一个显著趋势是:数据需求不断上涨。姜青松透露,目前智元已经迈向G3阶段。在G3路线上,智元机器人还形成了一套具身数据方案AIDEA。这是因为,“有多少人工就有多少智能,在具身智能领域依然成立”。也就是说,高质量的人机操作数据非常关键。具体来说,AIDEA包括数采本体、遥操设备和数据平台。数采本体也就是轮式、足式等类型丰富、可靠稳定的机器人。遥操设备支持全身映射、臂手协同和高精实时。数据平台覆盖数据采集、数据标注、数据管理、模型训练、模型评测、模型部署再到数据回传的全链路,支持SaaS服务和私有化部署。彩蛋是,基于AIDEA的百万条真机、千万条仿真数据,同样开源。今年四季度,感兴趣的小伙伴可以蹲起来了~“人形机器人人人造”以为介绍完远征系列,智元机器人一年一度亮活大会就结束了吗?并不!稚晖君一声令下,远征A2-W缓缓推上来了一个没它高的神秘黑箱。有点眼熟,好像是直播最开始,稚晖君指挥A2-Max搬走的那玩意儿:里面的东西破箱而出,是智元推出的另一款机器人。灵犀X1。诞生于智元X-Lab实验室(也可以简单理解为智元内部的稚晖君实验室),是智元机器人专门面向极致创新和敏捷探索而设立的。今年6月立项,10个人组团投入其中,不到半个月前刚刚正式降生。视频录像显示,灵犀X1身经百摔:现在已经能做到被大力推攘也不会摔倒了。△来人啊,这里有人霸凌具身小机器人(不是)灵犀X1身高1.3米,体重小于33kg——比起远征系列,灵犀系列看起来更小巧玲珑;它的最大行走速度高于2米/秒,单臂负载大于3kg。据介绍,灵犀X1全身上下都由两款自研PowerFlow关节搭建成,分别命名为PF86和PF52。这两款PowerFlow对外销售。此外,灵犀X1还具备中空走线、输出端绝对值编码、支持PF-Link智能接口等众多功能。它融入了模块化设计理念,可以通过简单抱箍形式轻松拆装,尤其是它的两只“手”。要知道,灵犀X1的标配是智元X-Lab自研的两个“带前馈力控、超低成本”的自适应通用夹爪。自适应抓握,仅1个主动自由度。但泛化性很强,抓啥都行。甚至是桌面上平躺着的一根针,也能稳稳夹起来。但灵犀X1的执行器不仅可以是自适应通用夹爪,也可以是百元级成本的六维力传感器,满足不同场景需求的那种。有点意思的是,灵犀X1可以开启“机机模式”。简单来说,就是打开灵犀X1的脑子(里面本来是空的),把手机装进去,用性价比更高、功能更丰富、算力更强、普及率更广的手机,来当它的脑子。然后大家就能看到以下这个又好笑又有点诡异的对话画面:此外,灵犀系列还有款机器人:专业数采机器人X1-W。和远征系列的A2-W一样,它们都是轮式,然后上半身可上下升降。不过与采训推一体机器人A2-W相比,X1-W价格更低,适用于只做真实数据采集,服务预训练阶段;而A2-W可服务采集、训练、推理多个流程,不仅对预训练有用,对fine tuning也有用。不同的应用场景可选用不同的机器人进行采集,搭配满足全栈数据采集需求。最后就是大家都很关心的价格了。“友商都很卷,我们不参与价格战。”说完这句话,稚晖君按下手中的PPT遥控器,屏幕上出现了灵犀X1的价格——0元。他表示,除自研关节外,灵犀X1的本体设计图纸、软件框架、中间件源码、基础运控算法,统统即将开源。主打的就是一个“人形机器人人人造”。稚晖君也现场给他的X-Lab打了波招聘广告,“欢迎有想法的年轻人加入智元,加入X-Lab”。One More Thing最后,咱再来简单正式介绍一下智元机器人(AgiBot)。它成立于2023年2月,致力于AI+机器人的融合创新,以及打造具身智能机器人产品和应用生态。创始团队包括稚晖君(彭志辉),电子科大毕业后,先后在OPPO研究院、华为工作(以华为天才少年身份入职)。同时,他也是B站up主,自称野生钢铁侠。同为创始人的,还有上海人工智能研究院智慧康养首席科学家、上海交通大学机械与动力工程学院教授闫维新。去年8月,智元机器人推出首款产品:通用型具身智能机器人原型机,远征系列的A1。今天,属于是智元机器人第二次大张旗鼓地对外展示研发和产品进展。截止到目前,智元机器人已完成了A4轮等多轮融资。智元官方还透露:今年,智元机器人预估发货量达到300台左右,其中双足200台左右,轮式100台左右。声明: 声明:本号对所有原创、转载文章的陈述与观点均保持中立,推送文章仅供读者学习和交流。文章、图片等版权归原作者享有,如有侵权,联系删除。 来源:硬件笔记本

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈