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

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

[复制链接]
攻城狮Melo 发布时间:2024-5-29 17:54
本期我们就介绍STM32的GPIO的各种模式。* X# }2 m* ]& [; S  ^# g# k+ ^

6 D. F4 ]# L  ]1 V9 n
STM32的GPIO大致可以分为四类:输入模式、输出模式、模拟模式以及复用模式。而每个都有细致的区分和小类。& b( ]. o! B6 E
; M$ k2 W6 h3 n$ Y$ t  o
输入模式
9 P2 a0 _& p' x; C首先是输入模式,顾名思义输入模式就是用来向单片机输入信号的,但是这里的信号需是符合STM32的高低电平信号。
$ N) Y3 `+ i5 m1 P% a9 G& ]2 O
$ [3 o4 k; u  h7 z, w+ K
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芯片手册以定。3 n, o2 N; Z% I' X* j
: p% ?8 y" E7 Q, e% m
而输入模式根据上拉电阻的不同分为输入上拉、输入下拉、输入浮空,它决定着当没有信号输入的时候,GPIO的电平是高电平还是低电平亦或者是不确定电平。$ W# X* I) M6 Z1 [' I/ t

2 v: I- l9 U6 U. A' v. S% V
微信图片_20240529175041.png 1 V2 R6 N# }, }* U. q1 k
/ V' q, A! t$ D% X2 U
输出模式
2 e) a$ T/ |# Y6 ]7 S
顾名思义是单片机对外输出信号,这里的信号也是高低电平,外部器件可以读取输出端口的高低电平以达到控制外部器件的目的。
' z% x3 R$ j7 U' I' ~) o; [: u% m) x- p/ q
输出模式除了上拉下拉电阻用以避免浮空状态的高低电平之外,还区分了推挽输出和开漏输出。/ ^% L% a1 j# T
4 |# ^8 E, I' g
微信图片_20240529175029.png ( H: j8 b2 s9 z4 c5 H3 |

  c1 @$ O3 e+ i4 @7 U( w9 e如图即为推挽输出的示意图,电流通过两个MOS管/三极管由控制引脚形成一推一挽,故名推挽。# p' O" {; r. A9 T# b

: c4 t, D: L- w6 N推挽输出的好处是其可以有较大的输出电流,如果说后续的负载需要较大的电流的话,推挽输出是一个非常好的选择。8 {9 C, \; G( ~9 H# [: Y. H

5 }: W9 a# p, @& i/ J3 d但是有利有弊,由于其推挽输出的电路结构,导致不能同时有两个推挽输出的IO口相连接。
3 I0 p* [/ ]* u5 k8 d+ N' T9 B& `" G5 S/ m4 J6 Q
微信图片_20240529175025.png
% R& M- ]% y3 y6 K/ v# _
+ ]. x/ v3 w- f4 g( Y5 \! v* w否则电流就会通过三极管/MOS管导通,导致GPIO烧毁,因此如果使用GPIO的推挽模式,则必须避免IO的相互连接,也就是线与。# E. c9 W# O) z* B, w" n
/ V& m8 k9 Z4 F! S" r2 R
而另一种模式则是:开漏输出- u. z# P% P4 s* o3 |% c4 s! j
# C. [1 E* Z7 f2 U$ C
微信图片_20240529175020.png $ S* ]$ H) U. l

- g: ^* V0 j$ \, c, [" Y! S0 K, w由于其上拉电阻的存在,因此开漏输出的IO可以实现线与。但是同样的是这个上拉电阻的存在,导致其输出能力会不如推挽输出,因此开漏输出通常用在总线应用上,例如I2C的SCL和SDA线通常会挂载多个设备,因此通常这时候我们通常就会使用开漏输出,尤其是使用模拟I2C通讯的时候千万要小心不要使用成推挽输出了。; }/ h- C& z4 W, ^4 r. R* h

- a  N5 z6 G6 C& k
模拟模式
# y* C; ]! k( i; J4 X& Z9 x4 h8 ^模拟模式通常应用在ADC或者DAC中。; j9 x* m+ q1 d* ?+ @% r
! n! r4 Y( q7 J- j) q
微信图片_20240529175016.png ) H8 f( h1 Z! q8 I+ F1 z
; ]! m+ E7 M; n$ Q
为了减少上拉电阻和下拉电阻对ADC采样或者DAC输出的影响,通常模拟输出会关闭上下拉电阻,保证模拟信号不失真。5 Z' y2 \' ~6 c3 o2 S
7 f3 Z5 f; f+ ^8 l
微信图片_20240529175013.png # c1 J( P. E8 P! S# r
2 g3 ]' t: a! l- z7 i( r5 W) k
所以如果你的ADC和DAC的准确度有问题的话,可以检查一下是否加了上下拉电阻而不是将IO配置为输入模式。" @2 o& I$ E+ N$ a  m
( u; j: {' C9 M2 r* |6 U* W2 q
复用模式2 w) T$ J5 g: A) x- N7 v
, {" S5 B, X/ C
微信图片_20240529175006.png 2 ?1 S9 d& E4 @' i

; x% A4 R* I4 X5 |( o( l4 I复用模式通常作为外设使用,例如硬件I2C,硬件SPI,串口通信等等,复用下,通常这些IO会有其特定的功能,我们一般不将其作为普通的输入输出IO使用。
# y3 y! I/ E5 N. L6 r) e8 U3 O# s9 z9 q; h* b6 e( b" D# x) V7 n
最后还有一些特殊IO,例如时钟输入IO,事件检测IO等等。
% S( D$ x+ V+ j6 _- |& U9 _' y! d/ F; T0 C' e
微信图片_20240529174959.png * w# P) h- \7 R9 O/ ~1 _' T, A

) D$ q1 _0 ^% L  x! [
5 r( }$ ~0 j$ q7 I* A( N+ V转载自:电路小白3 L# P6 N/ o: @2 I
如有侵权请联系删除
! x. `9 j% Z/ u/ o7 q! \) @/ p' w& Z( y3 _, K
0 \! r4 _/ Y2 `" R# u! p/ H, @
收藏 评论0 发布时间:2024-5-29 17:54

举报

0个回答

所属标签

相似分享

官网相关资源

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