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

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

[复制链接]
攻城狮Melo 发布时间:2024-5-29 17:54
本期我们就介绍STM32的GPIO的各种模式。
% ^! ?) Q2 a, `2 K
7 c; R2 V9 U& q1 Q9 p* ~
STM32的GPIO大致可以分为四类:输入模式、输出模式、模拟模式以及复用模式。而每个都有细致的区分和小类。& s: j2 x0 J3 p' p  S) A% a
, a8 w8 i! s2 C8 E  n: x& N
输入模式
/ t* T6 U& T7 ^% H+ J首先是输入模式,顾名思义输入模式就是用来向单片机输入信号的,但是这里的信号需是符合STM32的高低电平信号。
9 m) Q: v# g- @* h0 \5 G9 N( A, |2 m0 z& x9 s! _. t* `
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芯片手册以定。
; L1 J7 @! E- B9 _7 T* A% L
# Y8 g0 h: L; r+ |5 ~
而输入模式根据上拉电阻的不同分为输入上拉、输入下拉、输入浮空,它决定着当没有信号输入的时候,GPIO的电平是高电平还是低电平亦或者是不确定电平。0 J  N0 ?4 C7 e2 q

9 Q0 h2 A' r! V( X8 ~: ^( H4 i# ?
微信图片_20240529175041.png   ~/ U# |! d+ W

3 h( Z- J2 K8 ?1 \输出模式
6 {: C5 R# P' r) C
顾名思义是单片机对外输出信号,这里的信号也是高低电平,外部器件可以读取输出端口的高低电平以达到控制外部器件的目的。, Y+ Q, U# _" W
" U4 y  c' K9 T
输出模式除了上拉下拉电阻用以避免浮空状态的高低电平之外,还区分了推挽输出和开漏输出。7 x' u4 F4 U# O$ M: |/ u4 M
1 p/ K' u4 u1 Y8 }
微信图片_20240529175029.png
; C" Z/ E9 l" K, C( o
/ G4 E. S, W" K+ E3 T如图即为推挽输出的示意图,电流通过两个MOS管/三极管由控制引脚形成一推一挽,故名推挽。9 _/ x3 [) \% Y# o# H9 S4 ~8 o' K% B
1 Z$ A6 {0 Z9 s3 D$ s
推挽输出的好处是其可以有较大的输出电流,如果说后续的负载需要较大的电流的话,推挽输出是一个非常好的选择。2 A1 B8 a, x. T& a

0 c$ A3 O+ u9 n& E3 b但是有利有弊,由于其推挽输出的电路结构,导致不能同时有两个推挽输出的IO口相连接。  X* I, s) X4 ?4 j* w1 t( Z: _: ]

" Z4 H7 |% ]2 X) P8 z' U# C
微信图片_20240529175025.png ! D- {4 C" ~  G4 A
9 o- x, b. o* i/ r& J1 i+ h
否则电流就会通过三极管/MOS管导通,导致GPIO烧毁,因此如果使用GPIO的推挽模式,则必须避免IO的相互连接,也就是线与。
8 X" N2 ?+ ?% N- A* z- B; y9 w2 y+ k) Y. O$ f; h
而另一种模式则是:开漏输出$ i7 @. S. Q2 i% [4 L
7 I' u' p; Q# _7 J) ^
微信图片_20240529175020.png
* C" i; V' V1 p3 e, l/ b
; {1 N( \5 z2 q1 J& `) E
由于其上拉电阻的存在,因此开漏输出的IO可以实现线与。但是同样的是这个上拉电阻的存在,导致其输出能力会不如推挽输出,因此开漏输出通常用在总线应用上,例如I2C的SCL和SDA线通常会挂载多个设备,因此通常这时候我们通常就会使用开漏输出,尤其是使用模拟I2C通讯的时候千万要小心不要使用成推挽输出了。
" e) ~6 c# }$ T& W$ }" Y0 _8 u9 }8 T) T& V$ y/ P7 N
模拟模式2 E- Z, g5 t, E* {
模拟模式通常应用在ADC或者DAC中。1 t4 s( t6 _; O) f6 i, @1 O! i) V3 ~" v

. F! W9 E3 M4 M* r% t& u# w3 o7 ] 微信图片_20240529175016.png 4 ^/ s2 [" L) @' S
% j1 P8 F1 i" m' X1 K
为了减少上拉电阻和下拉电阻对ADC采样或者DAC输出的影响,通常模拟输出会关闭上下拉电阻,保证模拟信号不失真。
  R( C* g2 A) f2 k! i- d& d0 J! ?1 y
微信图片_20240529175013.png
$ R$ @8 L  G  ~7 |  N- v- C4 U5 }7 b

; y0 k- y3 U" \+ l: [3 ^' Y  J: t. }所以如果你的ADC和DAC的准确度有问题的话,可以检查一下是否加了上下拉电阻而不是将IO配置为输入模式。
0 F; [2 U; G# h8 b% D% q+ ~1 k7 U* ^
复用模式
4 h- x4 c* w8 D" Q) \( f
2 `' E9 ^) ~1 ?8 ~ 微信图片_20240529175006.png 3 @- f% f7 O# C  m1 F0 c1 p
1 S* B. ]- w) l* W9 K# D+ Q# Y
复用模式通常作为外设使用,例如硬件I2C,硬件SPI,串口通信等等,复用下,通常这些IO会有其特定的功能,我们一般不将其作为普通的输入输出IO使用。  c- o% w$ _* M) T( w

4 o. ^& Y9 s, I8 v) O% b- \
最后还有一些特殊IO,例如时钟输入IO,事件检测IO等等。
7 j' ~8 e- G2 {, a% l3 ^
' Z/ `+ g4 ]! {) M 微信图片_20240529174959.png 0 @4 ?. c) z: l
" k: i+ Y& w$ y1 f- ~+ `7 B
* @) w; w9 j9 I3 g5 m
转载自:电路小白
' `7 u7 M. f, V6 A7 o如有侵权请联系删除
6 ]$ a, Z7 s/ T- _) l
- ?( F* Y! c! Y3 z1 B
5 x! ]" R# N1 Y6 d' c0 I8 D
收藏 评论0 发布时间:2024-5-29 17:54

举报

0个回答

所属标签

相似分享

官网相关资源

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