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

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

[复制链接]
攻城狮Melo 发布时间:2024-5-29 17:54
本期我们就介绍STM32的GPIO的各种模式。  k; l" ~# z, u8 {7 s+ U

3 R6 p% N" ], b& Z4 }1 z
STM32的GPIO大致可以分为四类:输入模式、输出模式、模拟模式以及复用模式。而每个都有细致的区分和小类。
+ a2 p8 g' y; K) r& F( e7 `+ M9 Y7 U. I
输入模式; ?5 {/ }5 u( c+ F' ~
首先是输入模式,顾名思义输入模式就是用来向单片机输入信号的,但是这里的信号需是符合STM32的高低电平信号。
8 r* ~- r1 i/ V  _9 A
3 A$ p- Y9 h* |# `
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芯片手册以定。& _8 n9 |+ L2 |9 ]. u

4 o: Z3 J6 M7 r8 V4 r* d( s9 @
而输入模式根据上拉电阻的不同分为输入上拉、输入下拉、输入浮空,它决定着当没有信号输入的时候,GPIO的电平是高电平还是低电平亦或者是不确定电平。
9 ~7 f9 c/ Y$ @$ }. N4 b3 {5 [
9 B; G4 E* _8 _9 ^
微信图片_20240529175041.png - g% H2 _9 |* y1 N. K$ b: {4 O% E
1 E+ R- V  d2 |2 D/ d+ d5 a
输出模式

" t/ ]0 M3 B  r5 ~2 t/ r顾名思义是单片机对外输出信号,这里的信号也是高低电平,外部器件可以读取输出端口的高低电平以达到控制外部器件的目的。! }) a/ }# d  ^: K& y7 _" K  `

- {$ U% R9 G, K- B5 [( Z: y' P
输出模式除了上拉下拉电阻用以避免浮空状态的高低电平之外,还区分了推挽输出和开漏输出。
3 b/ y  j2 h/ q- b5 V4 n9 H4 H) J% F
2 ?; P: c/ p% \% \/ W4 R 微信图片_20240529175029.png
3 ^9 c3 A# T* ~- s
" @3 |5 D3 e! n* B8 V: O如图即为推挽输出的示意图,电流通过两个MOS管/三极管由控制引脚形成一推一挽,故名推挽。
" b- _* @. v) D8 s: r1 [# W( U# n( h# y2 v' r( |& N
推挽输出的好处是其可以有较大的输出电流,如果说后续的负载需要较大的电流的话,推挽输出是一个非常好的选择。$ f, b! p% U$ X$ X/ w
: C7 O. [$ p0 o8 R: T
但是有利有弊,由于其推挽输出的电路结构,导致不能同时有两个推挽输出的IO口相连接。
: |# S( r7 `1 Z
  p8 T6 q; x4 P5 f. Y, ?; S' v8 m
微信图片_20240529175025.png " P) f6 `4 O- o, U; \

- G7 J1 ^8 z3 m! |8 }9 Z  T) d否则电流就会通过三极管/MOS管导通,导致GPIO烧毁,因此如果使用GPIO的推挽模式,则必须避免IO的相互连接,也就是线与。) g3 q2 T( N9 R# l7 L: R
1 b5 s; z0 a4 N0 W6 u5 [
而另一种模式则是:开漏输出. u+ _5 Y; S& o2 p, o0 z
1 N) Y' U, ?! q6 H: M5 g! A5 Q( u
微信图片_20240529175020.png
. C) u, y0 l9 L# S

; X$ V* B9 x/ Z) V2 }- Z由于其上拉电阻的存在,因此开漏输出的IO可以实现线与。但是同样的是这个上拉电阻的存在,导致其输出能力会不如推挽输出,因此开漏输出通常用在总线应用上,例如I2C的SCL和SDA线通常会挂载多个设备,因此通常这时候我们通常就会使用开漏输出,尤其是使用模拟I2C通讯的时候千万要小心不要使用成推挽输出了。
; t; ]9 |$ L+ b/ \/ a
9 F* q9 |; W8 e
模拟模式7 [0 w* C# ]) j7 X6 M3 f8 y& X' D
模拟模式通常应用在ADC或者DAC中。
2 r1 X: Y& f2 q0 N1 Z0 p
# P* |& k7 b+ Z 微信图片_20240529175016.png
* b! Y# S) _0 [8 T: k7 }6 E: K

9 g; |. o8 i5 X: j7 t9 M+ V为了减少上拉电阻和下拉电阻对ADC采样或者DAC输出的影响,通常模拟输出会关闭上下拉电阻,保证模拟信号不失真。) `; z5 ~$ i% P+ i$ J" x4 t) g

- f" s( g' V6 {. B9 m! z+ W9 U 微信图片_20240529175013.png
8 }; {% R# Y* {/ D

' b) y# N. ^- [( d" Z9 @所以如果你的ADC和DAC的准确度有问题的话,可以检查一下是否加了上下拉电阻而不是将IO配置为输入模式。
6 x# w) u1 E6 }0 r. h. n6 X; o( J( |$ f% ^% s; S
复用模式! X7 @" A' j$ W' u8 O! w. |8 j
/ p6 e' o; [8 J+ T  r
微信图片_20240529175006.png ; S3 k6 {+ k3 u, Q, y: R; z" n9 j3 r
# U5 J" \. B- l2 j" H
复用模式通常作为外设使用,例如硬件I2C,硬件SPI,串口通信等等,复用下,通常这些IO会有其特定的功能,我们一般不将其作为普通的输入输出IO使用。
& n0 t8 I0 l9 k* R9 E- _- K
6 V1 o* K6 F: y$ F1 y
最后还有一些特殊IO,例如时钟输入IO,事件检测IO等等。
0 ~  d1 a  z. j$ Z( p  J' E4 G  t) o3 p' v0 s6 t2 ]
微信图片_20240529174959.png
! s1 }% o' `6 X& `; U% e* Y4 P8 N4 z) C' x2 h

/ R7 i: ^7 d9 q转载自:电路小白& l+ I' N' A1 w
如有侵权请联系删除
, k& f2 C% S  p$ t
8 a+ I+ L$ m& h" [* ]
5 H  M2 N/ x$ ^% _7 e
收藏 评论0 发布时间:2024-5-29 17:54

举报

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