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

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

[复制链接]
攻城狮Melo 发布时间:2024-5-29 17:54
本期我们就介绍STM32的GPIO的各种模式。
# Q7 T, R& b$ S) r# `2 \% l
6 p8 F+ C4 }# {6 v: Q
STM32的GPIO大致可以分为四类:输入模式、输出模式、模拟模式以及复用模式。而每个都有细致的区分和小类。( N/ X4 b3 _( H5 b$ L, \5 k

/ ]0 H( o3 ~! h0 [
输入模式% \$ ~! i4 R$ w& h4 T) ^, G
首先是输入模式,顾名思义输入模式就是用来向单片机输入信号的,但是这里的信号需是符合STM32的高低电平信号。
* W7 B4 H8 v3 A" f! k3 N! J9 `6 c  v+ x) 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芯片手册以定。, l3 h+ U5 c* g2 S, U$ J
+ S9 L0 `2 Q1 s# s2 t/ z9 m; @
而输入模式根据上拉电阻的不同分为输入上拉、输入下拉、输入浮空,它决定着当没有信号输入的时候,GPIO的电平是高电平还是低电平亦或者是不确定电平。' _% z' W9 y) {2 \" f
/ e& v% y1 _7 d8 j( ]2 ?2 W& A
微信图片_20240529175041.png
0 J8 E' c( H0 }- H' l$ s

- g) j( n( C, [: l7 Z- Q输出模式

8 N- t* s  }8 i! r" `- y顾名思义是单片机对外输出信号,这里的信号也是高低电平,外部器件可以读取输出端口的高低电平以达到控制外部器件的目的。
( L) l5 y, e- B, A2 f- I: l6 r+ n4 @8 G  z9 N
输出模式除了上拉下拉电阻用以避免浮空状态的高低电平之外,还区分了推挽输出和开漏输出。# v* @9 d' I$ m- Q; X6 k( b  l

- v' i2 ]$ u% `4 C$ y' _! p 微信图片_20240529175029.png
) w9 k' h) e, y) J8 Q' W3 i1 h, N$ ~! J' ]" h4 R; W% x
如图即为推挽输出的示意图,电流通过两个MOS管/三极管由控制引脚形成一推一挽,故名推挽。
9 R- `" o# }- k6 p9 u! h+ \0 B  N
! [6 V* ^. Z, z' {3 [推挽输出的好处是其可以有较大的输出电流,如果说后续的负载需要较大的电流的话,推挽输出是一个非常好的选择。5 O+ O7 Y8 f4 c% {

( v# ?: U0 q/ u+ O- Y但是有利有弊,由于其推挽输出的电路结构,导致不能同时有两个推挽输出的IO口相连接。7 {  h: q4 P7 k) f: m" [
# ^9 o$ `8 d% b
微信图片_20240529175025.png
1 `; Q3 q# P4 a* w0 f. b+ a. q( P: p3 C3 H, a% N
否则电流就会通过三极管/MOS管导通,导致GPIO烧毁,因此如果使用GPIO的推挽模式,则必须避免IO的相互连接,也就是线与。
% r: R5 J. [' K8 {5 L
( |$ Q9 r8 s/ J, o2 n
而另一种模式则是:开漏输出5 k: w) y/ ?6 c9 @! M4 f

) g2 K, t& V- ^2 I, L0 X, Q* \) ? 微信图片_20240529175020.png / N" |7 S0 }1 h' {0 g8 G# }* K
+ \- [, U) c$ X' h2 @& k
由于其上拉电阻的存在,因此开漏输出的IO可以实现线与。但是同样的是这个上拉电阻的存在,导致其输出能力会不如推挽输出,因此开漏输出通常用在总线应用上,例如I2C的SCL和SDA线通常会挂载多个设备,因此通常这时候我们通常就会使用开漏输出,尤其是使用模拟I2C通讯的时候千万要小心不要使用成推挽输出了。
. ~6 {( e# L1 l. Q; o4 b) {* _7 A: g$ V+ y
模拟模式" p. ^  X5 D5 ?* [1 B5 ?; |
模拟模式通常应用在ADC或者DAC中。1 F7 i; t% f2 H9 Y

4 ^# ]# B/ Y7 E4 L 微信图片_20240529175016.png
' c( Z. ^6 e; z4 b
1 Z  L) \+ e8 r+ [0 m( |
为了减少上拉电阻和下拉电阻对ADC采样或者DAC输出的影响,通常模拟输出会关闭上下拉电阻,保证模拟信号不失真。. h" c6 @% u! ^" x
4 n2 ^' f, Q0 i. L
微信图片_20240529175013.png
0 W( O3 C0 b  S4 @

  ?8 f) x% n1 \7 a9 J- _所以如果你的ADC和DAC的准确度有问题的话,可以检查一下是否加了上下拉电阻而不是将IO配置为输入模式。
+ J* x3 b" d/ X7 _0 c& Q% r" B( Z! u
复用模式( [0 y, D! E: @7 B$ s7 {$ g8 H4 ~( O9 E

4 `) c0 W6 x! E  J# {% n4 w! T1 i 微信图片_20240529175006.png
6 t! l  R5 `& ]( |8 o: A
+ T/ K$ @% [, {3 ?0 o3 F
复用模式通常作为外设使用,例如硬件I2C,硬件SPI,串口通信等等,复用下,通常这些IO会有其特定的功能,我们一般不将其作为普通的输入输出IO使用。
  Y# b% G5 M1 ], V6 P& T3 V
+ E5 Z  V( p/ H
最后还有一些特殊IO,例如时钟输入IO,事件检测IO等等。" `. ~4 k9 ^0 B# R  m, S) N

* d; `4 I8 R8 X, q% I# O 微信图片_20240529174959.png ! y6 f) m0 j% b2 y3 U

1 V0 x" g: X* w6 Q* d% _0 [
: {1 Z  e. |4 S( A' m  z转载自:电路小白3 R  }5 M7 r# E. h  N
如有侵权请联系删除
! M( R8 G. `( K. G2 A" m/ L8 P# h1 C5 L  c: v
4 M4 q/ n: g" o  n! i( W- b, N
收藏 评论0 发布时间:2024-5-29 17:54

举报

0个回答

所属标签

相似技术帖

官网相关资源

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