最近遇到一个问题,就是独立供电的两个TTL各自都有电,当串口通讯的时候TX-RX,RX-TX连完,发现只要把这个通讯接上,那么还没上电的另一个板子上就会有1V左右的电平出来,这影响了系统稳定性,探索了一周多,终于解决了。
我去学习了一下这方面的知识,做个总结
在实际应用中,当串口芯片与主控IC譬如MCU等器件一同使用时,如果串口直连的双方器件有一方不需要供电工作时,要注意一方电流对另一方电流的倒灌导致未供电的芯片继续工作的情况(这种情况也可能会造成芯片工作异常,系统紊乱),或者是在MCU通过串口下载代码的场景中,当MCU需要复位以实现下载时,发现复位不成功,可能也是由于该原因造成的。因此,在电路设计中可以做如下改动来防止串口芯片与对端IC出现任何一方被倒灌电的情况。
以下是一些常见的 TTL 串口防倒灌电设计方法:
独立供电时的防倒灌设计
- 二极管隔离
:在串口的发送引脚 TXD 上串联一个反向二极管,如 IN4148,然后再连接到对端 IC 。当本端发送数据时,发送高电平时二极管截止,对端 RXD 默认上拉为高电平,不会影响采样;而发送低电平时二极管导通,对端 RXD 能够接收到低电平,从而实现正常通讯,同时防止了本端 TXD 发送引脚将电流倒灌到对端 IC.
当RXD侧器件无电,采用二极管隔断TXD引脚的对外输出电流。
当RXD侧器件通电时,TXD默认输出高电平,RXD默认为上拉高电平,此时二极管不导通;当TXD输出低电平,低电平期间二极管导通,RXD接收到低电平。
注:若RXD的内部结构非上拉输入,则还需要在RXD端增加上拉电阻以保持默认的空闲高电平状态。
- 限流电阻
:在串口的接收引脚 RXD 上串联一个限流电阻,限制对端 IC 对本端的上拉电流,防止倒灌电流过大导致芯片工作异常甚至出现闩锁效应。该电阻的阻值可根据具体芯片的电气特性和实际应用场景进行选择
当TXD侧器件无电,二者之间串联电阻限流,可减小RXD引脚对外的上拉电流。(因RXD脚为输入脚,只能被动接收信号,因此不能采用二极管方案)
- NMOS 管隔离
使用 NMOS 管进行隔离,将 RXD 连接 NMOS 的 D 极,VCC 连接 NMOS 的 G 极,TXD 连接 NMOS 的 S 极。当 TXD 侧器件无电时,NMOS 不导通,RXD 和 TXD 之间未导通;当 TXD 侧器件通电,驱动 TXD 为高电平时,NMOS 不导通,RXD 保持默认高电平,TXD 为低电平时,NMOS 导通,RXD 和 TXD 直连被下拉为低电平,从而实现了对 RXD 对外上拉电流的完全隔离.
使用NMOS管可以完全隔离RXD对外的上拉电流,其工作原理为:RXD连接NMOS的D极,VCC连接NMOS的G极,TXD连接NMOS的S极。
当TXD侧器件无电,NMOS不导通,RXD和TXD之间未导通;
当TXD侧器件通电,驱动TXD为高电平时,NMOS不导通,RXD保持默认高电平;TXD为低电平时,NMOS导通,RXD和TXD直连被下拉为低电平;
除此之外,也有的串口类芯片,自身就带防止倒灌电的功能,如下图的CH340K芯片:
综合考虑,参考图中CH340K做法,外加两个二极管处理了以后,问题完美解决!
学习过程记个笔记发出来。