[经验] 为什么串口不能热插拔?

qwqwqw2088   2016-11-27 17:53 楼主
    虽然我们测试的过程中,已经习惯了把USB转串口的小板拔来拔去,包括单片机和开发板上的串口线也是拔来拔去。但是我们经常有听说一个说法:串口不能热插拔。到底串口能不能热插拔?
360截图20161127175110962.jpg
    在问这个问题之前,我们首先要弄明白热插拔是什么。对于热插拔的定义,标准的定义是指在改变系统的配置和外设的过程中,对系统的原有操作不产生影响。而我们狭义上理解的热插拔就只是对于外设来说,可以在主机还在带电工作的时候连入或移除的能力。
     最强的热插拔可能是对电源模块的热插拔,在通信设备中,双电源互为备份,可以做到当机柜中的单个电源模块故障时,直接替换掉电源而不关闭设备。而对于普通外设来说就更能热插拔了。不过难以理解的地方可能在于:USB也是线,串口也是线,一个接口究竟要满足什么样的条件才能够热插拔呢?

360截图20161127175155888.jpg

     硬件上来说,可热插拔的设备一般都会对电源部分格外重视,除了包含防止插拔的过程中对正负极可能造成的意外短路之外,热插拔还要保证电源负极先于其他引脚连接进系统,提供ESD放电回路。然后连接进的是电源正极,为系统供电。稍稍延时后,再将整个电路连接进主系统。尽量确保在数据线上不会产生有害的浪涌损坏设备。而对于DB9串口来说,它的所有脚是同时引入系统的。而且在接口电路中没有任何保护措施,这样的话在热插拔之后,可能会对系统造成不良影响甚至损坏系统。
      软件方面,以USB为例。操作系统对于USB设备有着非常良好的接入/移除识别机制,可以检测到设备的连入和移除,并对其进行识别和驱动加载。而对于串口类设备,没有这样的枚举机制。如果你安装了一个新的设备就必须手动对其进行操作,没有特别考虑的应用程序也无从得知串口是否连入了硬件,所以在软件层面还无法实现对设备的监测。

360截图20161127175242712.jpg
VGA,被乱插乱拔习惯了的插头之一

    并不是所有的硬件都能够热插拔,你热插拔过了一些设备,看起来没什么问题,那是因为硬件工程师在设计时对于这样的“莽撞行为”做了一定的防护措施。使用设备的时候,还是要按照设计的说明来做哦!

回复评论 (2)

热插拔容易损坏系统和硬件,
点赞  2016-11-27 21:10
你配的USB的插头图有错,正像你所说,要保证电源地先接通,USB是在插头上实现这一点。所以插头上数据线(中间两条)会比旁边两条都短一些。
点赞  2016-11-28 08:44
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复