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

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

[复制链接]
攻城狮Melo 发布时间:2024-5-29 17:54
本期我们就介绍STM32的GPIO的各种模式。  @0 z2 @$ k9 S  X; r+ G& G
* @7 X; j0 a& o, e' K4 s8 M
STM32的GPIO大致可以分为四类:输入模式、输出模式、模拟模式以及复用模式。而每个都有细致的区分和小类。3 h  T* s  V6 X! J; g8 N) l
: g) O2 a# d. F
输入模式; A( w+ S0 K: R2 @
首先是输入模式,顾名思义输入模式就是用来向单片机输入信号的,但是这里的信号需是符合STM32的高低电平信号。) X, r" G# P  j$ L' B1 X
8 j1 F( D7 f: g3 ]% k* R
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芯片手册以定。
; j+ O, C2 a3 Y7 V8 z* e# }9 F+ X4 p( L, V0 n' \/ ?
而输入模式根据上拉电阻的不同分为输入上拉、输入下拉、输入浮空,它决定着当没有信号输入的时候,GPIO的电平是高电平还是低电平亦或者是不确定电平。! r6 O" ~" v" y. F6 G
- d2 N: L% c) u- u7 s
微信图片_20240529175041.png
' ?7 O, g# v* U

7 z2 Y2 h+ Q/ s) W( x输出模式

, c- }+ x$ k+ X2 @9 F/ Y顾名思义是单片机对外输出信号,这里的信号也是高低电平,外部器件可以读取输出端口的高低电平以达到控制外部器件的目的。! h2 d; w6 `5 r1 s$ n
! T6 C& r4 s3 s; n; P; ~
输出模式除了上拉下拉电阻用以避免浮空状态的高低电平之外,还区分了推挽输出和开漏输出。
  k7 Z1 }7 }0 k& ]. j# C* L% }0 C4 e& A& t3 p
微信图片_20240529175029.png , e) l  q1 d, _; x& `) r

, I2 ?+ `1 j4 ^如图即为推挽输出的示意图,电流通过两个MOS管/三极管由控制引脚形成一推一挽,故名推挽。
; {( p2 P7 E$ B' ^
4 g3 w" T. Y+ Z% K$ ?推挽输出的好处是其可以有较大的输出电流,如果说后续的负载需要较大的电流的话,推挽输出是一个非常好的选择。
. H! Q! b$ \! Y/ L7 L: n
; E* ]6 C& D, \4 E3 |6 [
但是有利有弊,由于其推挽输出的电路结构,导致不能同时有两个推挽输出的IO口相连接。$ |* V4 b( g: @

! B' R) P% n3 W) T% S
微信图片_20240529175025.png ' I+ [8 S9 T& j$ z. Q+ Q1 ]. V3 w
8 S$ I% D8 n* P. a  d6 m% N* |
否则电流就会通过三极管/MOS管导通,导致GPIO烧毁,因此如果使用GPIO的推挽模式,则必须避免IO的相互连接,也就是线与。) i" Y' Q- ~) C# \6 x$ x3 y5 T% C
7 l  k- F  b. a; _5 L5 t. t  m" ~
而另一种模式则是:开漏输出
5 e  x; q  O! z
0 R- r; `& K3 |* l2 N$ b 微信图片_20240529175020.png
! {0 x7 Z7 j! r1 @* ^8 }
2 _) _+ b) Q1 H& |7 C
由于其上拉电阻的存在,因此开漏输出的IO可以实现线与。但是同样的是这个上拉电阻的存在,导致其输出能力会不如推挽输出,因此开漏输出通常用在总线应用上,例如I2C的SCL和SDA线通常会挂载多个设备,因此通常这时候我们通常就会使用开漏输出,尤其是使用模拟I2C通讯的时候千万要小心不要使用成推挽输出了。
, g1 n' ?- x8 K  e
3 e: s- R) l7 J: e7 Z" h$ v
模拟模式
9 a  o' ?( `: V3 `  Z: E模拟模式通常应用在ADC或者DAC中。
( h( o5 i5 r9 [) P# C
9 A4 t' f" g; o5 |/ F- f 微信图片_20240529175016.png , I  f# q: k; K0 P3 h) M$ i9 G# B  M
( i9 J9 M; ~0 o
为了减少上拉电阻和下拉电阻对ADC采样或者DAC输出的影响,通常模拟输出会关闭上下拉电阻,保证模拟信号不失真。) G* e+ d) M/ [
! k$ u" c4 ~6 \7 ]# g
微信图片_20240529175013.png
5 y) G1 S- e1 R( E" H

% ?% }! i  X; }  I& x所以如果你的ADC和DAC的准确度有问题的话,可以检查一下是否加了上下拉电阻而不是将IO配置为输入模式。0 Z' u4 G' z% I/ ?6 n- E

! p* C& a0 E+ s" T/ U
复用模式
+ I. Z& t+ S; Q2 o8 o5 E3 f9 b, G& |" R4 N& S0 h. k$ k
微信图片_20240529175006.png 8 b/ ^7 A1 U+ ]( n5 z, Z0 W: `

2 Q- _9 O' \% U- a& B( {复用模式通常作为外设使用,例如硬件I2C,硬件SPI,串口通信等等,复用下,通常这些IO会有其特定的功能,我们一般不将其作为普通的输入输出IO使用。
" ^/ m% _/ C0 o( ?& e
8 A7 O+ H  u6 `- T4 D" V0 ]
最后还有一些特殊IO,例如时钟输入IO,事件检测IO等等。& J3 k6 `) f$ D; n8 g8 y$ A/ n+ F8 u
8 K5 L8 }) i9 z7 T+ L; O
微信图片_20240529174959.png + Z2 \8 z6 v3 x8 y) G9 t7 _: Y
6 ~- j+ Z2 p+ L! w8 V

+ T1 b" e. m. v0 q# N转载自:电路小白- y5 Q. `' {- g% `1 m) s
如有侵权请联系删除
, a  {& [9 m5 [2 ]" `) ]! m  V' K9 K# W9 Y  s

- G* K2 c3 f2 u
赞 收藏 评论0 发布时间:2024-5-29 17:54

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版