只发PCB电路相关43  随时更新~~  

一、STM32中的上/下拉电阻

STM32中的GPIO

嵌入式~PCB专辑43_嵌入式硬件

   以STM32中的GPIO为例,如上图是GPIO的结构图。

    从上图中标号2处可以看到,上拉和下拉电阻上都有一个开关,通过配置上下拉电阻开关,可以控制引脚的默认电平,这里有三种状态:

  • 开启上拉时,引脚默认电压为高电平
  • 开启下拉时,引脚默认电压为低电平
  • 上拉和下拉不开启时,这种状态我们称为浮空模式

    STM32上下拉及浮空模式的配置是通过GPIOx_CRL和GPIOx_CRH寄存器控制的,可以通过《STM32F1xx 中文参考手册》查阅。

开启上拉电阻或下拉电阻的作用

    STM32内部的上拉其实是一个弱上拉,也就是说通过此上拉电阻输出的电流很小,如果想要输出一个大电流。那么就需要外接上拉电阻了,其实就是增加导线的输出电流。

    下拉电阻情况相反,让STM32的CPU引脚输出低电平,结果由于后续电路影响输出的低电平达不到GND。所以接个下拉电阻,其实就是为了降低导线的输出电流。

    另外当上下拉电阻都不开启,此时是浮空模式,引脚的电压是不确定的,此模式下的管脚电压会时不时改变。

    所以为了防止引脚悬空,产生积累电荷、静电荷,造成电路不稳定。一般情况下,我们都会给引脚设置成上拉或者下拉模式,使它有一个确定的默认电平状态。

    以上拉电阻举例,在STM32刚上电的时候,芯片引脚电平是不确定的。特别引脚是接按键的时候,必须给他个确定的电平。下拉电阻的作用就是,强制让电平保持在低电平。

上下拉电阻阻值的大小    

    根据拉电阻的阻值大小,可以分为强拉或弱拉(weak pull-up/down)。拉电阻阻值越小则表示电平能力越强,为强拉,可以抵抗外部噪声的能力也越强,相应的功耗也越大。

    举个例子:

    按键的上拉电阻可以选择3.3k、4.7k、5.1k、10k等,但是电阻越小,电流越大,功耗也越大。10k的上拉电阻带来的电流,是大多数芯片所能识别到的引脚电流,如果电阻太大,电流太小,引脚识别不了,所以10k是个折中的方案。这里的电流,简单来说是根据公式VDD/R拉电阻计算出来的。

二、为什么单片机的I/O口需要驱动?

  为什么单片机的I/O口需要驱动呢?这个问题需要从I/O口的电气特性上进行解释。

    首先,给出单片机典型的I/O口,即P1口电气结构图,如图所示。P1口通常是作为通用I/O口使用,不需要多路转换电路MUX。其输出级电路内部有上拉电阻,与场效应管共同组成输出驱动电路。因此,P1口作为输出时,不需要再外接上拉电阻,而当P1口作为输入口使用时,仍然需要先向锁存器写“1”,截止场效应管。

嵌入式~PCB专辑43_三极管_02

 内部上拉电阻阻值很大,经过测量大致在330KΩ左右,而内部电源Vcc仅仅+5V,这样以P1.X高电平驱动发光二极管为例,场效应管截止,相当于Vcc通过330KΩ的电阻向二极管提供电流,5/330*10-3=0.015mA,而二极管的点亮电流为5mA至10mA,这就说明单片机的端口只是驱动TTL电平,不提供或提供很小的驱动电流,所以在带负载时,单片机应当在I/O口加上驱动芯片。

三、推挽、开漏、OC、OD的特点与应用

与推挽输出相对的是开漏输出,而开漏输出分为OC、OD两种,下文分别详细介绍。

推挽输出

    推挽输出(Push-Pull Output)是由两个MOS或者三极管受到互补控制信号的控制,两个管子始终处在一个导通另一个截止的状态,如图1所示:

嵌入式~PCB专辑43_嵌入式硬件_03

图1 推挽输出结构

    推挽输出的最大特点是可以真正的输出高电平和低电平,而且在两种电平下都具有驱动能力。

