简介
-
USB : universal serial bus , 通用串行总线,是一个外部总线标准,用于规范电脑和外部设备的连接和通讯,
-
由四根线组成:VCC, GND,D+, D-,采用差分传输
-
USB主机上,D-和D+都接了15K的电阻到地,因此D+,D-在没有设备接入的时候都是低电平
-
usb1.0 : low speed , usb2.0 : full speed , usb3.0 : high speed
-
在USB OTG中,比普通的4线USB多了一条ID标识线,用来表明他是主机还是从机
-
一个主机最多拓展127个设备,这是因为规定每个USB设备具有一个7bit地址(0~127,而地址0是保留给为初始化的设备使用的,因此只能挂在127个设备),实际不会连接127个.
-
在USB的低速和全速模式中,采用的是电压传输模式,而高速采用电流传输模式.
-
Vbus: 红色, D- : 白色, D+ : 绿色, GND: 黑色
USB版本
-
USB1.0:最大传输速度1.5Mbps(192KB/S) 1.5* 1024/8=192
-
USB1.1:最大12Mbps(1.5MB/S)
-
USB2.0:最大480Mbps(60MB/S)
-
USB3.0:(USB 3.1 Gen 1),最大5Gbps(640MB/S)
-
USB3.1:(Gen 2),最大10Gbps(1.28GB/S)
按速度将设备分为低速(1.5Mbps),全速(12Mbps), 高速(480Mbps)
注意:USB2.0并不是高速设备的代名词,因为USB2.0协议对设备的高速设备模式并不是轻质的,而是可选的。例如PDIUSBD12,符合USB2.0协议,但是不支持高速模式,只支持12Mbps的全速模式。
差分信号
逻辑1: D+ > VoH(2.8V) and D- < VoL(0.3V)
逻辑0: D- > VoH and D+ < VoL
低速状态下的K,J状态
在全速和高速状态下,K状态: D+ 1, D- 0, J状态: D+ 0, D- 1
NRZI编码
no return zero inverse(反向不为0)
-
当数据为0时,电平翻转,数据为1时,电平不翻转
-
为了防止出现长时间电平不变化,在发送数据前要经过位填充处理(当遇到连续6个数据1时,就轻质插入一个数据0).
-
在开发USB时,我们不用关心他的编码方式,这部分都由硬件帮我们完成,像PDIUSB12这个芯片主要就是完成这些,然后通过读写寄存器控制USB。而像stm32的USB,很多寄存器都被ST官方封装,我至今还没看懂他的工程。
USB电气特性
设备未配置前,从Vbus上最多获取100mA的电流,配置后,最多可以获取500mA. Vbus是5V的电压
USB插入检测
高速设备,在D+接了一个1.5K的电阻到VCC,低速设备在D-接了一个1.5K的电阻到VCC. 当设备接入主机时,检测到D+或D-上的电平变化,主机就可以判断是否是否设备接入,并判断设备是高速还是低速.USB高速设备先被识别为全速设备,然后通过集线器和设备两只的确认,在切换到高速模式下.在高速模式下,是电流传输模式,这时需要将D+上的上拉电阻断开.