stm32设置内部上拉电阻_比较全面的电阻上、下拉介绍

e4267a58f69b28b6ed028f3c03d6aa53.png

1、拉电阻的作用

上拉(Pull Up )或下拉(Pull Down)电阻,两者统称为“拉电阻”,作用:将状态不确定的信号线箝位至高电平(上拉)或低电平(下拉)。

如果输入引脚接上拉或下拉电阻,可以将该引脚确定为高电平或低电平,防止外界的干扰,如下图所示:

4ddeb753fa573bd3c5e9f41b4039ae79.png

2、选择上拉还是下拉

使用上拉电阻还是下拉电阻,取决于电路实际情况。

下拉电阻:

当我们希望某个引脚不控制时为低电平,同时控制时可以为高电平,如高电平有效的使能控制信号(EN),应使用下拉电阻。保证在上电后或运行中即使受到干扰仍为低电平。

上拉电阻:

对于低电平有效的复位控制信号(RST#),若处于悬空状态,刚上电或运行中受到干扰变成低电平,会导致错误复位,此时应该用上拉电阻。

一些比较简单的单片机(如STC89C51RC)内部可能没有集成上拉电阻或下拉电阻,需要在电路中增加,但大多数高级一些的控制芯片都会集成上拉或下拉电阻(如STC15W408AS),下图为STM32F4xx是GPIO内部上拉或下拉介绍(来自STM32F4xx数据手册):

31b31f6fd1a1778e395b82424ce88050.png

3、选择强拉还是弱拉

根据阻值大小可分为强拉或弱拉(weak pull-up/down),一般芯片内部集成的电阻都比较大,为弱拉。拉电阻的阻值越小,电流越大,抗干扰能力越强,但电阻上的功耗也越大,如下图所示:

8f51c1ab4f9c23f83a0ec0c8b7217020.png

上拉电阻R1:控制器每次输出低电平L,都会有VCC/R1的电流消耗能量。

下拉电阻R2:控制器每次输出高电平H=VCC,都有VCC/R2R电流消耗能量。

强拉与弱拉之间的电阻值没有明显的分界,一般我们用的拉电阻都是弱拉,便于控制器改变信号线电平。

强拉电阻的极端就是电阻为0,如EEPROM存储芯片24C02的电路,如下图所示:

76219fc79d88eac67080eb6edd1ec501.png

E0,E1,E2(地址配置位)通常直接VCC或GND,因为存储芯片的地址在运行中不再变化,同样,芯片的写控制引脚WC(Write Control)也被强下拉到GND。

4、输出引脚的拉电阻

对于开集(Open Collector,OC)或开漏(Open Drain,OD)模式的引脚接拉电阻有另一种意义,芯片的有些输出引脚是推挽输出结构(Output Push-Pull),如下图所示:

49792d8edf33f8cf87943e3459d35d4f.png

推挽输出结构特点:无论输出高电平“1”还是低电平“0”,驱动(输入或输出电流)能力都比较强。

灌电流(Sink Current):控制信号为低电平“0”时,Q1截止Q2导通,电流I1由电源VCC经负载RL与三极管Q2流向GND,如下图所示:

71f0c3ab1e387b476ec9b5f7a8cdeed8.png

拉电流(Source Current):控制信号为高电平“1”时,Q1导通Q2截止,电流I1由电源VCC经三极管Q1与负载RL流向GND,如下图所示:

f16a40765b469f0c90556a88030be7bc.png

任何芯片的引脚驱动能力都是有限的,如下图所示为STM32单片机的IO最大电流(来自STM32F4xx数据手册):

38cbbff3746017154337b5df7262d608.png

5、拉电阻的阻值选择

如果引脚驱动的负载比较重,即负载电阻过小,将可能导致输出电平不正确(无法输出设定的电平),如下图所示:

97839c8834a73219daf06a9b35795367.png

假定芯片的供电电压为3.3V,则输出最大电流25mA时,负载RL的值约为132欧姆(3.3V/25mA),如果负载值小于132欧姆,理论上输出电流会更大(超过25mA),但是芯片引脚只能提供最大25mA的电流,因此,输出电平将会下降。

一般驱动重负载(小电阻)时不会烧芯片,但实际应用过程中尽量不要超出引脚的驱动能力。

而OC(OD)的引脚输出结构有所不同(OC结构存在于三极管,而OD结构存在于场效管,下面以OC输出结构为例,OD输出结构的原理是一致的),如下图所示:

af443b96a6257110ddef74641e149448.png

当三极管Q1的基极为高电平“1”时,Q1导通,对应输出引脚为低电平,如下图所示:

a8841b31e8942fec61a341527c88a139.png

基极为低电平“0”时,三极管Q1截止,如果没有上拉电阻,该引脚处于高阻态,无法输出高电平,即 OC/OD结构输出的引脚不能向外提供电流。因此,通常将OC/OD引脚接上拉电阻到VCC,如下图所示:

4ca46edc32de30894e5d384a681d21cc.png

大多数比较器芯片的输出都是OD/OC输出结构,如下图所示(来自TI比较器LM393数据手册):

e126832280c2d0a28bc6cec17f5410d2.png

对于OD/OC结构的引脚,可以根据系统实际需要上拉到对应的电源VCC,不需要电平转换,如下图所示(来自东芝步进电机控制芯片TB6560数据手册)

c9ecd216c2e8449d0841992fe0aef7c3.png

e75bcc437dde0f9495eab3e41dfbee5e.png

I2C总线也是典型的OD输出结构的应用,如下图所示:

6d3dc60541219ff7d3a11dc74de5f6c6.png

其中,SCL与SDA都是OD输出结构,如果芯片引脚使用推挽结构,则两个或多个芯片的引脚连接时将如下图所示:

b380de798dd5ee1a076a38f438818acb.png

上图中的芯片分别输出0与1,此时有非常大的电流自电源VCC经Q1与Q4到GND,虽然大多数情况下不至于烧芯片,但也会引起很大的功率消耗,同时也会导致数据不准确,芯片1要拉高电平,芯片2要拉低电平。

如果使用OC/OD输出结构,则相应的电路如下图所示:

a5d95d3bf462808881c0f3f669d307ed.png

此时,无论两个芯片的引脚输出什么状态,都不会引起数据冲突,即任何一方都可以将信号线拉高或拉低。我们所熟悉的51单片机P0口也是OD结构,如下图所示(来自单片机AT89C51数据手册):

16d85e0516e4a7dc3a808cfa9efc8f70.png

前面所述上拉电阻的阻值对输入引脚引起的功耗同样适用于输出拉电阻,因此拉电阻不宜太小,但在输出信号速度比较快的电路下,拉电阻也不宜太大,因为电阻越大电流越小,导致电平变化缓慢。如下图所示为I2C总线上拉电阻的参考最大值(来自存储芯片 AT24C02数据手册)。

f278bc0a559fc964db85f80ea55ceeaa.png

在总线上有些杂散电容CBUS,与上拉电阻RL形成RC充放电电路,上拉电阻越大则充放电常数越大,电平变化越缓慢,如下图所示,严重时导致数据无法正常识别。

23363c16836947008f90cefedabadc99.png

END

更多内容请关注公众号:嵌入式的路上

7ff86ed99706364a788eabdd0b474d73.png

整理自:https://www.cnblogs.com/zhugeanran/p/9289896.html。

版权归原作者所有,如有侵权,请联系删除。
  • 12
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值