请选择 进入手机版 | 继续访问电脑版

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

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

[复制链接]
攻城狮Melo 发布时间:2024-5-29 17:54
本期我们就介绍STM32的GPIO的各种模式。: x; j% R" W/ H0 x3 C4 F

' F- g/ |2 a+ C) [2 T: ?! I
STM32的GPIO大致可以分为四类:输入模式、输出模式、模拟模式以及复用模式。而每个都有细致的区分和小类。
5 U8 L9 f% w# J1 q3 o8 X  f2 s" F* W/ m' A, m5 {5 q" F  r
输入模式$ w# O& y5 M! `5 Y4 e
首先是输入模式,顾名思义输入模式就是用来向单片机输入信号的,但是这里的信号需是符合STM32的高低电平信号。
' H2 m7 a; Y' ^+ |! Q/ V! r/ ?6 I. x* t) f6 [$ y9 D$ M2 z! |& 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芯片手册以定。
$ ^5 w+ F  J7 R5 d/ x8 J! j0 D% |
而输入模式根据上拉电阻的不同分为输入上拉、输入下拉、输入浮空,它决定着当没有信号输入的时候,GPIO的电平是高电平还是低电平亦或者是不确定电平。
/ a1 `/ L$ {1 a; G' v+ m" f$ w: [. S) H, N
微信图片_20240529175041.png ' o: [8 ?( B* n  K4 k2 r

* G2 y6 T$ M: I9 q# |$ Y' ^输出模式

' L  t5 t: o: Q( R( p顾名思义是单片机对外输出信号,这里的信号也是高低电平,外部器件可以读取输出端口的高低电平以达到控制外部器件的目的。8 u6 h7 s5 v0 L, f; z# k4 K( U+ ]4 N

/ Z7 P3 ?( `% h. V. v4 Z  X
输出模式除了上拉下拉电阻用以避免浮空状态的高低电平之外,还区分了推挽输出和开漏输出。+ A+ t! T+ D* R& F( \- ~

! X. ?. ^" m& S3 E& q6 t7 a 微信图片_20240529175029.png
4 b, T$ E* E  w2 y5 S! A" x1 ?0 q
如图即为推挽输出的示意图,电流通过两个MOS管/三极管由控制引脚形成一推一挽,故名推挽。* K) S  A9 t4 @2 S3 S

4 M0 G  c: Q% X: p! ]0 l) @推挽输出的好处是其可以有较大的输出电流,如果说后续的负载需要较大的电流的话,推挽输出是一个非常好的选择。
0 j! |6 Y5 d1 I/ i( v1 `

! \& i- ]' G% v6 Y% y但是有利有弊,由于其推挽输出的电路结构,导致不能同时有两个推挽输出的IO口相连接。1 n- q# U3 V6 a- ?/ a" K
( H! K) S! \, G3 G. f0 ]
微信图片_20240529175025.png
: v7 D$ \. ]1 z. e  X) o) D6 c  V1 M# a$ L3 ~' Q
否则电流就会通过三极管/MOS管导通,导致GPIO烧毁,因此如果使用GPIO的推挽模式,则必须避免IO的相互连接,也就是线与。, j& O/ ?9 [: F6 W! m3 a2 e7 L
$ _- e& X. Q4 Z; e! u9 m
而另一种模式则是:开漏输出( P6 M+ ^8 ^* [0 Y7 n+ K7 I' o

2 O/ X, L* i& l) `3 L 微信图片_20240529175020.png
4 i  o0 r, _2 v

1 M. H  [0 @+ b由于其上拉电阻的存在,因此开漏输出的IO可以实现线与。但是同样的是这个上拉电阻的存在,导致其输出能力会不如推挽输出,因此开漏输出通常用在总线应用上,例如I2C的SCL和SDA线通常会挂载多个设备,因此通常这时候我们通常就会使用开漏输出,尤其是使用模拟I2C通讯的时候千万要小心不要使用成推挽输出了。) C3 c/ M: z& ^% Z

) D9 J, U* `$ t% }
模拟模式
( T: s. j+ \# `+ h8 @; W: |模拟模式通常应用在ADC或者DAC中。
: u+ X' I, z& M/ t6 l- |
, c9 d; H6 f9 Y" B" A. ~; s% O 微信图片_20240529175016.png
' Z9 i% v; F7 w! E  |

) N( Y$ k: _+ n5 `为了减少上拉电阻和下拉电阻对ADC采样或者DAC输出的影响,通常模拟输出会关闭上下拉电阻,保证模拟信号不失真。
' k, C* R( {. v  {3 e
/ L2 P2 s7 O6 s- t+ X+ l- ?* z 微信图片_20240529175013.png
. u0 @0 J" W2 [2 E9 j1 \

0 }% \4 _' S! x: w所以如果你的ADC和DAC的准确度有问题的话,可以检查一下是否加了上下拉电阻而不是将IO配置为输入模式。
! O! C$ d7 ?: X8 y- Q, T& i, j( k8 P, I- a
复用模式7 ~' J! D# s, Q+ h

$ a* t3 E3 \) S8 l$ B/ D 微信图片_20240529175006.png * z7 ~  F. R% ]" ?2 ?+ {

3 Z. j4 J) t" d0 R: X1 ^0 Y复用模式通常作为外设使用,例如硬件I2C,硬件SPI,串口通信等等,复用下,通常这些IO会有其特定的功能,我们一般不将其作为普通的输入输出IO使用。' E7 P3 F2 Z1 @8 j9 V7 `# B5 ~
8 A& X. T8 e4 V1 I+ A! p' Y9 l; s- X
最后还有一些特殊IO,例如时钟输入IO,事件检测IO等等。
+ Q+ ~' a  `$ \2 B" U# [
# y: k1 p4 a) i4 x- @5 z 微信图片_20240529174959.png
: ]4 E( ]( |3 i' _
, ^! D# j: v, ]  y: ]
. {. c, \& O! Z" n转载自:电路小白, j# n) d. e: X1 y
如有侵权请联系删除$ ]$ o- W# N4 u# U/ M2 q" y( `

* E. ?2 `/ x; d- M- s, f1 l5 `; ^" C" Z, b, {/ f  `" F! C
收藏 评论0 发布时间:2024-5-29 17:54

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版