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

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

[复制链接]
攻城狮Melo 发布时间:2024-5-29 17:54
本期我们就介绍STM32的GPIO的各种模式。
1 r/ K& z$ v1 Q, p- D
1 {+ c" P! o" k. [4 Q- n3 p, C
STM32的GPIO大致可以分为四类:输入模式、输出模式、模拟模式以及复用模式。而每个都有细致的区分和小类。
& [- D( o8 ~5 ^( Q) ?; h
. P( ?% b4 Y1 Z& a9 m9 k. N$ V! X
输入模式6 _1 s; `2 x9 S# C5 O% n
首先是输入模式,顾名思义输入模式就是用来向单片机输入信号的,但是这里的信号需是符合STM32的高低电平信号。$ F" R+ w: E% E' Q) G; \* B& V9 [+ W
9 c. ~6 V+ T; L1 P  z
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芯片手册以定。
; n5 L3 o+ W, t1 Y0 G$ p+ d1 {) y
而输入模式根据上拉电阻的不同分为输入上拉、输入下拉、输入浮空,它决定着当没有信号输入的时候,GPIO的电平是高电平还是低电平亦或者是不确定电平。
6 y& U6 u& t: g+ y2 n( t
" x# t7 n- @( [7 D
微信图片_20240529175041.png
$ a/ L; P4 ^! D4 t
' D, h& s* p" h
输出模式

/ [  U5 ?4 j0 z8 ^* E' S7 K2 v! w; g顾名思义是单片机对外输出信号,这里的信号也是高低电平,外部器件可以读取输出端口的高低电平以达到控制外部器件的目的。
9 b) T5 b- ^) Z
2 I8 j4 I3 T9 L
输出模式除了上拉下拉电阻用以避免浮空状态的高低电平之外,还区分了推挽输出和开漏输出。5 W, b3 I7 |0 {% \

( a/ D  h" p. p( q5 c% }+ } 微信图片_20240529175029.png
# o' [! W, M- g/ q& o5 y5 i) ]9 P  H, z5 }
如图即为推挽输出的示意图,电流通过两个MOS管/三极管由控制引脚形成一推一挽,故名推挽。% A+ j- B, u. H$ y/ u( l$ y, k

9 h- Q; i3 h2 A! s( Y& N6 x# k推挽输出的好处是其可以有较大的输出电流,如果说后续的负载需要较大的电流的话,推挽输出是一个非常好的选择。& }- S9 ?% J6 C! S1 a
6 c7 `: B3 I+ X- C: k: ~" p# C1 W
但是有利有弊,由于其推挽输出的电路结构,导致不能同时有两个推挽输出的IO口相连接。  f/ c2 P) r* t8 ~

" _- c7 u, Y: s) O5 I' O
微信图片_20240529175025.png
' r; h: g- F1 F8 ?2 h- M
( y$ }' o% k8 v: h% f9 Z  n否则电流就会通过三极管/MOS管导通,导致GPIO烧毁,因此如果使用GPIO的推挽模式,则必须避免IO的相互连接,也就是线与。
0 T- T7 U. Z3 ?1 _! @* q) V
# F5 \2 V; r) L  E  w8 f) e$ M) a2 [
而另一种模式则是:开漏输出
0 j! d; [( k4 H7 r0 Y) S1 P' t8 w' v) z  ~1 K9 \3 p1 l% ^0 z0 O) c+ s
微信图片_20240529175020.png 2 `; N3 N7 l, e- |) _% [

5 X  j7 a5 c' P1 f8 r2 k& ^由于其上拉电阻的存在,因此开漏输出的IO可以实现线与。但是同样的是这个上拉电阻的存在,导致其输出能力会不如推挽输出,因此开漏输出通常用在总线应用上,例如I2C的SCL和SDA线通常会挂载多个设备,因此通常这时候我们通常就会使用开漏输出,尤其是使用模拟I2C通讯的时候千万要小心不要使用成推挽输出了。
8 X8 i1 ?+ |+ W  g
; ~  ?4 i0 H$ C
模拟模式
" k  \! _' J" c" e; ^& R模拟模式通常应用在ADC或者DAC中。
6 i6 d' v4 T+ T) s- ~
$ m- {8 R. H/ H* _9 V+ a8 j4 G 微信图片_20240529175016.png
8 x6 G% v, Z0 H1 V% c1 y, f! J+ I
$ e% H3 t. a/ c$ p8 S
为了减少上拉电阻和下拉电阻对ADC采样或者DAC输出的影响,通常模拟输出会关闭上下拉电阻,保证模拟信号不失真。
: M  |+ l1 c  h, o. R' q$ ~* q* o& }
微信图片_20240529175013.png
9 ~8 I/ T4 U2 P) v" _. n
: p" ~# v6 X$ [2 e6 Q( p4 Q  G) `
所以如果你的ADC和DAC的准确度有问题的话,可以检查一下是否加了上下拉电阻而不是将IO配置为输入模式。0 m6 a- l6 Y7 u& I  C

2 D( D$ c2 `# V5 a2 v& |/ l9 k
复用模式4 h+ ~; H! O  t% M, T
) P- v) t6 @" V0 m5 R" i
微信图片_20240529175006.png
4 h  s; Y5 q/ c: \$ ~% f

* _, W2 Q7 d( G" F9 A/ w复用模式通常作为外设使用,例如硬件I2C,硬件SPI,串口通信等等,复用下,通常这些IO会有其特定的功能,我们一般不将其作为普通的输入输出IO使用。5 E5 p' W" F: t/ \. H0 W

- ~. H' K) y1 j' e* d, _
最后还有一些特殊IO,例如时钟输入IO,事件检测IO等等。
7 R" e7 i  Q) u, H, v" u. a+ w" t
微信图片_20240529174959.png # m* u0 X+ N" E

/ \6 N: Q( y' M( l* B& X6 @3 j! q% M2 w: M3 V4 `
转载自:电路小白3 W" R, ]! Q7 D5 P3 D) K. e
如有侵权请联系删除( @. l1 I" @" w, m7 K
' I  O) t2 j/ o' J: B' s2 N1 G/ H
6 Y4 `: }' B( e
收藏 评论0 发布时间:2024-5-29 17:54

举报

0个回答

所属标签

相似分享

官网相关资源

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