一、USB系统硬件框架和软件框架
1. UBS设备使用示例
我们把USB设备比如Android手机接到PC端,此时会发现:
- 右下角弹出"发现android phone"
- 跳出一个对话框,提示你安装驱动程序
从这里我们可以引申出几个问题:
-
USB设备插到电脑上去,接触到的对方设备是什么?
答:是USB控制器,是USB控制器内嵌的root hub
-
既然还没有"驱动程序",为何能知道是"android phone"
答:windows里已经有了USB的总线驱动程序,接入USB设备后,是"总线驱动程序"知道你是"android phone",提示你安装的是"设备驱动程序"。
USB总线驱动程序负责:识别USB设备, 给USB设备找到对应的驱动程序
-
为什么一接入USB设备,PC机就能发现它?
答:PC的USB口内部,D-和D+接有15K的下拉电阻,未接USB设备时为低电平。
USB设备的USB口内部,D-或D+接有1.5K的上拉电阻;它一接入PC,就会把PC端USB口的D-或D+拉高,从硬件的角度通知PC有新设备接入。
-
USB设备种类非常多,为什么一接入电脑,就能识别出来它的种类?
答:PC和USB设备都得遵守一些规范。比如:USB设备接入电脑后,PC机会发出"你是什么"?USB设备就必须回答"我是xxx", 并且回答的格式是固定的。
USB总线驱动程序会发出某些命令想获取设备信息(描述符),USB设备必须返回"描述符"给PC。
-
PC机上接有非常多的USB设备,怎么分辨它们?
答:每一个USB设备接入PC时,USB总线驱动程序都会给它分配一个编号。PC机想访问某个USB设备时,发出的命令都含有对应的编号(地址)。
-
USB设备刚接入PC时,还没有编号;那么PC怎么把"分配的编号"告诉它?
答:新接入的USB设备的默认编号是0,在未分配新编号前,PC使用0编号和它通信。
2. 硬件框架
在USB系统中,有2个硬件概念:
- USB Host:它跟处理器相连,处理器通过USB Host跟各类USB设备通信。USB Host中集成有一个root hub。
- USB Device:这分为两类设备
- Hub:用来扩展USB接口
- Function:就是普通的USB设备,比如U盘、声卡等
3. 软件框架
APP可以通过USB设备驱动程序访问USB设备,也可以绕过USB设备驱动,直接通过USB控制器驱动访问USB设备。
二、USB电气信号
1. 学习的起点
USB 2.0协议支持3种速率:低速(Low Speed,1.5Mbps)、全速(Full Speed, 12Mbps)、高速(High Speed, 480Mbps)。
USB Hub、USB设备,也分为低速、全速、高速三种类型。一个USB设备,可能兼容低速、全速,可能兼容全速、高速,但是不会同时兼容低速、高速。
1.1 USB设备状态切换图
1.2 硬件线路
下图是兼容高速模式的USB收发器电路图:
USB连接涉及Hub Port和USB设备,硬件连接如下:
2. 电子信号
USB连接线有4条:5V、D+、D-、GND。数据线D+、D-,只能表示4种状态。USB协议中,很巧妙地使用这两条线路实现了空闲(Idle)、开始(SOP)、传输数据(Data)、结束(EOP)等功能。
2.1 低速/全速信号电平
2.2 高速信号电平
点击USB 系统框架和电气信号分析——古月居