补充说明

    所谓的驱动能力,就是指输出电流的能力。对于驱动大负载(即负载内阻越小,负载越大)时,例如IO输出为5V,驱动的负载内阻为10ohm,于是根据欧姆定律可以正常情况下负载上的电流为0.5A(推算出功率为2.5W)。显然一般的IO不可能有这么大的驱动能力,也就是没有办法输出这么大的电流。于是造成的结果就是输出电压会被拉下来,达不到标称的5V。当然如果只是数字信号的传递,下一级的输入阻抗理论上最好是高阻,也就是只需要传电压,基本没有电流,也就没有功率,于是就不需要很大的驱动能力。

    对于推挽输出,输出高、低电平时电流的流向如图2所示。所以相比于后面介绍的开漏输出,输出高电平时的驱动能力强很多。

嵌入式~PCB专辑43_上拉电阻_04

图2 灌电流与拉电流

缺点

    但推挽输出的一个缺点是,如果当两个推挽输出结构相连在一起,一个输出高电平,即上面的MOS导通,下面的MOS闭合时;同时另一个输出低电平,即上面的MOS闭合,下面的MOS导通时。电流会从第一个引脚的VCC通过上端MOS再经过第二个引脚的下端MOS直接流向GND。整个通路上电阻很小,会发生短路,进而可能造成端口的损害。这也是为什么推挽输出不能实现" 线与"的原因。

开漏输出

    常说的与推挽输出相对的就是开漏输出(Open Drain Output),对于开漏输出和推挽输出的区别最普遍的说法就是开漏输出无法真正输出高电平,即高电平时没有驱动能力,需要借助外部上拉电阻完成对外驱动。

    下面就从内部结构和原理上说明为什么开漏输出输出高电平时没有驱动能力,以及进一步比较与推挽输出的区别。

    首先需要介绍一些开漏输出(OD)和开集输出(OC)。这两种输出的原理和特性基本是类似的,区别如下:

  • 开漏使用MOS管,其中的"漏"指的就是MOS管的漏极
  • 开集使用三极管,其中的"集"指的就是三极管的集电极

    这两者其实都是和推挽输出相对应的输出模式,由于使用MOS管的情况较多,很多时候就用"开漏输出"这个词代替了开漏输出和开集输出。

OC

    介绍就先从开集输出开始,其原理电路结构如图3所示。

嵌入式~PCB专辑43_上拉电阻_05

图3 OC

    图3左边电路是开集(OC)输出最基本的电路,当输入为高电平时,NPN三极管导通,Output被拉到GND,输出为低电平;当输入为低电平时,NPN三极管闭合,Output相当于开路(输出高阻)。高电平时输出高阻(高阻、三态以及floating说的都是一个意思),此时对外没有任何的驱动能力。这就是开漏和开集输出最大的特点,如何利用该特点完成各种功能稍后介绍。这个电路虽然完成了开集输出的功能,但是会出现input为高,输出为低;input为低,输出为高的情况。

    图3右边的电路中多使用了一个三极管完成了"反相"。当输入为高电平时,第一个三极管导通,此时第二个三极管的输入端会被拉到GND,于是第二个三极管闭合,输出高阻;当输入为低电平时,第一个三极管闭合,此时第二个三极管的输入端会被上拉电阻拉到高电平,于是第二个三极管导通,输出被拉到GND。这样,这个电路的输入与输出是同相的了。

OD

    接下来介绍开漏输出的电路,如图4所示。原理与开集输出基本相同,只是将三极管换成了MOS而已。

嵌入式~PCB专辑43_引脚_06

图4 OD

特点及应用

    接着说说开漏、开集输出的特点以及应用,由于两者相似,后文中若无特殊说明,则用开漏表示开漏和开集两种输出电路。

    开漏输出最主要的特性就是高电平没有驱动能力,需要借助外部上拉电阻才能真正输出高电平,其电路如图5所示。

嵌入式~PCB专辑43_引脚_07

