1 、接口类型
低速(1.5Mbps):常应用于键盘、鼠标等外设,在USB1.0和USB1.1版本只支持此速率
全速(12Mbps):应用于音频等,在stm32f105-stm32f107,以及stm32f2x支持全速模式
高速(480Mbps):应用视频大容量设备、stm32f2x和stm32f4x等系列支持高速
2、 物理特性
a) USB使用差分传输模式,两根数据线D+和D-。
差分信号1:D+ 》 2.8v&&D- 《 0.3v,
差分信号0:D+ 《 0.3v&&D- 》 2.8v;
复位信号 :D+&&D- 《 0.3v for 10ms;
J状态(信号序列皆以J开始):编码输出的低电平
K状态:J状态的反状态。
b) USB设备的插入检测和速度检测
没有数据连上主机时,D+和D-数据线上的下拉电阻起作用,使得二者都在低电平;
设备连上主机时,当主机检测到某一数据线电平被拉高并保持了一段时间,就认为有设备连接上。
全速/高速设备:D+接1.5K上拉电阻;
低速设备:D-接1.5k上拉电阻;
c) 数据编码
USB采用NRZI(非回零,反向编码)对发送数据包进行编码,即输入数据0,编码成”电平翻转”,输入数据1,编码成”电平不变”;编码出来的序列:高电平称为J状态,低电平称为K状态。
位填充编码:主要是为了保护数据序列中有足够多的电平变化。当输入数据流中有连续6个“1”时,就要插入1个“0”,以保证电平变化。即先填充后编码。
3、USB的拓扑结构
USB是一种主从结构的系统,主机叫做Host,从机叫做Device。Device包括USB function和USB HUB。USB总线基于分层的星状拓扑结构,以HUB为中心,连接周围设备。总线上最多可连接127个设备。Hub串联数量最多5个。其中线缆长度最长5米。
4、USB传输方式
a) 传输格式
USB总线上传输数据是以包(packet)为基本单位的,必须把不同的包组织成事务(transaction)才能传输数据。USB协议规定了四种传输(transfer)类型:批量传输、同步传输、中断传输和控制传输。
b) Packet
Packet共分为四大类:命令(Token)Packet、帧首(Start of Frame)Packet、数据(Data)Packet、握手(Handshake)packet。数据包是如下几个部分组成:
PID:PID是用来标识一个包的类型的。
地址域:地址共占11位,其中低7位是设备地址,高4位是端点地址。
帧号域:帧号占11位,主机每发出一个帧,帧号都会自加1,当帧号达到0x7FF时,将归零重新开始计数。
数据域:根据传输类型的不同,数据域的数据长度从0到1024字节不等。分别标识各个传输类型的大小。
CRC:根据不同的包类型选择不同的数据进行数据校验。其中Token Packet中的Packet Content部分只包含PID+地址+CRC三个部分,此时进队地址数据进行校验;SOF Packet中的Packet Content部分只包含PID+帧号+CRC三个部分,此时仅对帧号域进行校验;Data Packet中的Packet Content部分包含PID+数据+CRC三个部分,此时仅对数据域进行校验;Handshake Packet中只包含PID,没有CRC位。
c) Transaction
事务可以分成三类
setup事务:主机用来向设备发送控制命令
数据输入事务:主机用来从设备读取数据
数据输出事务:主机用来向设备发送数据
d) Transfer
USB协议定义了四种传输类型:控制传输(Control transfer)、大容量数据传输(Bulk transfer)、同步传输(Isochronous transfer)和中断传输(Interrupt transfer)。