分输出信号类型 和供电 两部分说,STM32 主流为3.3V IO ,核心结论先放前面:5V 传感器不能无脑直连,分情况处理。
一、先分清两个概念:供电电压 + 信号电平
-
传感器供电
- 多数 5V 传感器:可以用 5V 单独供电,STM32 开发板一般都引出 5V 引脚,直接给传感器供电没问题。
- 严禁:用 STM32 的 3.3V 引脚给 5V 传感器供电,大概率工作异常、带不动。
-
传感器输出信号(关键!) STM32 普通 GPIO额定耐压大多 3.3V ,长期接 5V 高电平会烧毁 IO 口。
二、按传感器输出类型分类处理
1. 数字输出传感器(高低电平:0V/5V)
情况 A:开集电极 / 开漏输出(常见:继电器模块、部分霍尔、编码器)
✅ 可以直接接 STM32 3.3V IO 这类器件内部没有上拉,高电平由外部上拉决定,STM32 开启 ** 内部上拉(3.3V)** 即可正常识别。
情况 B:推挽输出(最常见:温湿度、红外、按键模块、超声波 HC-SR04 等)
❌ 绝对不能直接把 5V 高电平接到 STM32 GPIO 5V 高电平超过 3.3V IO 耐压,长期使用必烧引脚。 解决方案(三选一,按优先级)
-
串限流电阻(临时测试首选) 信号脚串联 1k~2.2kΩ 电阻再接 STM32 IO。 原理:限流降压,保护芯片,短距离、低速完全够用。
-
分压电路(稳定方案) 用两只电阻做分压,把 5V 降到 3.3V 以内。 推荐阻值:上拉 1k,下拉 2k(5V → 3.33V,接近 3.3V,可安全识别)。
-
电平转换模块(长期工程首选) 单向 5V→3.3V 电平转换板,一路对应一路,稳定可靠。
2. 模拟输出传感器(输出 0~5V 模拟电压)
比如模拟光敏、模拟声音、模拟湿度等,输出 0~5V 连续电压 STM32 ADC 标准输入范围:0 ~ 3.3V
- 电压超过 3.3V → ADC 读取异常 + 损坏引脚 必须做分压,把 0~5V 转为 0~3.3V。
分压公式: 设分压后最大电压 = 3.3V Vout=Vin×R1+R2R2 代入 Vin=5V, Vout=3.3V 取常用阻值:R1=1kΩ,R2≈2kΩ 分压后最大约 3.33V,适配 STM32 ADC。
3. 串口 / I2C / SPI 通讯类 5V 传感器
和前面 I2C 互通逻辑一致:
- I2C/SPI/UART 5V 信号 → 不能直连 3.3V STM32
- 推荐:双向电平转换模块(I2C 必须双向)
- 临时测试:串 1k 电阻(仅低速、短距离)
三、特殊例外:部分 STM32 5V 容忍 IO
少数型号(如 STM32F103 部分引脚)标注 5V Tolerant(5V 容忍) 这类引脚可以直接接收 5V 数字信号 ,不用电阻。 判断方法:看芯片手册引脚定义,标注 FT = 5V 容忍。
即便有 FT 引脚,模拟输入 ADC 依然不能接 5V。
四、快速接线总结(新手直接照做)
-
供电 传感器 VCC → STM32 板上 5V 传感器 GND ↔ STM32 GND(必须共地)
-
数字信号 (推挽 5V 输出) 传感器信号脚 → 串 1k 电阻 → STM32 GPIO
-
模拟信号 (0~5V) 信号脚接 1k+2k 分压电路 → STM32 ADC
-
I2C/SPI/ 串口通讯传感器 统一使用 3.3V↔5V 电平转换板
五、避坑提醒
- 只串电阻能保护 STM32,但高电平识别阈值略变,低速场景完全不影响。
- 不要用 3.3V 给 5V 传感器供电,很多模块会不工作。
- GND 必须连通,否则所有信号全部错乱。
- 超声波 HC-SR04、DHT11、红外寻迹、火焰传感器这类经典 5V 模块,一律串 1k 电阻再进 STM32。