图5 OD门上拉

    当MOS管闭合时,开漏输出电路输出高电平,且连接着负载时,电流流向是从外部电源,流经上拉电阻RPU,流进负载,最后进入GND。

  • 开漏输出的这一特性一个明显的优势就是可以很方便的调节输出的电平,因为输出电平完全由上拉电阻连接的电源电平决定。所以在需要进行电平转换的地方,非常适合使用开漏输出。
  • 开漏输出的这一特性另一个好处在于可以实现"线与"功能,所谓的"线与"指的是多个信号线直接连接在一起,只有当所有信号全部为高电平时,合在一起的总线为高电平;只要有任意一个或者多个信号为低电平,则总线为低电平。而推挽输出就不行,如果高电平和低电平连在一起,会出现电流倒灌,损坏器件。

推挽、开漏对比

嵌入式~PCB专辑43_引脚_08

   关于推挽输出、开漏输出在STM32中的应用,在理清楚了推挽、开漏之后,可以更好的理解GPIO工作原理。

四、什么是电感饱和

电感饱和的原因 

先直观的认识下什么是电感饱和,如图1:

嵌入式~PCB专辑43_三极管_09

图1

  • 我们知道当图1线圈中通过电流时,线圈会产生磁场;
  • 磁芯在磁场的作用下会被磁化,其内部磁畴会慢慢旋转;
  • 当磁芯被完全磁化时,磁畴方向全部和磁场一致,即使再增加外磁场,磁芯也没有可以旋转的磁畴了,此时的电感就进入了饱和状态。

从另一个角度来看,如图2所示的磁化曲线,磁通密度B与磁场强度H之间满足图2中右侧公式:

  • 当磁通密度达到Bm时,磁通密度不再随磁场强度的增大而大幅度增大,此时电感达到饱和。

由电感与磁导率µ的关系式可知:

  • 当电感饱和后,µ会大幅度减小,最终导致电感量大幅降低,失去抑制电流的能力。

嵌入式~PCB专辑43_上拉电阻_10

图2

在实际应用中有没有判断电感饱和的诀窍呢?

可以总结为两大类:理论计算和实验测试。

  • 理论计算可从最大磁通密度和最大电感电流入手;
  • 实验测试主要关注电感电流波形和一些其他初步判断方法。

嵌入式~PCB专辑43_三极管_11

下面就一一介绍这些方法。

 计算磁通密度 

此方法适用于利用磁芯来设计电感的场景。磁芯参数包括磁路长度le,有效面积Ae等。磁芯的型号还决定了相应的磁材牌号,磁材对磁芯损耗,饱和磁通密度等做了相应规定。

嵌入式~PCB专辑43_上拉电阻_12

有了这些材料,我们就能根据实际设计情况来计算最大磁通密度,公式如下:

嵌入式~PCB专辑43_嵌入式硬件_13

实际中可简化计算,用ui来代替ur;最后与磁材饱和磁通密度相比较,就能判断设计的电感是否有饱和的风险。 whaosoft  aiot  http://143ai.com

 计算最大电感电流 

此方法适用于直接利用成品电感来设计电路。

不同的电路拓扑对电感电流计算有不同的公式。

以Buck芯片MP2145为例,可以按照如下公式计算,将计算结果与电感规格值相比较就能判断电感是否会饱和。

嵌入式~PCB专辑43_引脚_14

通过电感电流波形判断 

此方法也是工程实际中最常见和最实用的的方法。

还是以MP2145为例,使用MPSmart仿真工具进行仿真,从仿真波形可以知道,当电感没有饱和时,电感电流是一个斜率一定的三角波,当电感饱和时电感电流波形会有一个明显畸变,这是由于饱和后感量降低造成的。

嵌入式~PCB专辑43_嵌入式硬件_15

我们在工程实际中就可以基于此观察电感电流波形是否存在畸变,来判断电感是否饱和。

下面是在MP2145 Demo板上实测波形,可以看到饱和后有明显的畸变,与仿真结果一致。

嵌入式~PCB专辑43_引脚_16

测量电感是否异常升温,听是否有异常啸叫。在工程实际中还有很多情况,我们可能不能准确知道磁芯型号,也很难知道电感饱和电流大小,有时候也不能方便的测试电感电流;这时候我们还可以通过测量电感是否有异常温升,或者听是否有异常啸叫等手段来初步判断是否发生了饱和。

嵌入式~PCB专辑43_引脚_17