usb通信协议,中文
篇一:USB通信协议源代码
做了一段时间的USB方面的开发,虽然是现成的
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
,我们只需要搞清楚它的架构,再添加我们的代码就行了。空闲之余,研究了一下USB通信过程,也把82A851R部分的汇编代码重新用C语言描述了一篇(仅是描述,不代表能真正运行)。发现汇编代码条理性太在太差了,不好读。一把C语言的代码一写,马上觉得清楚很多。废话少说,开始贴图,贴代码。
,,,,,,,,,,,,,,,,下面是将一些函数重新用C语言描述了一遍,,,,,,,,,,,,
#define BYTE unsigned char
//**************************************************
// 基本定义函数
//**************************************************
BYTE FIFO_RD_CHECK(BYTE num)
{
1
BYTE FIFO_FLAG=0;
UCC|=num;//选择Endpoint,0,1,2,3,4,
MISC&=0xf8;//低3位置0
MISC|=0X00;//TX位置0;
Delay_3us();
MISC|=0X01;//Set Request
Delay_28us();
if(MISC&0X40!=0) FIFO_FLAG=0x0f;//READY
if(MISC&0x80!=0) FIF0_FLAG&=0xf0;//Len0
Detected
MISC&=0xfe;//clear REQ
return FIFO_FLAG;
}
BYTE FIFO_WR_CHECK(BYTE num)
{
BYTE FIFO_FLAG=0;//后4位表示Ready位,前四位表示Len0位的状态是否有被设置 UCC|=num;//选择Endpoint,0,1,2,3,4,
MISC&=0xf8;//低3位置0
MISC|=0X02;//TX位置0;
Delay_3us();
MISC|=0X01;//Set Request
2
Delay_28us();
if(MISC&0X40!=0) FIFO_FLAG=0x0f;//READY
if(MISC&0x80!=0) FIF0_FLAG&=0xf0;//Len0
Detected
MISC&=0xfe;//clear REQ
return FIFO_FLAG;
}
void Read_FIFO(BYTE *Fifo_Addr,BYTE Fifo_Size,BYTE *buffer)
{
int i=0;
MISC|=0x01;//Set Request
for(i=0;i<Fifo_Size;i++)
{
buffer[i]=Fifo_Addr[0];//从FIFO地址取值
Delay_28us();
if(MISC&0x40==0) break;//Not Ready
}
MISC–0X02;//改变TX位状态
Delay_3us();
MISC&=0XFE;//Clear Request
}
3
void Write_FIFO(BYTE *Fifo_Addr,BYTE SendLenth,BYTE *buffer)
{
int i=0;
MISC|=0X01;//Set Request
for(i=0;i<SendLenth;i++)
{
Fifo_Addr[0]=buffer[i];//将要发送的数据放至相应的Fifo
中
Delay_28us();
if(MISC&0x40==0) break;//Not Ready
}
MISC–0X02;//改变TX位状态
Delay_3us();
MISC&=0XFE;//Clear Request
}
BOOL Check_Real_Cmd()
{
BYTE bFlag_Real_Cmd=FALSE;
if(MISC&0X20!=0) bFlag_Real_Cmd=TRUE;
if(MISC&0X80!=0) bFlag_Real_Cmd=TRUE;
return bFlag_Real_Cmd;
4
}
void Send_hand()
{
BOOL IsRealCmd,Status_Flag;
while(1)
{
IsRealCmd=Check_Real_Cmd();
if(IsRealCmd==TRUE)
return;
else
{
Status_Flag=FIFO_WR_CHECK(0);
if(Status_Flag&0x0f!=0)//Fifo_Ready
break;
else
continue;
}
}
MISC|=0x01;//Set Requset
MISC–0X02;//改变TX位状态
Delay_3us();
MISC&=0XFE;//Clear Request
5
}
void control_read(WORD *rom_dataptr,BYTE
*buffer)//从中读取数据,
{//rom_dataptr是全局的在其他函数中赋值改变 BYTE temp,i=0;
if(buffer[7]!=0) //FIFO_WLENGTHH
return;
if(buffer[6]==0) //FIFO_WLENGTHL
return;
if(buffer[6]data_start[0])//请求的数据超出ROM数据
return;
data_count=buffer[6];
if(MISC&0x40!=0)//是控制指令
return;
if(data_count==0)
{
Send_Hand_Shake();
return;
}
//开始真正的control_read
while(1)
{
6
if(bFlag_RD_HTable==0)//Read Low Byte
{
bFlag_RD_HTable=1;
buffer[i]=(BYTE )*rom_dataptr;//取其低位
i++;
data_count--;//全局变量,要发送的总长度
if(data_count<=1)
break;
if(i+1==8)//FIFO_size=8
break;
}
else//Read Hight Byte
{
bFlag_RD_HTable=0;
buffer[i]=(BYTE )(*rom_dataptr)8;//取其高位
rom_dataptr++;//将ROM指针前移
if(buffer[i]==0x3f)
continue;
else
{
i++;
if(data_count<=1)
7
break;
if(i+1==8)
break;
}
}
}//填充完毕,结束循环,开始向FIFO发送数据
while(1)
{
if(Check_Real_Cmd()==TRUE) return;
if(FIFO_WR_CHECK(0)&0xff==0) continue;//Not
Ready
}
Write_FIFO(Fifo_0_Addr,0x02,buffer);
}
//**************************************************
//SetAddress(): 重新设定Endpoint地址函数
//**************************************************
void SetAddress(BYTE *buffer)
{
BYTE Dev_Addr;
8
Dev_Addr=buffer[2]//FIFO_OUT3,FIFO_WVALUEL
SIES|=0x01;//主机从设备读操作后将更新在AWR中的地
址,否则为0则立即更新 Dev_Addr&=0XFE;
USB_AWR=Dev_Addr;
Send_Hand_Shake();
}
//**************************************************
//SetConfiguration(): 设置配置函数
//**************************************************
void SetConfiguration(BYTE *buffer,BYTE *USB_Configuration)
{
USVC|=0x80;
PGA_CTRL|=0x80;
*USB_Configuration=buffer[2];//FIFO_WVALUEL
STALL&=0x00;//设置好以上的寄存器
Send_Hand_Shake();
}
//**************************************************
9
//ClearFeature(): 清徐Feature函数
//**************************************************
void ClearFeature(BYTE *buffer)
{
BYTE temp;
temp=buffer[2];//FIFO_wValueL
if(temp=0x01)
篇二:USB通讯协议通用规范
鸿合白板硬件设计通用规范
目录
工贸企业有限空间作业目录特种设备作业人员作业种类与目录特种设备作业人员目录1类医疗器械目录高值医用耗材参考目录
一、 现状和需要解决的问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
.................................................................................................
.. 2
二、 方案设
想 .................................................................................................
.......................... 2
三、 白板硬件和驱动程序之间的消息类
型 ........................................................................... 5
四、 HID白板硬件设计规范(一体
式) ................................................................................ 6
HID白板的VID/PID规
10
范: ..................................................................................................... 7
HID免驱模式下的协议规范(端口1):协议集
H0 ............................................................. 7
HID自定义端口的协议规范(端口2):协议集
H1 ............................................................. 9
1. 白板握手
包 ............................................................................................................... 9
2. 白板握手返回
包 ....................................................................................................... 9
3. 工作模式控制
包 ....................................................................................................... 9
4. 工作模式控制包回
复 ............................................................................................. 10
5. 心跳
包 ..................................................................................................................... 10
6. 操作数据类命
11
令 ..................................................................................................... 10
7. Flash类命
令 ........................................................................................................... 12
8. 固件升级类命
令 ..................................................................................................... 16
9. 专用测试类指
令 ..................................................................................................... 16
协议集H1指令汇
总 ...................................................................................................... 17
五、 分离模式下,主控板硬件设计规
范 ............................................................................. 19
六、 分离模式下,HID接口板硬件设计规
范 ...................................................................... 21
七、 分离模式下,无线接口板硬件设计规
范 ..................................................................... 23
无线专用协议集汇
总 .................................................................................................
12
.... 24
八、 分离模式下,网络接口板硬件设计规
范 ..................................................................... 27
九、 分离模式下,主控板和各种接口板之间的通用协议
规范(协议集H2) ................ 28
1. 白板握手
包 ............................................................................................................. 28
2. 白板握手返回
包 ..................................................................................................... 28
3. 心跳
包 ..................................................................................................................... 28
4. 操作数据类命
令 ..................................................................................................... 29
5. Flash类命
令 ........................................................................................................... 30
6. 固件升级类命
令 .................................................................................................
13
.... 30
7. 专用测试类指
令 .................................................................................................
.... 30
协议集H2指令汇
总: .............................................................................................
..... 31
十、 后续驱动程序和白板主控板需要支持的协
议 ............................................................. 33
鸿合研究院 – 技术研发中心
2012/03/09 V1.0 2012/04/13 V2.0
一、 现状和需要解决的问题
1、 目前我们自研的白板,共有红外(可能有多种方案)、电磁、压感、光学4种;
2、 这些白板中,目前以及后续可能支持的接口方式有:USB、串口、HID、无线连接、
网络连接。对于每种接口方式,不同的白板都需要实现一遍,带来很多重复的开发,同时既有产品,也不便于更换接口方式。
3、 每种白板,不同的尺寸、型号以及微小变化,可能都会有一些特定的内置参数。
4、 这些白板的尺寸和快捷按键的设置,也各不相同。
14
5、 并不是所有的白板都支持序列号、快捷按键信息的自动获取、定位信息的保存等特
性,给用户的使用带来了混乱。
6、 上述这些变化,对于固件程序的维护、驱动程序的维护、生产备料、售后维护等等
方面,都会带来很大的困扰。
吸取我们目前设计HID白板的经验,对于后续白板的硬件设计,非常有必要进行一个规范化的要求。在此规范化的框架之下,接口方式的变化、白板内置参数的调整、快捷按键的设置、白板序列号、固件自动升级、定位信息的自动保存等等问题,将会有一个统一的
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
。
已经出货以及在产的白板先不考虑,本规范适用于未来鸿合白板的硬件设计。
二、 方案设想
关于接口方式的
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
:
未来的白板,将只支持三种接口方式:
1、 有线HID
2、 无线连接(串口)
3、 网络连接(IP)
这三种接口方式,通过通用的接口板去实现。更换接口方式,主控板不用变化,只需更换不同的接口板即可。这些接口板和白板类型无关,是通用接口板。主控板可以内置在
15
板体中,也可以外置。接口板外置在板体之外,便于更换。两者之间通过一个标准的短连接线连接。主控板只负责白板逻辑的处理,所有和接口相关的处理都放在接口板上(HID的处理、无线的处理、网络的处理等)。
关于内置Flash的标准:
在主控板上,内置Flash,用于存放各种内置参数、快捷按键的设置、白板序列号、白板定位信息等等内容,通过统一的协议进行写入和读取。
在这种框架下,驱动程序只需要和三种接口板打交道;不管什么接口,获取的信息都是相同的:白板类型、快捷按键的设置、固件版本号、产品序列号、定位信息的保存等等,都可以在所有的产品、所有的接口方式上实现,对于产品的标准化管理非常有利。
三种接口板一旦调试稳定,则可以适用到各种白板上,不用重复开发;
主控板的开发也单纯很多,不用考虑各种接口的问题,只针对鸿合内部的通讯协议即可。同一种类型的白板,不管型号、大小、快捷按键的配置等是否相同,主控板本身都是相同的。所有配置信息(包括序列号等)都存放在主控板中,生产时根据不同的型号写入不同的信息。
特别说明:复合白板的结构。
复合白板是一种很特殊的白板,同时集成了电磁和红外
16
两种技术,用户可以同时使用手指和电磁笔进行操作,在高层软件一端,手指操作和电磁笔操作,可以执行不同的功能。
三、 白板硬件和驱动程序之间的消息类型
如果不考虑无驱HID工作模式,则在有驱工作模式下,白板和驱动程序之间需要传递的消息,根据我们以往的经验,总共有如下的消息:
1、 和具体接口相关的控制指令(比如无线专用类控制指令、HID握手指令等)
2、 白板握手类指令(*,带星号的指令是必须支持的指令)
3、 心跳类指令(*)
4、 操作数据上行(要考虑多点数据)(*)
5、 笔托类指令
6、 硬按键类指令
7、 Flash类指令(各种配置信息、定位信息的自动保存等等)(*)
8、 固件升级类指令
9、 各种专用测试类指令
每个白板,不一定要支持全部的指令,但是需要支持其中的主要部分(带星号的指令必须支持),而且,必须按照统一的指令格式,即本文档规定的格式。后续如果有扩充,则对本文档进行扩充和完善。
17
篇三:USB的HID通信协议
USB事务处理是主机和设备之间数据传输的基本单位,由一系列具有特定格式的信息包组成。因此,要了解完整的USB通信协议,必须从USB的信息传输单元包及其数据域谈起。通过由下而上,从简单至复杂的通信协议单位组成各种复杂的通信协议,进而构建出完整的通信协议。
16.4.1 包
包(Packet)是USB系统中信息传输的基本单元,所有数据都是经过打包后在总线上传输的。首先了解一下包的组成。
USB包由五部分组成,即同步(SYNC)字段、包标识符(PID)字段、数据字段、循环冗余校验(CRC)字段和包结尾(EOP)字段,包的基本格式如下:
同步字段(SYNC) PID字段 数据字段 CRC字段 包结尾字段(EOP)
在USB的数据传输中,所有的传输包都起始于SYNC,接着是PID,后面是包中所包含的数据信息,接下来是用来检测包中数据错误的循环冗余校验信息,最后以包结尾作为结束标志。下面我们将一一介绍每个字段。
1(同步(SYNC)字段
SYNC字段由8位组成,作为每个数据信息包的前导。顾名思义,它是用来产生同步作用的,目的是使USB设备与
18
总线的包传输率同步,它的数值固定为00000001。
2(包标识符(PID)字段
PID字段是紧随在SYNC字段后面,用来表示数据信息包的类型。在USB协议中,根据PID的不同,USB包有着不同的类型,分别表示具有特定的意义。如下所示:
PID0 PID1 PID2 PID3
包标识符长度为一个字节(8个数据位),由4个位的包类型字段和4个位的校验字段构成。PID是USB包类型的唯一标志,USB主机和USB设备在接收到包后,必须首先对包标识符解码得到包的类型,并判断其意义从而做出下一个反应。包标识符中的校验字段是通过对类型字段的每个位求反码产生的,它是用来对包类型字段进行错误检测用的,旨在保证对包的标识符译码的可靠性,如果4个检验位不是它们各自的类型位的反码,则说明标识符中的信息有错误。
表16-2中列出了信息包的类型,包括令牌、数据、握手或特殊四种信息包类型。为简化对USB的认识,有关高速传输的部分没有在表中列出。
3(数据字段
在USB包中,数据字段是用来携带主机与设备之间要传递的信息,其内容和长度根据包标识符、传输类型的不同而各不相同。并非所有的USB包都必须有数据字段,例如握手包、专用包和SOF令牌包就没有数据字段。在USB包中,
19
数据字段可以包含设备地址、端点号、帧序列号以及数据等内容。在总线传输中,总是首先传输字节的最低位,最后传输字节的最高位。
(1) 设备地址(ADDR)数据域
ADDR数据域由7位组成,可用来寻址多达127个外围设备。
(2) 端点(ENDP)数据域
ENDP数据域由4位组成。通过这4个位最多可寻址出32个端点。这个ENDP数据域仅用
在IN、OUT与SETUP令牌信息包中。对于慢速设备可支持端点0以及端点1作为中断传输模式,而全速设备则可以拥有16个输入端点(IN)与16个输出端点(OUT)共32个端点。
(3) 帧序列号
当USB令牌包的PID为SOF时,其数据字段必须为11位的帧序列号。帧序列号由主机产生,且每个数据帧自动加一,最大数值为0x7FF。当帧序列号达到最大数时将自动从0开始循环。
(4) 数据
它仅存于DATA信息包内,根据不同的传输类型,拥有不同的字节大小,从0到1023字节(实时传输)。
4(循环冗余校验(CRC)字段
20
根据不同的信息包类型,CRC数据域由不同数目的位所组成。其中重要的数据信息包采用CRC16的数据域(16个位),而其余的信息包类型则采用CRC5的数据域(5个位)。其中的循环冗余码校验CRC,是一种错误检测技术。由于数据在传输时,有时候会发生错误,因此CRC可根据数据算出一个校验值,然后依此判断数据的正确性。
5(包结尾(EOP)字段
包的发送方在包的结尾发出包结尾信号。它表现为差分线路的两根数据线保持2比特低位时间和1比特空闲位时间。USB主机根据EOP判断数据包的结束。
16.4.2 信息包格式
根据信息包所实现的功能,其可以分为3种类型:令牌包、数据包和握手包。其中,令牌包定义了数据传输的类型,数据包中含有需要传输的数据,握手包指明了数据接收是否成功。
1(令牌(token)包
在USB系统中,只有主机才能发出令牌包。令牌包定义了数据传输的类型,它是事务处理的第一阶段。令牌包格式如下:
8位 8位 7位 4位 5位
SYNC PID
ADDR ENDP CRC5
21
令牌包中较为重要的是SETUP、IN和OUT这三个令牌包。它们用来在根集线器和设备端点之间建立数据传输。一个IN包用来建立一个从设备到根集线器的数据传送,一个OUT包用来建立从根集线器到设备的数据传输。IN包和OUT包可以对任何设备上的任何端点编址。一个SETUP包是一个OUT包的特殊情形,它是“高优先级的”,也就是说设备必须接受它,即使设备正在进行数据传输操作的过程中也要对其进行响应。SETUP包总是指向端点0的。
2(数据(data)包
一个数据信息包包含了4个数据域:SYNC、PID、DATA与CRC16。在这里要注意的是DATA数据域内所放置的位值,需根据USB设备的传输速度(慢速、高速与全速)以及传输类型(中断传输、批量传输、等时传输)而定,且须以8字节为基本单位。也就是,若传输的数据不足8字节,或传输到最后所剩余的也不足8字节,仍须传输8字节的数据域。格式如下:
8位 8位 0~1023字节 16位
SYNC PID
DATA CRC16
3(握手(Handshake)包
握手信息包是最简单的信息包类型。在这个握手信息包中仅包含一个PID数据域而已,它的格式如下所列:
22
8位 8位
SYNC PID
其中仅包含SYNC与PID两个数据域。
16.4.3 事务
在USB上数据信息的一次接收或发送的处理过程称为事务处理(Transaction)。事务处理的类型包括输入(IN)事务处理、输出(OUT)事务处理、设置(SETUP)事务处理和帧开始、帧结尾等类型。在输出(OUT)事务处理和设置(SETUP)事务处理中,紧接着SETUP和OUT包后的是DATA包,DATA0和DATA1包是交替地发送的,在DATA包后面,设备将回应一个握手信号,如果设备可以接收数据,就回应ACK包,如果设备忙,就回应NAK包,如果设备出错,则回应STALL包;在IN事务中,IN包后面是设备发来的DATA包或NAK包或STALL包,若设备忙或出错,就发NAK包或STALL包给主机,若设备数据准备好发送,则发DATA包,DATA0和DATA1包也是交替地发送的,紧接着DATA包后面是主机发给设备的握手包,ACK表示主机可以接收数据,NAK包代表主机忙,STALL包代表主机出错。下面我们再分别介绍这些事务。
1(输入(IN)事务处理
输入事务处理表示USB主机从总线上的某个USB设备接收一个数据包的过程,接下来分析输入事务处理的各种典型
23
情况:
(1) 正常的输入事务处理
1(主机-设备(令牌信息包) SYNC IN ADDR ENDP CRC5
2(设备-主机(数据信息包) SYNC DATA0 DATA CRC16
3(主机-设备(握手信息包) SYNC ACK
(2) 设备忙时的输入事务处理
1(主机-设备(令牌信息包) SYNC IN ADDR ENDP CRC5
2(设备-主机(握手信息包) SYNC NAK
(3) 设备出错时的输入事务处理
1(主机-设备(令牌信息包) SYNC IN ADDR ENDP CRC5
2(设备-主机(握手信息包) SYNC STALL
2(输出(OUT)事务处理
(1) 正常的输出事务处理
1(主机-设备(令牌信息包) SYNC OUT ADDR ENDP CRC5
2(主机-设备(数据信息包) SYNC DATA0 DATA CRC16
3(设备-主机(握手信息包) SYNC ACK
(2) 设备忙时的输出事务处理
1(主机-设备(令牌信息包) SYNC OUT ADDR ENDP CRC5
2(主机-设备(数据信息包) SYNC DATA0 DATA CRC16
3(设备-主机(握手信息包) SYNC NAK
24
(3) 设备出错时的输出事务处理
1(主机-设备(令牌信息包) SYNC OUT ADDR ENDP CRC5
2(主机-设备(数据信息包) SYNC DATA0 DATA CRC16
3(设备-主机(握手信息包) SYNC STALL
3(设置(SETUP)事务处理
(1) 正常的设置事务处理
1(主机-设备(令牌信息包) SYNC SETUP ADDR ENDP CRC5
2(主机-设备(数据信息包) SYNC DATA0 DATA CRC16
3(设备-主机(握手信息包) SYNC ACK
(2) 设备忙时的设置事务处理
1(主机-设备(令牌信息包) SYNC SETUP ADDR ENDP CRC5
2(主机-设备(数据信息包) SYNC DATA0 DATA CRC16
3(设备-主机(握手信息包) SYNC NAK
(3) 设备出错时的设置事务处理
1(主机-设备(令牌信息包) SYNC SETUP ADDR ENDP CRC5
2(主机-设备(数据信息包) SYNC DATA0 DATA CRC16
3(设备-主机(握手信息包) SYNC STALL
16.4.4 USB传输类型
25
在USB的传输中,制定了4种传输类型:控制传输、中断传输、批量传输以及实时传输。这里只详细介绍控制传输,其他传输类型只作简要说明。
1(控制传输
控制传输是USB传输中最重要的传输,唯有正确地执行完控制传输,才能进一步正确地执行其他传输模式。
由于每个USB设备可能速度、传输的包的大小等信息有可能不同,因此每个USB设备内部都记录着该设备的一些信息(也就是接下来将要介绍的设备描述符),当在主机上检测到USB设备时,系统软件必须读取设备描述符,以确定该设备的类型和操作特性,以及对该设备进行相应的配置,这些工作都是通过控制传输来完成。每个USB设备都必须实现一个缺省的控制端点,该端点总是0号端点。
控制传输类型分为2,3个阶段:设置阶段、数据阶段(无数据控制没有此阶段)以及状态阶段。根据数据阶段的数据传输的方向,控制传输又可分为3种类型:控制读取(读取USB描述符)、控制写入(配置USB设备)以及无数据控制。以下介绍各阶段的工作。
阶段一:设置阶段
USB设备在正常使用之前,必须先配置,本阶段由主机将信息传送给USB设备,定义对USB设备的请求信息(如:读设备描述符)。主机一般会从USB设备获取配置信息后再
26
确定此设备有哪些功能。作为配置的一部分,主机会设置设备的配置值。我们统称这一阶段为设置阶段。
设置阶段由设置事务完成,也就是该阶段包含了SETUP令牌信息包、紧随其后的DATA0
数据信息包(该信息包里的数据即为设备请求,本章将后续介绍)以及ACK握手信息包。它的作用是执行一个设置的数据交换,并定义此控制传输的内容。
阶段二:数据传输阶段
数据传输阶段是用来传输主机与设备之间的数据。
控制读取是将数据从设备读到主机上,读取的数据USB设备描述符。该过程如图16-8所示。对每一个数据信息包而言,首先,主机会发送一个IN令牌信息包,表示要读数据进来。然后,设备将数据通过DATA1数据信息包回传给主机。最后,主机将以下列的方式加以响应:当
数据已经正确接收时,主机送出ACK令牌信息包;当主机正在忙碌时,发出NAK握手信息包;当发生了错误时,主机发出STALL握手信息包。
控制写入则是将数据从主机传到设备上,所传的数据即为对USB设备的配置信息,该过程如图16-9所示。对每一个数据信息包而言,主机将会送出一个OUT令牌信息包,表示数据要送出去。紧接着,主机将数据通过DATA0数据信息包传递至设备。最后,设备将以下列方式加以响应:当
27
数据已经正确接收时,设备送出ACK令牌信息包;当设备正在忙碌时,设备发出NAK握手信息包;当发生了错误时,设备发出STALL握手信息包。
阶段三:状态阶段
状态阶段用来表示整个传输的过程已经完全结束了。请注意,状态阶段传输的方向必须与数据阶段的方向相反。即原来是IN令牌信息包,这个阶段应为OUT令牌信息包;反之,原来是OUT令牌信息包,这个阶段应为IN令牌信息包。对于控制读取而言,主机会送出OUT令牌信息包,其后再跟着0长度的DATA1信息包。而此时,设备也会做出相对应的动作,送ACK握手信息包、NAK握手信息包或STALL握手信息包。相对地对于控制写入传输,主机会送出IN令牌信息包,然后设备送出表示完成状态阶段的0长度的DATA1信息包,主机再做出相对应的动作:送ACK握手信息包、NAK握手信息包或STALL握手信息包。
2(实时传输
实时传输适用于必须以固定速率抵达或在指定时刻抵达,可以容忍偶尔错误的数据上。实时传输一般用于麦克风、喇叭等设备。
实时传输只需令牌与数据两个信息包阶段,没有握手包,故数据传错时不会重传。
3(批量传输
28
用于传输大量数据,要求传输不能出错,但对时间没有要求,适用于打印机、存储设备等。
4(中断传输
相关热词搜索:中文 通信协议 usb usb协议中文版 usb2.0通信协议
29