STM32 上拉和下拉

目录

上拉和下拉

嵌入式中的两种实现方式

输入模式(读取外部信号)

[2. 输出模式(驱动外部设备)](#2. 输出模式(驱动外部设备))

[补充:施密特触发器(Schmitt Trigger)](#补充:施密特触发器(Schmitt Trigger))


上拉和下拉

上拉和下拉就是给信号线一个"默认状态",防止它"悬浮"。

  • 上拉 (Pull-up) :通过一个电阻将不确定的信号线连接到电源正极(VCC)。这样,当没有其他信号驱动时,该引脚的默认电平就被"拉高"为高电平(逻辑'1')。
  • 下拉 (Pull-down) :通过一个电阻将不确定的信号线连接到地(GND)。这样,当没有其他信号驱动时,该引脚的默认电平就被"拉低"为低电平(逻辑'0')。

上拉和下拉在嵌入式系统中主要有以下几个作用:

  1. 稳定信号,避免"浮空":这是最核心的作用。当一个引脚没有被外部明确驱动时,它会处于"浮空"状态,电平不确定,极易受外界电磁干扰而误动作。上拉/下拉电阻为其提供了一个确定的电平,保证了电路的稳定。

  2. 提高驱动能力:当芯片引脚的输出电流不足以驱动负载时,上拉电阻可以提供额外的电流,帮助将电平"拉"到高电平。相反,下拉电阻可以帮助将电平"拉"到低电平。

  3. 配合"开漏输出" :开漏输出(Open-Drain)是一种特殊的输出模式,它只能输出低电平或高阻态,无法直接输出高电平。因此,必须外接一个上拉电阻,才能在需要时由电阻将电平拉高。这在I2C、SPI等多设备共享的总线通信中非常常见。

  4. 提升抗干扰能力:给信号线一个明确的电平,可以增强其抵抗外界电磁干扰的能力。

嵌入式中的两种实现方式

在嵌入式系统中,上拉/下拉有两种实现方式:

  1. 内部上拉/下拉 :许多现代微控制器(如STM32)的GPIO引脚内部集成了上拉和下拉电阻。你可以通过配置寄存器(如GPIOx_PUPDR)来选择开启上拉、下拉或都不开启(浮空模式)。内部的通常是"弱上拉/下拉",提供的电流较小。

  2. 外部上拉/下拉 :如果内部电阻不满足需求,或者芯片没有内部电阻,就需要在电路板上,在引脚和VCC(上拉)或GND(下拉)之间焊接一个物理电阻

输入模式(读取外部信号)

输入模式的核心是**"检测外部电平"**。主要区别在于引脚内部是否连接电阻,以及信号是否走模拟通道。

  • 输入浮空:内部既不上拉也不下拉。引脚电平完全由外部电路决定。

    • 特点:电平极易受外界电磁干扰而跳动。

    • 场景极少单独使用。通常用于外部已有明确上拉/下拉电阻,或者用于I2C总线等需要"线与"逻辑的输入检测。

  • 输入上拉:内部通过一个约 30k~50kΩ 的电阻连接到 VCC(高电平)。

    • 特点:默认读取为高电平(1)。只有当外部强行拉低时,才会读到低电平(0)。

    • 场景常用。用于检测按键(按键一端接GND,另一端接引脚)或非反向的TTL电平信号。

  • 输入下拉:内部通过电阻连接到 GND(低电平)。

    • 特点:默认读取为低电平(0)。只有当外部强行拉高时,才会读到高电平(1)。

    • 场景:用于检测另一端接VCC的按键或传感器信号。

  • 模拟输入:信号不经过TTL施密特触发器(数字逻辑整形电路),直接进入内部的ADC(模数转换器)。

    • 特点 :数字寄存器读取到的值无效(始终为0)。

    • 场景唯一用于读取模拟电压(如温度传感器、光敏电阻、麦克风信号)的模式。

2. 输出模式(驱动外部设备)

输出模式的核心是**"控制引脚电压"** 。关键区别在于**"推挽"** 和**"开漏"** ,以及是CPU控制 还是外设(如串口、定时器)控制

  • 推挽式输出:内部由两个互补的MOS管组成(一个接VCC,一个接GND)。

    • 特点 :输出高电平时,MOS管直接连接VCC,驱动能力强(灌电流/拉电流可达20mA左右);输出低电平时,直接连接GND。高低电平转换速度快。

    • 场景最常用。用于驱动LED、无总线的普通IO控制、SPI(时钟线)等。

  • 开漏输出内部只有接GND的N-MOS管,没有接VCC的P-MOS管。

    • 特点 :输出低电平(0)时有效导通;输出高电平(1)时,引脚处于高阻态(悬空),必须在外部加上拉电阻才能输出高电平。

    • 场景解决电平不匹配 (如3.3V单片机控制5V设备,外部接5V上拉);实现"线与"功能(多个设备挂载在同一条总线上,谁拉低就拉低,不会短路)。

  • 推挽式复用功能 :引脚输出由片上外设(如USART_TX、SPI_MOSI、PWM定时器)直接控制,驱动电路同样是推挽结构。

    • 场景:绝大多数高速数字通信(UART发送脚、SPI信号、输出比较PWM)。
  • 开漏复用功能 :引脚输出由片上外设控制,但驱动电路是开漏结构。

    • 场景专用于I2C总线的SDA和SCL(因为I2C协议要求多主机时钟同步和响应应答,必须使用开漏)。另外也用于某些需要电平转换的复用接口。

补充:施密特触发器(Schmitt Trigger)

施密特触发器(Schmitt Trigger)可以简单理解为:

一种能把不稳定电压转换成稳定数字信号(0/1)的电路,主要作用是抗干扰、防抖动。

普通输入:

复制代码
电压接近临界值 → 可能 0、1 来回跳

施密特触发器:

复制代码
电压升高超过某值 → 输出1
电压降低低于某值 → 输出0
中间区域保持原状态

它有两个特点:

  • 抗噪声:小幅电压波动不会误判
  • 防抖动:按键等慢变化信号不会反复跳变

在 STM32 的 GPIO 输入中:

复制代码
引脚 → 施密特触发器 → 数字0/1 → CPU读取
相关推荐
sramdram2 小时前
高速低功耗stt-mram工业级存储方案
嵌入式硬件·mram·stt-mram·低功耗stt-mram
嘶哈哈哈4 小时前
雷迅 CAN Babel 新品测评:一个小巧的 CAN/UART 双功能 USB 调试适配器
单片机·嵌入式硬件
Zevalin爱灰灰4 小时前
模拟信号链电路——感应触摸电路
单片机·嵌入式硬件
测试专家4 小时前
PCI-1553B板卡在 Windows Server 2016 服务器安装流程详解
服务器·windows·单片机
国科安芯5 小时前
还是4位?ASC8T245S 与 ASC4T245S 的双向电平转换选型实战
单片机·嵌入式硬件·物联网·fpga开发·机器人·云计算
Freak嵌入式6 小时前
RP2040 内核电源调节器:软件可调电压 + 三种模式,低功耗设计的利器
人工智能·单片机·嵌入式硬件·机器人·开源
ACP广源盛139246256736 小时前
YLB3118 存储桥接芯片完整机会点@ACP#联动曙光 8000
大数据·人工智能·分布式·单片机·嵌入式硬件
蝎蟹居7 小时前
GBT 4706.1-2024逐句解读系列(31) 第7.21.1条款:说明书怎么写符合标准要求
人工智能·单片机·嵌入式硬件·物联网·安全
hongmai6668887 小时前
乐鑫ESP32-C61-WROOM-1模组:Wi-Fi 6与蓝牙LE双模的RISC-V新选择
单片机·嵌入式硬件·risc-v