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

【经验分享】GPIO 八种工作模式详解

[复制链接]
STMCU小助手 发布时间:2022-3-17 17:42

今天给大家分享一下 GPIO 基础,参考资料:: P$ m/ O- ?7 h# _

STM32F1xx 官方资料:

《STM32中文参考手册V10》-第8章通用和复用功能IO(GPIO和AFIO)

CPTN~{O@{@8[H[Y%QBJ)DAT.png
- ?9 M7 z- i$ j4 ~( }+ p

GPIO 是通用输入/输出端口的简称,是 STM32 可控制的引脚。GPIO 的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。

STM32的八种GPIO口模式

1) GPIO_Mode_AIN 模拟输入;
; v" M1 u$ y3 V0 J6 L2) GPIO_Mode_IN_FLOATING 浮空输入;
/ @6 X- x, T& K* c, V3) GPIO_Mode_IPD 下拉输入;
' b) {  N7 K( i# [! `! ?- ~4) GPIO_Mode_IPU 上拉输入;
9 w, M% Q; P2 I% Z$ ]3 G
/ K8 ^; z1 m- f! G* l5) GPIO_Mode_Out_OD 开漏输出;
& ~$ O5 d: p: o; a8 t6) GPIO_Mode_Out_PP 推挽输出;
( R) ]+ E9 E% F( j  W0 I& `3 V7) GPIO_Mode_AF_OD 复用开漏输出;
9 l' p# U0 j9 c0 Q, r+ g8) GPIO_Mode_AF_PP 复用推挽输出。9 x* c& x4 a5 z! m8 a1 M/ x! Z+ }

STM32 普通 GPIO 内部逻辑图

3~_(LZ{LQOPT5_KBO}RM4)5.png ' f! t" J9 l8 g. j

保护二极管:IO引脚上下两边两个二极管用于防止引脚外部过高、过低的电压输入。当引脚电压高于VDD时,上方的二极管导通;当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。也叫钳位二极管。

P-MOS管和N-MOS管:由P-MOS管和N-MOS管组成的单元电路使得GPIO具有“推挽输出”和“开漏输出”的模式。

TTL肖特基触发器:信号经过触发器后,模拟信号转化为0和1的数字信号。但是,当GPIO引脚作为ADC采集电压的输入通道时,用其“模拟输入”功能,此时信号不再经过触发器进行TTL电平转换。(可以理解为一个比较器,大于某个值是1,小于某个值是0)

查看《STM32中文参考手册V10》中的GPIO的表格时,会看到有“FT”一列,这代表着这个GPIO口时兼容3.3V和5V的;如果没有标注“FT”,就代表着不兼容5V。比如STM32F103VET6的GPIOE口那一组全部兼容5V,其他组是部分兼容5V。

备注:导通路径为黄色部分。

1、模拟输入 GPIO_Mode_AIN

7V_M}_JH6ABYBXV[])R~P]U.png & `; A* i0 r/ Z+ w( S

此模式可以检测外部输入的模拟电压,可以检测电压值,只要不高于Vcc即可。

2、浮空输入 GPIO_MODE_IN_FLOATING

}XOVPD[1OAP5G63S$I0810E.png
- b% ~# t9 T$ f- }! l

此模式最常用的是检测按键,可以接收高低电平。但容易被干扰。

3、下拉输入GPIO_Mode_IPD

M5Y47KC(W][`G19]P[J1ZCB.png
: Y3 [( B0 x# G+ B4 i

此模式检测到电平默认为低,可以检测到由低到高的电平变化。

4、上拉输入GPIO_Mode_IPU

N`Y7MS5R)ZCYD[H9R{QORHN.png % ^) l* H" m+ J0 {+ \  R

此模式检测到电平默认为高,可以检测到由高到低的电平变化。

5、开漏输出GPIO_Mode_Out_OD

J9J6FEOL6BL4[)23[)LD`83.png
1 s5 }& W% Z0 }+ y

开漏输出用于输出低电平,高电平靠外部上拉电阻电压决定,适用于快速切换电压的外部电路结构。

6、推挽输出GPIO_Mode_Out_PP


. R9 M0 R, P( s+ _1 l' k

推挽输出用于输出高低电平,是最常用的模式。

7、复用开漏输出GPIO_Mode_AF_OD

DMB)PEJ0V|E42E}VJPR`C.png ( Q" F7 G" {& i' J4 ?/ ~4 s' C

复用 IIC 时候选择复用开漏输出,因为开漏输出可以“线与”。

8、复用推挽输出GPIO_Mode_AF_PP

~1QCS2M~BWNY9X(94GFCZ(S.png
  v+ Z- g' b, B0 Z, ?

其他复用比如 SPI 等可以选择复用推挽输出。


( O/ E, o6 B2 ?( E) S7 K

什么是推挽结构和推挽电路?

推挽结构一般是指两个参数相同的三极管或MOS管分别受两互补信号的控制,总是在一个三极管或MOS管导通的时候另一个截止。高低电平由输出电平决定。

推挽输出和开漏输出

9O9`1(AN8[899X5OADC1FRS.png

左侧为推挽输出,可以输出高低电平。右侧为开漏输出,只能输出低电平,高电平靠外部上拉电阻决定。

图中所示为三极管,也可以叫开集输出(集电极开路输出),开漏输出是当这个管子为MOS管,漏极开路输出,叫开漏输出。

推挽输出:上面三级管导通,输出高电平,下面三极管导通,输出低电平。

开漏输出:三极管导通输出低电平,三极管截止是高阻态,电平由外部上拉电阻决定。

推挽输出高电平(向负载推流):

LBV15%8VS~%MGX2W9L)23BT.png

* k) J3 C5 H  S& h4 n  n
推挽输出低电平(从负载拉流):
( d4 f4 i# |0 d9 \4 t
D8A}Q}{I[21VMWK]40%[~4R.png

& y- j/ t3 B' T& [. l: \
BWX69@_Z$4YVL5HE`(R}GMT.png
赞 收藏 评论0 发布时间:2022-3-17 17:42

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版