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读取
相关推荐
周洲08304 小时前
STM32 最简工程搭建|标准库/HAL库规范化模板,零冗余可直接落地
stm32·单片机·嵌入式硬件
ACP广源盛139246256735 小时前
M6/M5 Pro Mac mini 端侧 AI 落地@ACP#YLB3116 中端多盘存储扩展在 AI 服务中的机会与应用场景
大数据·网络·数据库·人工智能·嵌入式硬件·macos
ACP广源盛139246256736 小时前
M6/M5 Pro Mac mini 端侧 AI 新形态@ACP#GSV5800 Serdes 长距离视频传输在 AI 服务中的机会与落地场景
大数据·网络·数据库·人工智能·嵌入式硬件·macos·音视频
OIDCAT7 小时前
国产USB转千兆网卡芯片CH398-RTL8153国产替代实测与选型
网络·嵌入式硬件·智能硬件·国产芯片·usb转千兆网卡
HRTOS8 小时前
HRTOS 4.0 驱动库:06_Storage 存储设备驱动——24C02 EEPROM与I²C驱动开发
c语言·驱动开发·嵌入式硬件·51单片机
周洲08308 小时前
STM32 串口不定长接收|空闲中断 IDLE 方案,无固定帧长限制,项目实战
stm32·单片机·嵌入式硬件
我和头发拼了10 小时前
STM32--10硬件读写MPU6050
stm32·单片机·嵌入式硬件
糖糖单片机设计12 小时前
基于STM32的鱼缸水质检测系统
stm32·单片机·嵌入式硬件
HRTOS12 小时前
HRTOS 4.0 正式发布:Driver Library 基础外设驱动模块介绍
驱动开发·单片机·嵌入式硬件·51单片机
染予13 小时前
20个点位下发该如何正常操作?
单片机·嵌入式硬件