请选择 进入手机版 | 继续访问电脑版

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

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

[复制链接]
攻城狮Melo 发布时间:2024-5-29 17:54
本期我们就介绍STM32的GPIO的各种模式。2 g( j+ n1 w0 `' L& {

2 ^/ F" V0 b7 Z+ r# N
STM32的GPIO大致可以分为四类:输入模式、输出模式、模拟模式以及复用模式。而每个都有细致的区分和小类。; ~& Q  @4 b0 E8 r

' W9 N- D* f  O& u2 b7 z& s
输入模式
. u/ [( Q' {1 \1 E* C/ E3 e首先是输入模式,顾名思义输入模式就是用来向单片机输入信号的,但是这里的信号需是符合STM32的高低电平信号。; y2 p1 a0 j5 V6 }4 I
4 n9 v5 g4 I2 A/ s/ [) M
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- S: r" N4 \$ |6 l
0 y0 }% `! ~1 v
而输入模式根据上拉电阻的不同分为输入上拉、输入下拉、输入浮空,它决定着当没有信号输入的时候,GPIO的电平是高电平还是低电平亦或者是不确定电平。
4 ^4 P  F, Z- R' `* X  Z5 {. J
  C: J( j" e: \2 _; ?1 h
微信图片_20240529175041.png
! n) K6 L) O! a/ \* v! F1 J
. t  z  M, Z% K5 `  }) {3 J
输出模式

2 O$ x- E$ Y. T( z" {顾名思义是单片机对外输出信号,这里的信号也是高低电平,外部器件可以读取输出端口的高低电平以达到控制外部器件的目的。7 u  z0 R% `' K, q
1 [2 b' M3 t- v& b1 [9 B
输出模式除了上拉下拉电阻用以避免浮空状态的高低电平之外,还区分了推挽输出和开漏输出。
. G# j  a, o; a% M. u8 R
" I* N& a. x0 K 微信图片_20240529175029.png 8 s# O( [8 u/ ~8 h& x: g* l

8 t  U. X5 e* M6 E: E) ^$ U如图即为推挽输出的示意图,电流通过两个MOS管/三极管由控制引脚形成一推一挽,故名推挽。
9 G  s: B! g# q6 W& b
& t- {3 o8 k5 S* j" B" n/ ~2 g推挽输出的好处是其可以有较大的输出电流,如果说后续的负载需要较大的电流的话,推挽输出是一个非常好的选择。
) G2 L& @! T3 Y3 s
# `7 a4 A, V7 A( H. k3 p
但是有利有弊,由于其推挽输出的电路结构,导致不能同时有两个推挽输出的IO口相连接。
; G# r' w, o: \! \* l6 G( I
* N. m) v$ S# a# S% b
微信图片_20240529175025.png . v" g# {0 w7 U2 v% j% `% D4 L

" n8 k. C- s* c# f' W% b2 g否则电流就会通过三极管/MOS管导通,导致GPIO烧毁,因此如果使用GPIO的推挽模式,则必须避免IO的相互连接,也就是线与。1 x1 f- u# i& q7 v" [
. d- }* S, k3 Z4 L1 Y$ w) l  C2 y
而另一种模式则是:开漏输出- n0 {6 X$ }0 @6 C) a3 l4 q

. c% R4 f8 g9 J) @ 微信图片_20240529175020.png
9 x' L9 q4 z8 ^

; X+ h1 y( W4 |, B  Q2 |# v) P由于其上拉电阻的存在,因此开漏输出的IO可以实现线与。但是同样的是这个上拉电阻的存在,导致其输出能力会不如推挽输出,因此开漏输出通常用在总线应用上,例如I2C的SCL和SDA线通常会挂载多个设备,因此通常这时候我们通常就会使用开漏输出,尤其是使用模拟I2C通讯的时候千万要小心不要使用成推挽输出了。3 _* O9 h+ z# A+ t# Y4 q% d
; f6 j+ T4 }: A% b
模拟模式
$ v' p6 a& }- f5 \" c模拟模式通常应用在ADC或者DAC中。
  _& X' p! a( y" f
: E0 J9 _4 h! p3 L& R 微信图片_20240529175016.png - o$ p/ F+ v* k& P1 ]% t1 L

5 s  \2 l  o) N$ @: ^为了减少上拉电阻和下拉电阻对ADC采样或者DAC输出的影响,通常模拟输出会关闭上下拉电阻,保证模拟信号不失真。( \+ |0 Q# Q* J& H9 r$ D

! G3 ]! O8 O! i! t. ~  ^ 微信图片_20240529175013.png
8 T! S  d* }! W- j$ S2 ?1 J

7 W+ D! h; s8 J) |3 q  Z9 g所以如果你的ADC和DAC的准确度有问题的话,可以检查一下是否加了上下拉电阻而不是将IO配置为输入模式。3 {' r& s/ L- T2 z

( ^8 Z" E- P1 J
复用模式
: E  ]! L9 d9 K! j9 ]* u& d6 \
8 J; Y# d9 u& Z 微信图片_20240529175006.png
# R% Q  |! p5 U
3 C/ v1 I2 R) P8 P8 b8 \3 Z
复用模式通常作为外设使用,例如硬件I2C,硬件SPI,串口通信等等,复用下,通常这些IO会有其特定的功能,我们一般不将其作为普通的输入输出IO使用。: ?$ D; |' i1 M2 ?

! ]$ L5 ?3 m* L/ H, u
最后还有一些特殊IO,例如时钟输入IO,事件检测IO等等。
  ?  N% L3 t. g" Q* l4 b3 k
! d( ]) c$ g( ]  y+ z# G( H8 g8 } 微信图片_20240529174959.png $ L3 Q7 h8 ?: `  ^  e  h  D

! I: y7 J8 ?" v& l& q# e! r6 C7 V! i4 A( ^2 p
转载自:电路小白
! r1 R1 Y2 @8 Y! m# a如有侵权请联系删除: z. P, d8 O& r
! w5 N: s6 P3 U1 b

0 P3 i) ]/ @% c, y
收藏 评论0 发布时间:2024-5-29 17:54

举报

0个回答

所属标签

相似分享

官网相关资源

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