MCU篇之慎用“假”OD门

除了传统51单片机之外,一般的MCU都有较强的IO功能,可以设置为几种常见的配置方式:推挽输出、OD输出、浮空输入、上下拉输入等。有时候,我们需要把IO设置为OD输出方式,写“0”时由下拉管主动把电压拉低,写“1”时由外部上拉至特定的电压水平。OD门可用于实现信号的相与,或者直接驱动较高电压等级的电路。

然而,为了实现对IO口的保护,MCU厂家一般都会为每一个IO口对地VSS和电源VDD都并接反向二极管,可作为ESD保护。这样一来,所谓的OD门输出模式,其实是“假”的OD门。

以STM32为例(图1),当IO设置为OD门时,只有下拉管N-MOS工作。向输出寄存器写0,N-MOS管导通,输出低电平;向输出寄存器写1,N-MOS管截止,输出为高阻。在图中我们可以看到,管脚的末端被两个反向二极管并接到VSS和VDD或者VDD_FT(5V容忍VDD)。就是说,外部对IO引脚的上拉电压无法超过VDD或者5V(忽略二极管压降),它们并不是严格意义上的OD门。

图1

图2

看图2,意图是用STM32(供电3.3V)的IO口PB9驱动一个三极管,用12V驱动一个负载,PB9设置为OD输出方式,根据OD门的特性,好像这个电路是可以工作。由以上的分析得知,这个电路是有问题的,当往PB9输出寄存器写1时,IO口的电压被上拉至5V(或5+0.7V),三极管还是导通,无法完成关断操作。

图3

相比于图2,图3这个电路却可以正常工作。首先,驱动负载的电压变成了5V,查阅STM32的数据表得知,PB9这个引脚具有5V容忍能力,看图4,I/O Level一栏有“FT”标记的IO口,都具有5V容忍能力。当这样的IO口设置为OD门时,是可以驱动5V水平的电路的。

图4

要注意的是,STM32只是有一部分的IO口具备5V容忍能力,图4中PB5就不具备5V容忍,在设计电路的时候就要多加注意。

 

网友1评论:为何不去掉上拉电阻R2?

作者回复1:理论是可以去掉的,加这个电阻是为了保险。如果单片机IO是高阻态,没有这个电阻容易导致误导通。

网友3评论1:我觉得,直接不可以取,否则三极管一直处于导通状态。

永不止步步 发表于10-15 11:25 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67417个|学分:380041个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号