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

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

[复制链接]
攻城狮Melo 发布时间:2024-5-29 17:54
本期我们就介绍STM32的GPIO的各种模式。2 u) T, y' O, B" e
1 `$ J7 P2 G& h
STM32的GPIO大致可以分为四类:输入模式、输出模式、模拟模式以及复用模式。而每个都有细致的区分和小类。8 u$ U$ o% m* v4 M: o: U! u/ G

" _7 x( H6 }9 E0 @
输入模式
; d9 M* C, E( W) f6 o6 ]$ Z* _2 v首先是输入模式,顾名思义输入模式就是用来向单片机输入信号的,但是这里的信号需是符合STM32的高低电平信号。
0 w/ A/ T  F& A. E4 R
6 D( J4 U' J& e1 W. n
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芯片手册以定。
% U( d( c3 U& \/ T( Z2 t* j& S. K7 |& x+ ?/ Q
而输入模式根据上拉电阻的不同分为输入上拉、输入下拉、输入浮空,它决定着当没有信号输入的时候,GPIO的电平是高电平还是低电平亦或者是不确定电平。
2 I7 n3 \0 B5 I4 G8 t$ Y  C0 |& v2 T7 Q0 ?4 A  p
微信图片_20240529175041.png
" \5 g0 A( ~  h8 c) @5 \7 o
. c. y; G" p8 b- w( n
输出模式
" q0 B, m3 z7 e% t; D. D
顾名思义是单片机对外输出信号,这里的信号也是高低电平,外部器件可以读取输出端口的高低电平以达到控制外部器件的目的。  t: T, z. |/ v! F, ~; X; k( `" K
" l$ y8 c( g- u! G5 ~
输出模式除了上拉下拉电阻用以避免浮空状态的高低电平之外,还区分了推挽输出和开漏输出。
! j  L  d! r' b2 M) F* V$ Q  S3 ?+ l1 O8 n
微信图片_20240529175029.png ' W, X. d6 N- V# x2 z
4 r) |& x3 r2 L/ h& `, A3 X
如图即为推挽输出的示意图,电流通过两个MOS管/三极管由控制引脚形成一推一挽,故名推挽。
4 u7 k) S2 W) f- ?8 d/ ~2 k1 g& A: E' d3 l
推挽输出的好处是其可以有较大的输出电流,如果说后续的负载需要较大的电流的话,推挽输出是一个非常好的选择。( H0 H& K" u) Y9 s9 a9 x8 G
) t0 l% t# s& J- r! f1 o& R5 E& r
但是有利有弊,由于其推挽输出的电路结构,导致不能同时有两个推挽输出的IO口相连接。7 i6 X/ A- {  U8 @6 c
2 v/ W0 B- b/ r' L( W
微信图片_20240529175025.png 5 A  O6 d0 h9 C

4 {+ D7 d7 a6 B8 e( U4 n否则电流就会通过三极管/MOS管导通,导致GPIO烧毁,因此如果使用GPIO的推挽模式,则必须避免IO的相互连接,也就是线与。- I1 m, G  O3 e( I

5 n/ e3 r" q1 P/ A& n- ~
而另一种模式则是:开漏输出( ~% H. C" D5 d7 z
% @7 A, x0 R/ N; M/ q
微信图片_20240529175020.png 6 j7 g! _2 v: n  r, e# N5 J
1 C: ^- Z" R- @, X5 g! L
由于其上拉电阻的存在,因此开漏输出的IO可以实现线与。但是同样的是这个上拉电阻的存在,导致其输出能力会不如推挽输出,因此开漏输出通常用在总线应用上,例如I2C的SCL和SDA线通常会挂载多个设备,因此通常这时候我们通常就会使用开漏输出,尤其是使用模拟I2C通讯的时候千万要小心不要使用成推挽输出了。
8 r7 U8 ?" p, j* \- `3 `' m
: g0 e; m( h; |" ?4 @9 E# H
模拟模式3 q' f2 J& R- l" }! h
模拟模式通常应用在ADC或者DAC中。: x/ u3 d7 y0 o4 r
  ~9 B! K$ \5 t1 u0 q
微信图片_20240529175016.png ; `4 A' C/ G: w/ V! S! q
% D; s  w+ Q! A. j
为了减少上拉电阻和下拉电阻对ADC采样或者DAC输出的影响,通常模拟输出会关闭上下拉电阻,保证模拟信号不失真。3 W8 n' K2 t3 \5 ?) W, z( S! |, u
9 A$ V# y+ P8 _7 M
微信图片_20240529175013.png
( |% T& c$ H( g

4 s+ T% D/ N. K5 j所以如果你的ADC和DAC的准确度有问题的话,可以检查一下是否加了上下拉电阻而不是将IO配置为输入模式。
0 s$ T  b1 Y1 P# M1 K0 i+ l- _. {3 H
复用模式. q6 {* Y! U: M4 B9 r
6 o, v9 ^0 R* }( c* a& R
微信图片_20240529175006.png
$ H0 `. I5 t& J6 ?4 V: Q7 s

. c7 a& P( T7 n/ W复用模式通常作为外设使用,例如硬件I2C,硬件SPI,串口通信等等,复用下,通常这些IO会有其特定的功能,我们一般不将其作为普通的输入输出IO使用。) j, S" G8 f) C
% n+ R. x' E5 d. `
最后还有一些特殊IO,例如时钟输入IO,事件检测IO等等。% G) k' l- B) i7 k

5 U* b/ Z0 P& _' h( @ 微信图片_20240529174959.png ; ^/ ]+ i( Y, c, v

7 X" l  n5 z) n# q" g
, O. B  H( \" \( x& J4 X转载自:电路小白
8 ^+ v8 J' a- W/ b9 A如有侵权请联系删除
; X8 D% Z  G: R, J7 n- R
3 G6 D2 Z3 R! z* [9 T  n% [3 ~0 h2 ^$ V( A& i3 l3 h/ i
收藏 评论0 发布时间:2024-5-29 17:54

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版