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

【经验分享】STM32F103:GPIO八种工作原理详解

[复制链接]
STMCU小助手 发布时间:2022-5-3 14:17
一、GPIO简介
, m+ Z3 x4 T" I+ lGPIO就是通用I/O(输入/输出)端口,是STM32可控制的引脚。$ Q. J0 W8 N8 g! I' |7 X1 l
STM32芯片的GPIO引脚与外部设备连接起来,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。; i) \0 h- I5 y/ J) d; U* `8 M) U
4 _. T" s( |" h5 u. j
二、GPIO工作模式
7 h  p+ w3 q% y  R+ Y- T1. 四种输入模式* w6 Q3 z5 x$ [+ {5 d& h4 c
GPIO_Mode_IN_FLOATING 浮空输入模式
9 _) t; j2 l7 B) ~: OGPIO_Mode_IPU 上拉输入模式
% \9 ~$ h$ c# }' I& a& o; k( Y& `GPIO_Mode_IPD 下拉输入模式
, \. Q: v) {2 mGPIO_Mode_AIN 模拟输入模式
7 l& {6 u0 P  J8 z" X2. 四种输出模式
* ^+ e1 N; j8 W0 f+ KGPIO_Mode_Out_OD 开漏输出模式5 B1 ?5 y3 H/ Y' w. n
GPIO_Mode_Out_PP 推挽输出模式
1 S: \* _* l, S- i4 Y2 n& k$ T6 B2 YGPIO_Mode_AF_OD 复用开漏输出模式; o  r4 A6 K6 [7 k! S7 G0 z
GPIO_Mode_AF_PP 复用推挽输出模式
: U% ]7 e- z7 C  }' S9 t6 L. n2 O2 f1 X三、GPIO工作原理解析
2 p3 S9 m- R, s1. I/O端口的基本结构框图+ a( B, T" h) I: Y' ], G% n$ d

1 p; E" P. r: X
`4X~)N9~3[_~%JQZU__HBP0.png 4 h  a. y4 ]1 d; x

9 E1 J5 ^- P2 V  I$ U2. I/O端口的基本结构介绍
8 K8 f! X% D+ A9 l+ R* P+ F# j
保护二极管* ^) x( z  \0 s- d7 x
作用: 防止引脚外部输入过高和过低的电压,防止不正常电压引入芯片,导致芯片烧毁。
, y0 n/ c8 ~% j) {当引脚电压高于VDD时,上方的二极管导通。
: c. q$ I" n6 v5 x: t! a4 ~当引脚电压低于VSS时,下方的二极管导通。4 Z- ?2 m' D9 Q# S/ C3 I

9 ?% l$ R" P+ b8 x' \+ K上拉电阻和下拉电阻& H% |6 k, F4 l9 V
作用: 控制引脚默认状态的电压。
/ n5 c* }6 i! z! [. e6 B- `7 O7 S开启上拉的时候,引脚默认电压为高电平。% J" J4 B7 x, T% b5 v
开启下拉的时候,引脚默认电压为低电平。
9 Z. @( b' x0 F! E0 n, Q9 l3 l( f# c
TTL肖特基触发器
  I; ~# X8 A' Z, X* `: G& W: W& d/ ?TTL肖特基触发器其实可以理解为用肖特基管构成的施密特触发器。
  C7 L& l% P5 ^% z作用: 将相对缓慢变化的模拟信号变成矩形信号。$ N' L! q% g3 F5 @9 X( W
当输入电压高于正向阈值电压,输出为高。" @8 n$ ~+ T  ^# c* n' c. N
当输入电压低于负向阈值电压,输出为低。
3 \7 C. p' \0 S4 f: }; D& C8 `" S; I+ b
P-MOS管和N-MOS管9 r1 m1 x- t0 m
作用: 使得GPIO具有“推挽输出”和“开漏输出”的模式。  K& S( s9 g5 k( w6 A/ a
P-MOS管: MCU输出为 1 导通,低电平关闭。
% u3 {% Z; m6 {4 H* n8 ]N-MOS管: MCU输出为 0 导通,高电平关闭。% M7 S: B/ s* ^5 b% a. S& T
% a2 L1 x9 G) H' h
3. GPIO工作模式解析& j2 e6 T7 j0 Y6 u( K
浮空输入模式! h3 N7 K6 U( ], M
浮空输入模式下,I/O端口的电平信号直接进入到输入数据寄存器。
$ y- ~( X+ V* d5 K! A1 s8 eMCU直接读取I/O口电平,I/O的电平状态是不确定的,完全由外部输入决定。6 }7 h/ _- u8 M0 v$ N# [1 Q
$ T7 r* G4 T5 J) w+ h( R1 n
EEJVLSJMHEE`NX1}XUZF6MQ.png
9 \7 J. T! b& a( Z, I1 d2 K  a$ }& V: U  \- i
Q5VUKIL18%U)E%LHF]N5L0F.png
2 O4 x; Y4 p! n: }  D! r2 N+ _, a! g- I5 O
上拉输入模式
9 H0 t8 F& ^! Z上拉输入模式下, I/O端口的电平信号经过上拉电阻进入到输入数据寄存器。
8 q& n/ K& m4 z* O
  \9 \. ]* V: G* {2 w6 }* ~ (X86[7RK{8IPV{0}KJKWDWP.png % f, f. m2 i" P, ]% H0 v
$ P* l* R9 _% ~) v9 ?; T! @
RC9`5W{GN4QP%F~B0DY~S05.png ; o" d  o$ r5 [; X

7 @" w" l9 z. j( t2 ASTM32的内部上拉是"弱上拉",即通过此上拉输出的电流是很弱的,如要求大电流还是需要外部上拉。8 s" I0 j1 a  \7 H$ Z, p$ v

3 F( [; B% ]$ @. K下拉输入模式
6 n( e* S8 g# k, u  M下拉输入模式下, I/O端口的电平信号经过下拉电阻进入到输入数据寄存器。$ R8 Y5 c! J) x

5 c$ h0 t) r8 l! ? 9{N}DAO{NV`P9YWL0CJ[W{V.png
- [$ x5 \. I2 R
6 r4 n) g# ?( z) |. {3 }: J6 D %S}J72)0M{SBRIL0KI~9)E0.png
% y7 G, J% h  ^5 D
  E% h8 H- ~2 y3 p1 M+ k# Q7 {3 L模拟输入模式

( ]$ \' n) i+ b+ u: P模拟输入模式下, I/O端口的电平信号不经过TTL肖特基触发器,直接进入ADC模块,并且输入数据寄存器为空 ,MCU不能在输入数据寄存器上读到引脚状态。
! Z8 u$ p9 ~  }1 N$ w  A* C: }在模拟输入模式下,上拉电阻和下拉电阻是不起作用的,即使配置上拉和下拉模式,也不会有作用。
/ q9 a. S8 Y! u; R5 G4 C/ Y% M. [* s
${LA~36`9~4@066WCG{N{63.png 2 }) Y6 j  w6 q# _8 f( u: x0 n  M
/ S& m' s, T0 b' t: M# `: |1 _
开漏输出模式
- v( q( }" Q9 N3 X. H$ o( P, l, c
开漏输出模式下, P-MOS管不工作,只有N-MOS管工作,MCU只能控制输出低电平。0 x) V# ~" W, d5 U( j
MCU输出低电平的时候,N-MOS管导通,I/O引脚输出低电平。
; _: ]7 w) \, T) |! w; @/ ?% FMCU输出高电平的时候,N-MOS管关闭,I/O引脚悬空状态。
( A5 u7 [) v# ~! @* V! ?7 m2 `8 q3 x# n+ P# s) k/ e# g
VBHP}RR$Q(TWI[HHT{HO$`K.png
# K: @2 {! T' l* b+ J# e+ @1 D0 h; o8 `" e% C( }
推挽输出模式$ l& Y( ~) O4 K9 K2 v7 d. {! e! V
推挽输出模式下, P-MOS管和N-MOS管都工作,MCU可以控制输出高电平和低电平。
1 H4 \, X+ z2 p) l" g% |2 r- r+ mMCU输出为 0 的时候,N-MOS管导通,I/O引脚输出低电平。0 m' v# u+ C4 ~0 Q$ J
MCU输出为 1 的时候,P-MOS管导通,I/O引脚输出高电平。3 K4 f8 c! ^& D& |( x! H

/ |/ _) q- Y; y* e  M) D% `/ U- u JU}L4ELAYLJW6ZEJ3A`CGQT.png
: o# S, Q3 x( j5 _8 r$ M7 {- n, Q3 |
复用开漏输出模式" n" ?3 z5 Q0 y0 O( d
复用开漏输出模式下, GPIO复用为其他外设,输出数据寄存器GPIOx_ODR无效, 输出的高低电平的来源于其它外设。
: E! f5 G% O' j3 ^" W& [1 i) Q: R% V( I' D: F5 ]% p. v) F6 Q  _
UNH3DR2C{7(G]8HY{KW~6.png
2 d1 F& d* m  r% a- B6 l5 O8 f& \2 V
复用推挽输出模式
" f! \, A( b1 g* J1 l6 W* T
复用推挽输出模式下, GPIO复用为其他外设,输出数据寄存器GPIOx_ODR无效, 输出的高低电平的来源于其它外设。
. d/ Y9 U. k6 |* U) g; Z% U
' {* \2 n$ P7 n5 C7 K/ k! O2 j E)%SN~($X2R5{]`YL0K7M]F.png
  J( ^2 |$ d. H* |' J  m" {* ^1 R: e; ^
1 F8 L/ t! t- }! Z" [
收藏 评论0 发布时间:2022-5-3 14:17

举报

0个回答

所属标签

相似分享

官网相关资源

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