上拉电阻和下拉电阻

一、为什么要上拉or下拉?

在数字逻辑电路中,一个信号不是0,就是1。正是因为这样,数字电路的设计才简单,可靠。

通常,用电压5v(或者接近5V)代表 on 开状态,代表高电平,对应状态 1。用电压0v (或者接近0v)代表off关状态,代表低电平,对应状态0。

有些开发板是基于3,3V的,因此使用3.3V作为高电平。

那么试想如果一个线路中的电压处于不确定的状态(例如一个引脚不和任何其它回路连通时),那我们就说它的电压是浮动的,他会随着时间不断变化、跳动,而且很容易受到外界环境的影响。处于这种不确定状态的电路会被随机解释为高或者低电平。 这种现象也叫电子噪声

然而程序必须是严格准确的,所以电路的设计一定要避免线路电压处于浮动状态

我们可以使用上拉电阻或者下拉电阻将电路的电压在任何时候都保持在确定的状态下,这就是上拉电阻和下拉电阻的作用

上拉电阻

作用:将一个未知的电平拉高到稳定的高电平状态。

当S2没按下时(不确定时)Input通过2个电阻和+5V连接(注意电路中并没构成回路,因此不会有压降,所以Input端依然是高电平),为高电平当S2按下时+5V,R2,S2,GND形成回路,R2 电阻大,产生压降大,因此后面的Input就是低电平

因此,可以通过Input端的电平来判断S2是否按下。

相比下拉电阻,上拉电阻在数字电路中使用的更多。

 

下拉电阻

作用:将一个未知的电平拉低到稳定的低电平状态。

上图中,我们要判定input这个引脚,是高电平还是低电平。

按钮S2没按下时(不确定时),Input通过2个电阻接到GND,是稳定的低电平 。 当S2按下时,+5V ,S2 , R2 ,GND这条路导通,而Input接在R2的前面,因此会得到高电平

因此,我们可以通过Input端是高电平还是低电平判断S2是否按下

如果没有下拉电阻R2,那么S2没按下前Input没有和任何东西相连,它的电平处于浮动状态且很容易受环境影响,带来电子噪声

  • 上拉是将不确定信号通过一个电阻钳位在高电平,电阻同时限流作用;
  • 下拉是将不确定信号通过一个电阻钳位在低电平。

二、应用

  • 对于高有效的使能控制信号(EN),如果希望电路系统在上电后应处于无效状态,则会使用下拉电阻(不确定工作状态时给低电平);假设这个使能信号是用来控制电机的,如果悬空的话,此信号线可能在上电后(或者运行中)受到其他噪声干扰而误触发为高电平,从而导致电机出现不期望的转动,这肯定是所不希望的,此时可以增加一个下拉电阻
  • 相应地,对于低有效的复位控制信号(RST#),希望上电后复位后处于无效状态,则应使用上拉电阻(不确定工作状态时给高电平)

拉电阻作为输出时牵涉到的知识点会更多一些,但本质的功能也是将电平箝位,最常见的输出上拉电阻出现在开集(Open Collector,OC)或开漏(Open Drain,OD)结构的引脚。

我们有很多芯片的输出引脚是推挽输出结构(Output Push-Pull),如下图所示(还有一种反相输出的结构,本质也是一样的):在这里插入图片描述

推挽输出结构引脚的特点是:无论引脚输出高电平“H”还是低电平“L”,都有比较强的驱动能力(输入或输出电流能力)!

当推挽输出结构的控制信号为低电平“L”时,Q1截止Q2导通,电流I1由电源VCC经负载RL与三极管Q2流向公共地,我们称此电流为灌电流(Sink Current),也就是外部电流灌入芯片内部,如下图所示:

在这里插入图片描述

相应的,当推挽输出结构的控制信号为高电平“H”时,Q1导通Q2截止,电流I1由电源VCC经三极管Q1与负载RL流向公共地,我们称此电流为拉电流(Source Current),也就是芯片内部可以向外提供的电流(所以称之为“源电源”),从另一个角度讲,也就是外电路可以从芯片中拉走多少电流,如下图所示:

在这里插入图片描述

### 芯片上的上拉电阻下拉电阻 #### 上拉电阻的工作原理 实现上拉电阻功能的原理是利用电阻器与电路中其他元件(如电压源)的组合,确保当外部信号缺失时,引脚处于逻辑高电平状态。具体来说,在没有输入信号的情况下,电流会流经该电阻并使连接点呈现接近电源电压的状态[^3]。 ```c // C语言模拟GPIO配置上拉电阻 void configure_pull_up_resistor(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin){ // 设置为输入模式,并启用内部上拉电阻 GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitStruct.Pin = GPIO_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLUP; HAL_GPIO_Init(GPIOx, &GPIO_InitStruct); } ``` #### 下拉电阻的工作原理 把一个信号通过一个电阻接到低电平(地),叫做下拉,这个电阻充当下拉电阻的角色。其主要目的是将电路中的某个节点或信号线在没有其他驱动信号时,稳定地保持在一个低电平状态。这有助于防止浮空输入端接收到不确定的电压水平而引起误操作[^2]。 ```c // C语言模拟GPIO配置下拉电阻 void configure_pull_down_resistor(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin){ // 设置为输入模式,并启用内部下拉电阻 GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitStruct.Pin = GPIO_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLDOWN; HAL_GPIO_Init(GPIOx, &GPIO_InitStruct); } ``` #### 区别 两者的主要区别在于它们所维持的默认电平不同:上拉电阻使得未被主动控制的线路倾向于高电平;相反,下拉电阻则让这些线路趋向于接地即零伏特或者说是低电平。这种差异决定了各自适合的应用场合以及如何影响整个系统的性能表现[^4]。 #### 应用场景 对于TTL驱动CMOS的情况而言,由于这两种技术标准之间存在不同的电气特性,因此可能需要用到特定类型的电阻来匹配接口需求。例如,在某些情况下可能会采用上拉措施以满足CMOS器件所需的较高阈值电压要求[^1]。而在需要确保闲置状态下输出始终为低的情形下,则更有可能会选择使用下拉方案。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cheeky_man

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值