上拉电阻与下拉电阻总结 与 GPIO框图分析


在嵌入式领域 上下拉电阻应用非常广泛。近期项目有用到,这里总结一下相关使用。

一、相关概念介绍

IO引脚的三态输出之高阻态—将逻辑门与系统其他部分隔离,电平外部控制

三态门/三态输出电路 三种状态为:高电平,低电平,高阻态;
计算机中的记忆元件由触发器组成,而触发器只有01两个状态。如果要在一条信号线上连接多个触发器,而每个触发器可以根据需要与信号线连通或断开,当连通时可以传送0或1,断开时对信号线上的信息不产生影响,此状态为高阻态
高阻态从端口看进去,对GND或者VCC的电阻都很大,什么也不输出了,引脚上的电平可由其它电路来控制,外面任何弱驱动都能改变该点的电位。
使用场景举例:当一个总线上 一个主设备和一个从设备通信的时候,其他设备都处于高阻态,不影响正在通信设备。
在这里插入图片描述
三态原理举例:已下图三态输出缓冲器:IN为输入,OUT为输出,E是使能。当E=H,IN=H,下面Nmos关闭,上面Pmos导通,Out=H。当输入E=H,IN=L,下面Nmos打开,上面Pmos关闭,Out=L。当E=L,两个mos都关闭,输出为高阻Out=Z。
在这里插入图片描述

IO引脚输出模型 推挽电路 与 开漏电路—单独开漏无高电平驱动能力

首先讲IO输出的电流描述,输入端有电流流进称为吸电流(被动);输出端有电流流出称为拉电流(主动);输出端有电流流入称为灌电流(被动)。灌电流能力与拉电流能力也称为芯片引脚的驱动能力,对于任何给定的芯片,引脚的驱动能力都是有限的。下面介绍两种输出模型:
1)推挽输出(Push-Pull Output):由两个MOS或者三极管受到互补控制信号的控制,两个管子始终处在一个导通另一个截止的状态。推挽输出既可以输出低电平(只下方Mos导通),也可以输出高电平(只上方Mos导通)。推挽输出可以吸电流也可以灌电流,相对于开漏输出电平取决于IC电源是固定的,一条总线上输出期间只能有一个推挽。
在这里插入图片描述
2)开漏输出(open drain):开漏OD门是针对MOS管来说,针对三极管来说叫开集OC门。单独的开漏输出只能输出低电平(导通Mos),不导通时为高阻态。高电平需要上拉电阻才能输出,通过控制连接VCC大小设置电平,因此在需要进行指定高电平时适合使用开漏输出(推挽固定IC电源)。开漏还能实现”线与“逻辑(I2C等接口总线应用中),利用外电路提高驱动能力,利用上拉电阻提供高电平,没有上拉电阻只能输出低电平。
在这里插入图片描述

二、上下拉电阻原理介绍

什么是上下拉电阻?—把IO口用电阻拉到正压VCC(上拉) 或 接地GND(下拉)

上拉/下拉电阻设计时一般不能影响正常的信号电平,常见上拉/下拉电阻阻值是1k、4k7或10k。典型上拉电阻如10K左右,太大了抗干扰能力弱,太小了,会导致电流过大。
在这里插入图片描述

使用场景一:将不确定信号钳位高电平(上拉) 或 低电平(下拉)

单片机刚上电的时候电平是不定的,初始状态基本默认都为输入,切换到输出引脚有一个过程。输入端如果是高阻状态,或高阻抗输入端处于悬空状态,此时需要加上拉或下拉电阻,以免受到随机电平的影响(作为输入读取到的状态一直在变化)进而影响电路工作。同时悬空就比较容易接收外界的电磁干扰,为了防止静电造成损坏,不用的引脚不能悬空,一般接上拉电阻降低输入阻抗,提供泄荷通路。

使用场景二:开漏输出加上拉电阻实现 线与逻辑,如I2C总线用法

I2C总线协议在两条通信线上使用了上拉电阻。当设备处于非激活状态,它们“释放”掉通信线并使它们的输出端呈现高阻态,这样使它们的高低电平不影响其他电路。当总线上所有的设备都“释放”掉通信线时,对输出目标电路的唯一影响就是上拉电阻将输出端的电平拉高。当一个设备需要通信时,这个输出端脱离高阻态,并使得通信线的输出端电平降低。

使用场景三:开漏输出加上拉电阻 提高电压准位

当TTL电路驱动CMOS电路时,如果TTL电路输出的高电平低于CMOS电路的最低高电平,这时就需要在TTL的输出端接上拉电阻,以提高输出高电平的值;

使用场景四:加大引脚驱动能力,上拉加强拉电流能力,下拉加强吸电流能力

单片机输出高电平驱动力有限,由于后续电路的影响是达不到VCC,可通过上拉电阻可以提高拉电流驱动能力。下拉电阻情况类似,让单片机引脚输出低电平,结果由于后续电路影响输出的低电平达不到GND,所以接个下拉电阻。

三、GPIO典型框图分析

下面我们总结一下典型的芯片GPIO模型 及其各部分功能:
在这里插入图片描述

1、I/O 端口作为输入—读取01状态、上下电阻拉可配

输出缓冲器被关闭、施密特触发器输入被打开、根据xx寄存器中的值决定是否打开上拉和下拉电阻
输入数据寄存器每隔 1 个 AHB1 时钟周期对 I/O 引脚上的数据进行一次采样、对输入数据寄存器的读访问可获取 I/O 状态
在这里插入图片描述

2、I/O 端口作为输出—可选开漏/推挽、上下电阻拉可配、可读取输入

输出缓冲器被打开、对输出数据寄存器的读访问可获取最后的写入值:
— 开漏模式:输出寄存器中的“0”可激活 N-MOS,而输出寄存器中的“1”会使端口保持高组态 (Hi-Z)(P-MOS 始终不激活)。
— 推挽模式:输出寄存器中的“0”可激活 N-MOS,而输出寄存器中的“1”可激活P-MOS。
施密特触发器输入被打开、根据xx寄存器中的值决定是否打开弱上拉电阻和下拉电阻
输入数据寄存器每隔 1 个 AHB1 时钟周期对 I/O 引脚上的数据进行一次采样、对输入数据寄存器的读访问可获取 I/O 状态
在这里插入图片描述

3、I/O 端口作为复用功能—可配置输入输出、上下拉电阻可配、可读取输入

可将输出缓冲器配置为开漏或推挽、输出缓冲器由来自外设的信号驱动(发送器使能和数据)
施密特触发器输入被打开、根据xx寄存器中的值决定是否打开弱上拉电阻和下拉电阻
输入数据寄存器每隔 1 个 AHB1 时钟周期对 I/O 引脚上的数据进行一次采样、对输入数据寄存器的读访问可获取 I/O 状态
在这里插入图片描述

4、I/O 端口作为模拟配置—输入输出不可配、上下拉不可配

输出缓冲器被禁止、施密特触发器输入停用,I/O 引脚的每个模拟输入的功耗变为零。施密特触发器的输出被强制处理为恒定值 (0)。
弱上拉和下拉电阻被关闭、对输入数据寄存器的读访问值为“0”。
在这里插入图片描述

参考

什么是数字芯片的高阻态:https://www.bilibili.com/video/BV1UG41187YV/
上拉电阻的通俗解释,你真正知道吗?:https://www.bilibili.com/video/BV1W34y1579U/
下拉电阻的通俗解释,你真正知道吗?:https://www.bilibili.com/video/BV1ZU4y1Q7eo/

  • 7
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值