你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于STM32中GPIO四种模式经验分享

[复制链接]
攻城狮Melo 发布时间:2024-5-29 17:54
本期我们就介绍STM32的GPIO的各种模式。
' @+ z/ g! U2 u
* v$ g( _) U$ P
STM32的GPIO大致可以分为四类:输入模式、输出模式、模拟模式以及复用模式。而每个都有细致的区分和小类。
2 [8 Z: ]1 J0 L. M. }3 g: m
/ \0 b  J# I* Y' o* D2 L- d" A
输入模式
0 ^2 q( `) J+ h首先是输入模式,顾名思义输入模式就是用来向单片机输入信号的,但是这里的信号需是符合STM32的高低电平信号。, F0 W8 x9 N! z+ U+ s- V* C* S7 }
1 p$ g0 a" [) D; A
STM32单片机的IO口电平兼容CMOS电平和TTL电平。对于逻辑电平0,所代表的电压范围在0.8v以下,而大于2v的话则代表逻辑1。STM32工作电压范围为2V ≤ VDD ≤ 3.6V。对于COMS端口,逻辑0的电压范围为-0.3V ≤ VIL ≤ 1.164V。至于高电平,STM32支持5v和3.3v。具体须看STM32芯片手册以定。; z4 g/ ?# a/ ]0 j; T4 i
5 L0 q4 K% k( S( A: B6 q' Z0 [: Y
而输入模式根据上拉电阻的不同分为输入上拉、输入下拉、输入浮空,它决定着当没有信号输入的时候,GPIO的电平是高电平还是低电平亦或者是不确定电平。
7 e# f* y& [" V2 Q/ c5 X
' z- t2 ?  p" s8 |5 i2 g+ g
微信图片_20240529175041.png
' ~  L+ \( l: @& u% {
, B9 Y- n8 v* a2 g, ~
输出模式

. m" {1 n" ?) e* }* D% x顾名思义是单片机对外输出信号,这里的信号也是高低电平,外部器件可以读取输出端口的高低电平以达到控制外部器件的目的。( I) G" M4 j6 \9 j. F  }

9 ]) t# U$ w9 z! o6 Q
输出模式除了上拉下拉电阻用以避免浮空状态的高低电平之外,还区分了推挽输出和开漏输出。
% F; P; ]( E1 r8 A. H
3 I  e* d# J" I 微信图片_20240529175029.png , |3 m: E) U: H0 G6 V- k) C) K' \

4 P5 b) P1 I( f' A! U. [) S如图即为推挽输出的示意图,电流通过两个MOS管/三极管由控制引脚形成一推一挽,故名推挽。1 X7 m9 I$ Z- e: _0 D4 p/ |

7 |$ k) y! N9 n5 z7 Y( x推挽输出的好处是其可以有较大的输出电流,如果说后续的负载需要较大的电流的话,推挽输出是一个非常好的选择。
/ o2 z. Z6 y  _

+ h" x! h, u1 q* ^6 R5 g但是有利有弊,由于其推挽输出的电路结构,导致不能同时有两个推挽输出的IO口相连接。& C5 f- M5 _! @/ j! u7 x
  a0 P: E. H2 F* e) F. P2 I
微信图片_20240529175025.png ) W: m  j* j9 D" o# |
2 |7 K! y* b" c0 Z. |1 t: h
否则电流就会通过三极管/MOS管导通,导致GPIO烧毁,因此如果使用GPIO的推挽模式,则必须避免IO的相互连接,也就是线与。
' m6 X; b: \, N% _7 _
- n' `' a) B% I" ~$ h# R
而另一种模式则是:开漏输出
8 O  n) {: F" I9 g- H1 {% R1 D  W8 I: W% W4 ?4 Q' `
微信图片_20240529175020.png
: S; B$ G; ~7 n" c/ @
; U5 ~# d, ~5 V% x+ ?  F5 a
由于其上拉电阻的存在,因此开漏输出的IO可以实现线与。但是同样的是这个上拉电阻的存在,导致其输出能力会不如推挽输出,因此开漏输出通常用在总线应用上,例如I2C的SCL和SDA线通常会挂载多个设备,因此通常这时候我们通常就会使用开漏输出,尤其是使用模拟I2C通讯的时候千万要小心不要使用成推挽输出了。+ Q, R- N* F# o
, u  c2 }* s& ?$ K+ y# B
模拟模式) w; {: g3 T- L) {' y
模拟模式通常应用在ADC或者DAC中。7 @1 R9 x+ o% T: B5 _
# |6 f  P, m7 {- e8 f
微信图片_20240529175016.png - U' G( P6 U! c3 T8 {
, i. i& E4 n6 T8 |$ j( s! Z
为了减少上拉电阻和下拉电阻对ADC采样或者DAC输出的影响,通常模拟输出会关闭上下拉电阻,保证模拟信号不失真。7 f. @& r4 d" y4 _  J2 a
# S8 I: u  M% z% n) H# K% D) L
微信图片_20240529175013.png ! S0 _% W# Z8 r: c& s/ K
( w0 i* L8 F$ C) q' J
所以如果你的ADC和DAC的准确度有问题的话,可以检查一下是否加了上下拉电阻而不是将IO配置为输入模式。
' c7 t. [1 L/ l$ [5 ~: r5 b& V: V8 i2 H5 V# Q4 Q2 U: Y
复用模式' l- ~* K7 O# D5 m4 H/ y

& e" l" _. o6 j: Z8 U 微信图片_20240529175006.png
: G; e  U3 T& ^3 K

: a7 ~) G5 |5 u7 z8 ~' ~复用模式通常作为外设使用,例如硬件I2C,硬件SPI,串口通信等等,复用下,通常这些IO会有其特定的功能,我们一般不将其作为普通的输入输出IO使用。
3 V6 y' v0 T0 L' C
" i4 d( i, K8 n
最后还有一些特殊IO,例如时钟输入IO,事件检测IO等等。
0 i  P, i$ }* I0 x
7 r/ R3 \  K% D 微信图片_20240529174959.png
! u  Z: C* |6 j7 J; n0 F; v3 U( g# D- {3 q2 k- S  z, ^
  b* d  F( l# ^
转载自:电路小白
, @# k' s4 N4 U% O, W1 F如有侵权请联系删除
0 v0 k, O" m1 |' \' A3 [+ W' E& l2 \0 [9 {1 L
2 J; S/ R2 {7 F8 D" ]
收藏 评论0 发布时间:2024-5-29 17:54

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版