一.什么是上/下拉电阻
上拉、下拉电阻统一称为拉电阻,作用是将状态不确定的信号线通过一个电阻将其箝位至高电平(上拉)或低电平(下拉)
这里有人可能会疑惑?
什么叫状态不确定的信号?
在数字电路中,通常有三种状态:0(低电平)、1(高电平)、浮空(不确定、随机)
在江科大STM32学习笔记(上)中GPIO章节中讲述位结构的时候有提到过上/下电阻。
1.1 开启上拉电阻或下拉电阻的作用
- 确定默认电平状态:
- 上拉电阻:当开启上拉电阻时,GPIO引脚的默认电压为高电平。STM32内部的上拉电阻是一个弱上拉,即通过此上拉电阻输出的电流很小。如果需要输出较大的电流,则需要外接上拉电阻,以增加导线的输出电流。
- 下拉电阻:开启下拉电阻时,引脚的默认电压为低电平。下拉电阻的作用是降低导线的输出电流,确保在特定条件下输出低电平。
- 防止引脚悬空:
- 当上拉和下拉电阻都不开启时,GPIO引脚处于浮空模式,此时引脚的电压是不确定的,可能会随时间改变。为了避免这种情况,通常会将引脚设置成上拉或下拉模式,以确保引脚有一个确定的默认电平状态。这有助于防止引脚悬空,避免产生积累电荷或静电荷,从而造成电路不稳定。
- 电路设计和保护:
- 在电路设计中,根据具体的应用需求选择上拉或下拉模式。例如,在检测信号时,如果被检测信号接到电源的低电位(如通过按键接到VSS),则应配置为上拉模式;反之,如果接到高电位(如通过按键接到VDD),则应配置为下拉模式。
- 内部的上拉和下拉电阻阻值典型值为40K欧姆,最大为50K欧姆。如果需要提高信号波形的爬升或下降速率,可以在IO口外部增加强拉电阻,以减小时间常数,加快波形变化。但需要注意的是,强拉电阻由于电流较大,可能会增加系统的功耗并引起发热问题。
二.什么是弱上下拉和强上下拉?
那么上下拉电阻阻值该取多大?
首先阻值不能太小,因为太小,开关闭合时会产生较大的电流,会引起一来功耗大,二来也不安全。试想一下电阻为0是什么后果。
另外阻值也不能太大,阻值太大,上拉/下拉的作用就变弱,越大越接近于开路,电流太小,引脚识别不了,开关断开时IO就越接近于浮空状态,就越容易受干扰。试想一下阻值无穷大是什么效果。
所以这个电阻既不太大,也不太小,一般是几K到几十K大小,兼顾了功耗和上下拉作用。
这里就引入了强弱的概念,弱就是阻值大,强就是阻值小。
三.通讯中的上拉电阻
1.串口-uart的上拉电阻
这个人 讲的很好,可以看他的这篇 ❤️ # STM32系列-串口-uart-软件引脚内部上拉 或者 外部电阻上拉-原因问题的搜寻❤️
2.I2C的上拉电阻
I2C 通讯协议(Inter-Integrated Circuit)是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强, 不需要USART、CAN等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。
I2C总线是一种用于芯片之间进行通信的串行总线。它由两条线组成:串行时钟线(SCL)和串行数据线(SDA)。这种总线允许多个设备在同一条总线上进行通信。
首先为什么I2C是开漏输出?
- 防止短路
I2C协议支持多个主设备与多个从设备在一条总线上,如果不用开漏输出,而用推挽输出,会出现主设备之间短路的情况。所以总线一般会使用开漏输出。
- 可以实现“线与”逻辑,可以减少一个与门的使用,简化电路。
为什么要接上拉电阻?
连接上拉电阻后,才可以输出高电位。
- 漏极开路是为了防止I2C上连接多个主设备与多个从设备时出现短路;
- 上拉电阻的存在是为了在使用漏极开路之后,可以输出高电平;
- “线与”是为了在多个主设备同时占用总线时,具有仲裁的能力。
未完待续
参考文章:
江科大STM32学习笔记(上)
通俗理解STM32中的上/下拉电阻
到底什么是弱上下拉和强上下拉?
I2C中为什么线与?为什么要有上拉电阻?