USB:Universal Serial Bus,即通用串行总线,是Intel 公司联合其它公司开发的总线架构。迄今为止,有包括且不限于USB1.0,USB1.1,USB2.0和USB3.0的多达10种迭代版本,因工作接触常用为以上所提四种,所以故事就从他们四位展开吧。
其传输速率分别为1.5Mbps,12Mbps,480Mbps和5Gbps。
高版本兼容低版本,传输速率由短板决定。举例说明:一个USB1.1的鼠标插在一个USB2.0口上依旧可以正常使用,传输速率为12M。
各版本的区别如下表所示:
传输速率 | 信号线数量 | 信号线定义 | 对外提供电压/最大电流 | 适用场景(不绝对) | 工作模式 | |
USB1.0 | 1.5Mbps | 2 | USB+,USB- | 5V/0.5A | 键鼠等低速HID设备 | 半双工 |
USB1.1 | 12Mbps | 2 | USB+,USB- | 5V/0.5A | 键鼠等低速HID设备 | 半双工 |
USB2.0 | 480Mbps | 2 | USB+,USB- | 5V/0.5A | 电脑,嵌入式设备 | 半双工 |
USB3.0 | 5Gbps | 6 | USB+/-,RX+/-,TX+/- | 5V/0.9A | 电脑,嵌入式设备 | 全双工 |
USB信号线都为差分信号,即通过两根信号线之间的电压差值来表示逻辑“0”和“1”。USB2.0版本及以前版本信号线只有一对差分信号,无法实现全双工通信。USB3.0及以后版本信号线在USB2.0的基础上增加了RX和TX的差分对,因为是在USB2.0的基础上增加的,所以USB3.0依旧可以兼容USB2.0,只不过在传输信号是只使用USB2.0的那一对差分信号罢了。
需要纠正的一点思维误区是:USB只是一种总线的定义名称,并非一种特定的接口,并不是单纯的指电脑,U盘上的USB接口。事实上,USB接口种类很多,包括且不限于Type A,Type B,Type C,micro Type等多种形式,具体可参考如下链接
USB接口类型大全 - USB中文网 (usbzh.com)
USB信号的接口定义也很简单,只需要在上述表中的信号线定义的基础上增加VCC和GND即可。
硬件设计上也是直来直去,没有太多的中间器件。由MCU或者其他主控制器(CPU,DSP,FPGA等)直接产生USB差分信号(主控制器中需集成USB控制器,不是随便的GOIO输出个差分信号就行的),直接引出到USB插座即可。需要注意的几点是:
- 差分信号线PCB注意走等长。
- USB插座部分注意ESD防静电设计,且ESD器件放置离插座越近越好。
- USB差分线阻抗为90欧姆,要根据PCB层数,板厚,铜厚,线距,阻抗值等参数计算差分走线宽度,计算器链接:嘉立创阻抗计算 (jlc.com)
上图为USB2.0简单电路设计方式,因为手边没有MCU、USB和ESD的元件原理图封装,就画了个框加上引脚意思一番,见谅。USB3.0的设计方式类似,只是管脚数量的增加而已,设计方法一样,与USB2.0在设计上存在差异的地方在于:USB3.0要在TX端的差分信号线上增加AC耦合电容,达到滤除直流电压偏置,防止USB通信设备两端直流电平水平不一致影响通信。
还有一点值得注意:USB过流信号设计。为保护USB接口异常而产生的大电流烧毁后级电路或芯片,USB插座在检测到过大的电流时会输出USB_OC信号(OC就是Over Current,过流的意思)给MCU,一般为高电平,具体可以看给USB供电的电源芯片的手册(带有过流信号检测的专用电源芯片),MCU检测到过流信号时可采取对应措施保护电路系统。如果MCU的过流检测引脚是低电平有效,可以加个反相器,具体情况具体设计即可。
补:
一般而言,上面的电路设计已经可以实现USB数据的正常传输了。但在电磁兼容要求较为严格的场合,还需在USB插座端靠近插座的地方加上共模电感,这里共模电感的作用是为了考虑电磁兼容问题,防止板子内部的高频干扰通过USB线辐射到外面,对其他的模块和设备造成电磁干扰。
如上所示,电脑上没有共模电感的原理图封装,用普通电感示意了一下,但原理相同。