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

STM32单片机学习笔记1——GPIO结构解析

[复制链接]
STMCU小助手 发布时间:2021-7-22 14:53
GPIO(general purpose intput output) 是通用输入输出端口的简称, 可以通过软件来控制其输入和输出。 STM32 芯片的 GPIO 引脚与外部设备连接起来,可以实现与外部通讯、 控制以及数据采集的功能。
. x" U5 a2 E: e* X- g  t6 T% M结构框图如下:
- {4 \6 ~) v% z) T5 S+ y 1.jpg - U% X$ A1 L% S' Q5 T0 x. I
①保护二极管
) j: C! @5 _2 ^5 w& `' i8 M! g引脚内部加上这两个保护二级管可以防止引脚外部过高或过低的电压输入从而对芯片造成伤害。由于二极管有单向导通的特性,当引脚电压高于 VDD 时,上方的二极管导通吸收这个高电压, 当引脚电压低于 VSS 时, 下方的二极管导通, 防止不正常电压引入芯片导致芯片烧毁。尽管 STM32 芯片内部有这样的保护, 但并不意味着 STM32 的引脚就无所不能, 如果直接将引脚连接大功率器件, 比如电机, 那么要么电机不转, 要么烧坏芯片。# L) a9 B) C% W* M6 k' d4 z2 A

: X$ _- J: q3 ~+ }- c7 |4 f

5 s. l$ s+ X9 Q) C: q0 G: N②内部上下拉电阻6 M6 A( i. k1 R: ]
从结构图可以看出,内部的上下拉电阻分别由一个开关控制,通过配置内部寄存器控制上下拉电阻开关,就可以控制引脚的默认状态电平,从而消除引脚不定状态的影响。当上拉和下拉开关都关断时,引脚处于浮空模式,此时,引脚的电压是不确定的,所以一般情况下我们都会给引脚设置成上拉或者下拉模式, 使它有一个默认状态。
. n/ ?+ a4 N# k) x8 T1 k* |0 j5 a/ p0 h, v" M1 S0 [

5 X0 A: L: T- t③P-MOS 和 N-MOS 管
& G* J0 J1 ^% m( M: N- ~8 e由结构图可知,输出控制单元输出状态给P-MOS 和 N-MOS 管,再将状态输出给I/O引脚。这种电路结构就让GPIO引脚具有了推挽和开漏两种输出模式。为了简化结构,我们将可 P-MOS 当作 NPN三极管, N-MOS 当作 PNP 三极管来分析。
- A( u: Y; x0 H/ b- L3 S# i0 M推挽输出模式: 当输出控制单元输出高电平时, P-MOS 管导通,N-MOS管截止,I/O口输出高电平;当输出控制单元输出低电平时, P-MOS 管截止,N-MOS管导通,I/O口输出低电平。如果当不断转换输入高低电平时,两个MOS管将轮流导通,一个负责灌电流(电流输出到负载),一个负责拉电流(负载电流流向芯片),使其负载能力和开关速度都比普通的方式有很大的提高。0 g5 u8 \2 b! m2 O4 g
开漏输出模式: P-MOS管始终处于关闭状态。当输出控制单元输出低电平时,N-MOS管导通,I/O端口输出低电平;当输出控制单元输出高电平时,N-MOS管截止,I/O端口输出既不是高电平也不是低电平,我们称之为高阻态。要想I/O口输出高电平,必须外加上拉电阻。开漏模式还有一个特点就是引脚具有“线与”关系,当很多个开漏输出模式的引脚接在一起的时候,只要有一个引脚为低电平,则所有的引脚都为低电平。开漏输出模式一般应用在 I2C、 SMBUS 通讯等需要“线与” 功能的总线电路中。  D6 b. Z: |1 b& l$ s$ z

( ~" ]5 \# E5 W+ i, w

0 b5 I1 f* j: t0 X# @' }④输出数据寄存器* ?/ J; T! C0 Q" c) @5 g# J' ?7 p
芯片内部的输出数据寄存器。双MOS管的输入信号,即进入输出控制单元的信号就是通过输出数据寄存器来进行设定的。+ i9 S6 J; z# Y' j: ]: O. b
4 ]4 |1 }) e7 V5 r

& Z, _* i3 I1 J* q& X$ |7 Q⑤复用功能输出  q( t! P, G' C
由于 STM32 的 GPIO 引脚具有第二功能, 因此当使用复用功能的时候, 也就是通过其他外设复用功能输出信号与 GPIO 数据寄存器一起连接到输出控制单元结构, 其中梯形结构是用来选择使用复用功能还是普通 IO 口功能。' M0 D6 G' e, \% w3 z+ n& o1 l6 Z

) a4 G, L9 M$ S4 p8 ?& e
2 L" t7 V8 L  d
⑥输入数据寄存器2 ]4 M1 K1 ?# f, u
输入数据寄存器内的数据是由 IO 口经过上下拉电阻、 施密特触发器引入。 当信号经过触发器, 模拟信号将变为数字信号 0 或 1, 然后存储在输入数据寄存器中, 通过读取输入数据寄存器 GPIOx_IDR 就可以知道 IO 口的电平状态。
& y9 \9 z2 K0 y, n/ Y5 Z3 o: ?# e( R; _: s

/ G0 N/ h5 V2 H$ G) z⑦复用功能输入5 A7 `& _, h9 H6 n/ z( a
与复用功能输出相似,在复用功能输入模式时, GPIO 引脚的信号传输到 STM32 其他片上外设, 由该外设读取引脚的状态。
# {5 G# Y: _  _/ t  d
+ D; w* `6 z7 y) s. Y
$ f8 V$ E6 x3 c
⑧模拟输入输出
; r( q0 f; ?! A+ V当 GPIO 引脚用于 ADC 采集电压的输入通道时, 用作“模拟输入” 功能,此时信号是不经过施密特触发器的, 因为经过施密特触发器后信号只有 0、 1 两种状态, ADC 外设要采集到原始的模拟信号, 信号源输入必须在施密特触发器之前。 类似地, 当 GPIO 引脚用于 DAC 作为模拟电压输出通道时, 此时作为“模拟输出” 功能, DAC 的模拟信号输出就不经过双 MOS 管结构了, 模拟信号直接通过管脚输出。
% {) F4 T+ ^$ K/ ^% k' Q8 p- K) s  [* r# Y8 O9 ?
赞 收藏 评论0 发布时间:2021-7-22 14:53

举报

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