zhenyifei 发表于 2012-5-14 19:34:33

如何解决单片机IO口电流倒灌的问题

我在单片机结合外围设备模块使用时,有时会遇到一种很奇怪的现象:1、我给单片机正常上电时,整个单片机最小系统和外围设备模块能按照要求正常运行、、、、、、
                                                            2、但当单片机最小系统断开电源时(声明:我的外围设备模块和单片机最小系统是分别各自独立供电的,都是+5V),而通过IO口与单片机系统连接的外围设备模块没有断电,可是我发现此时单片机竟然还能工作,我百度了解知道这种现象叫做电流倒灌,可是百度上的解决方案笼统不一,有哪位大侠前辈遇到过这种情况的给讲解下造成这种倒灌现象的原因,如何解决?谢谢

tiancaigao7 发表于 2012-5-14 19:52:49

光耦隔离。或者用其他的芯片隔离一下。就可以了。

llssr 发表于 2012-5-14 20:07:27

这是正常现象,如果不隔离则不可能避免(CMOS电路中的MOS内部有体二极管)。一般没你这么设计的吧,最多的是关掉外围电路让MCU工作,你这个反而是关掉MCU让外围工作,就算低功耗设计这种理念也是不对的

kydl2345 发表于 2012-5-14 20:30:14

datasheet有sink current和source current,就是拉灌电流,设计在范围之内就行了

zhenyifei 发表于 2012-5-14 23:24:05

tiancaigao7 发表于 2012-5-14 19:52 static/image/common/back.gif
光耦隔离。或者用其他的芯片隔离一下。就可以了。

我用了PC817光耦,可是不行,我的外围模块式红外对射管,当有物体挡住了对射管的时候起输出低电平,我设计的光耦隔离原理如下:

zhenyifei 发表于 2012-5-14 23:28:21

llssr 发表于 2012-5-14 20:07 static/image/common/back.gif
这是正常现象,如果不隔离则不可能避免(CMOS电路中的MOS内部有体二极管)。一般没你这么设计的吧, ...

嗯,大哥说的对,这样确实是不按常规的错误,但是既然遇到这种情况了,那就说明我的电路设计得还是不够完美,这个错误刚好折射出我在信号隔离这块还是做得不到位

zhenyifei 发表于 2012-5-14 23:31:38

kydl2345 发表于 2012-5-14 20:30 static/image/common/back.gif
datasheet有sink current和source current,就是拉灌电流,设计在范围之内就行了

那你的意思是说:我应该把外围模块输到单片机IO口的电流改小点么?不解,您能说明白点么?谢谢

tiancaigao7 发表于 2012-5-15 06:58:36

zhenyifei 发表于 2012-5-14 23:24 static/image/common/back.gif
我用了PC817光耦,可是不行,我的外围模块式红外对射管,当有物体挡住了对射管的时候起输出低电平,我设 ...

你说说按照上图设计的电路,当单片机一侧的VCC变成0之后,外设一端如果有信号的话,在单片机一侧的光耦依然可以检测到高电平?你确定外设和单片机部分的电源是独立的?

Apocalypse 发表于 2012-5-15 07:40:19

新手想不明白 灌到io口的电流怎么会让单片机工作 请各位前辈指点一下

wuyya 发表于 2012-5-15 07:50:48

请参考一下MCU的规格书IO口部分,如果规格书中没有详细说明IO口结构,可以参考其他MCU的。一般来说,只要不是太低档的MCU,IO都有ESD保护电路,等效电路就是一对二极管,分别反向接到GND和VCC;楼主说的那种情况,极有可能是电流通过ESD保护二极管流向了VCC。

millwood0 发表于 2012-5-15 08:01:03

如何解决?

simple:

1) read the mcu datasheet;
2) take a class on Ohm's law.
3) if you still have no clue, go back to 1).

zhenyifei 发表于 2012-5-15 12:10:40

tiancaigao7 发表于 2012-5-15 06:58 static/image/common/back.gif
你说说按照上图设计的电路,当单片机一侧的VCC变成0之后,外设一端如果有信号的话,在单片机一侧的光耦依 ...

单片机和外设肯定是分别各自独立供电的,肯定没有错,因为我是分模块化做的,每个模块有各自的电源接口,当单片机一侧VCC变为0,外设没断电的情况下依然是有信号输出的,这个我敢肯定,大哥提的有一点我觉得启发了我,我认为这个光耦如此接法根本起不了隔离的作用,因为光耦右端始终受左端控制,不知道我的看法对不对,大哥认为呢?

zhenyifei 发表于 2012-5-15 12:15:58

millwood0 发表于 2012-5-15 08:01 static/image/common/back.gif
simple:

1) read the mcu datasheet;


OK,thank you!

zhenyifei 发表于 2012-5-15 12:21:33

wuyya 发表于 2012-5-15 07:50 static/image/common/back.gif
请参考一下MCU的规格书IO口部分,如果规格书中没有详细说明IO口结构,可以参考其他MCU的。一般来说,只要不 ...

嗯,我没看过MCU的IO口资料,我的单片机是AT89S52,我觉得应该是我的信号隔离做的不好,我觉得只要我把信号隔离的好,倒灌就不是问题,MCU的内部架构已经定死了,我们只能完善自己,不可能改变MCU,您觉得对吗?

sniper.q 发表于 2012-5-15 12:38:07

zhenyifei 发表于 2012-5-14 23:24 static/image/common/back.gif
我用了PC817光耦,可是不行,我的外围模块式红外对射管,当有物体挡住了对射管的时候起输出低电平,我设 ...

你確定你的電源有分開的嗎?
按你畫的圖,光耦兩邊使用的電壓都是VCC?817接MCU這邊的應該使用MCU的電源吧,使用同一電源,光耦一樣工作,該流到MCU的電流一樣流。使用雙電源,一邊沒電了光耦不工作應該不會有電流再流到MCU。

zhenyifei 发表于 2012-5-15 12:57:31

sniper.q 发表于 2012-5-15 12:38 static/image/common/back.gif
你確定你的電源有分開的嗎?
按你畫的圖,光耦兩邊使用的電壓都是VCC?817接MCU這邊的應該使用MCU的電源 ...

对,我没注意到这个,受教了,谢谢
页: [1]
查看完整版本: 如何解决单片机IO口电流倒灌的问题