开云-BPO行业整合方案提供者
专业化、科技化、国际化;高标准、广覆盖、全流程
了解更多新手都能看懂的 USB 通讯和谈 时候:2024-12-13 21:37:25 手机看文章
扫描二维码随时随地手机看文章
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位,最低三位作为微帧编号没有利用,是以其帧编号的增添周期也为 1mSUSB总线上的景象是如何的?
包是USB总线上数据传输的最小单元,不克不及被打断或干扰,不然会激发毛病。若干个数据包构成一次事务传输,一次事务传输也不克不及打断,属在一次事务传输的几个包必需持续,不克不及跨帧完成。一次传输由一次到屡次事务传输组成,可以跨帧完成。USB包由五部门构成,即同步字段(SYNC)、包标识符字段(PID)、数据字段、轮回冗余校验字段(CRC)和包结尾字段(EOP),包的根基格局以下图:
1.1 PID类型(即包类型)
1.2 Token Packets
此格局合用在IN、OUT、SETUP、PING。PID 数据传输标的目的IN Device- HostOUT Host- DeviceSETUP Host- DevicePING Device- Host 1.3 Start-of-Frame(SOF) Packets SOF包由Host发送给Device。
对full-speed总线,每隔1.00 ms ±0.0005 ms发送一次;
对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个阶段构成:成立阶段(Setup)
数据阶段(无数据节制没有此阶段)(DATA)
状况阶段(Status)
每一个阶段都由一次或屡次(数据阶段)事务传输构成(Transaction)。节制数据由USB系统软件用在设置装备摆设装备(在列举时),其它的驱动软件可以选择利用control transfer实现具体的功能,数据传输是不成丢掉的。 3.1.1 成立阶段 主机从USB装备获得设置装备摆设信息,并设置装备的设置装备摆设值。成立阶段的数据互换包括了SETUP令牌封包、紧随厥后的DATA0数据封包和ACK握手封包。它的感化是履行一个设置(概念迷糊)的数据互换,并界说此节制传输的内容(即:在Data Stage中IN或OUT的data包个数,和发送标的目的,在Setup Stage已被设定)。3.1.2 数据阶段 按照数据阶段的数据传输的标的目的,节制传输又可分为3种类型:
节制读取(读取USB描写符)
节制写入(设置装备摆设USB装备)
无数据节制
数据传输阶段:用来传输主机与装备之间的数据。节制读取
是将数据从装备读到主机上,读取的数据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事务):
token
data
handshake
For IN Token (即:IN Transaction)
ACK: 暗示host准确无误地领受到数据
NAK: 唆使装备临时不克不及返回或领受数据 (如:装备忙)
STALL:唆使装备永久住手,需要host软件的干涉干与 (如:装备犯错)
For OUT Token (即:OUT Transaction)
假如领受到的数据包有误,如:CRC毛病,Device不发送任何handshake包ACK: Device已准确无误地领受到数据包,且通知Host可以按挨次发送下一个数据包
NAK: Device 已准确无误地领受到数据包,且通知Host重传数据,因为Device姑且状态(如buffer满)
STALL: 唆使Device endpoint已住手,且通知Host不再重传
Bulk读写序列
即由一系统IN事务或OUT事务构成。3.3 中止传输(Interrupt Transfer)中止传输由IN或OUT事务构成。中止传输在流程上除不撑持PING 以外,其他的跟批量传输是一样的。他们之间的区分也仅在在事务传输产生的端点纷歧样、撑持的最年夜包长度纷歧样、优先级纷歧样等如许一些对用户来讲透明的工具。主机在排定中止传输使命时,会按照对应中止端点描写符中指定的查询距离倡议中止传输。中止传输有较高的优先级,仅次在同步传输。一样中止传输也采取PID翻转的机制来包管收发端数据同步。下图为中止传输的流程图。中止传输体例老是用在对装备的查询,以肯定是不是稀有据需要传输。是以中止传输的标的目的老是从USB装备到主机。
DATA0或DATA1中的包括的是中止信息,而不是中止数据。 3.4 同步传输(Isochronous Transfer)
它由两种包构成:
token
data
同步传输不撑持“handshake”和“重传能力”,所以它是不成靠传输。同步传输是不成靠的传输,所以它没有握手包,也不撑持PID翻转。主机在排定事务传输时,同步传输有最高的优先级。同步传输合用在必需以固定速度抵达或在指按时刻抵达,可以容忍偶然毛病的数据上。及时传输一般用在麦 克风、喇叭、UVC Camera等装备。及时传输只需令牌与数据两个信息包阶段,没有握手包,故数据传错时不会重传。
欲知详情,请下载word文档 下载文档