GPIO的8种工作模式

目录

1.前言

2.I/O端口位的基本结构

3.GPIO的工作模式(8种)
3.1 输入模式 - 浮空输入
3.2 输入模式 - 输入上拉
3.3 输入模式 - 输入下拉
3.4 输入模式 - 模拟输入
3.5 输出模式 - 开漏输出
3.6 输出模式 - 开漏复用功能
3.7 输出模式 - 推挽式输出
3.8 输出模式 - 推挽式复用功能

4.推挽输出和开漏输出的区别简述
4.1 推挽输出
4.2 开漏输出

1.前言

笔者在b站学习【正点原子】 手把手教你学STM32单片机教学视频 嵌入式 之 F103-基于新战舰V3/精英/MINI板 的时候,发现up主所述的GPIO工作原理较为详细。在此,我将 STM32中文参考手册(免费的官网就能下载,还有人在CSDN收费???) 与 up主【正点原子官方】的视频中所描述的GPIO工作原理,做一个书面化的整理(仅用于学习,错误之处还请大家指正)。

首先,在此介绍一个简单的概念,即 电平 通常用高低来描述,电压 通常用大小描述。

2.I/O端口位的基本结构

在这里插入图片描述

3.GPIO的工作模式(8种)

GPIO的8种工作模式: 包括 4种 输入模式 和 4种 输出模式

◆ 4种输入模式:
① 输入浮空 GPIO_Mode_IN_FLOATING
② 输入上拉 GPIO_Mode_IPU
③ 输入下拉 GPIO_Mode_IPD
④ 模拟输入 GPIO_Mode_AIN

◆ 4种输出模式:
① 开漏输出 GPIO_Mode_Out_OD
② 开漏复用功能 GPIO_Mode_AF_OD
③ 推挽式输出 GPIO_Mode_Out_PP
④ 推挽式复用功能 GPIO_Mode_AF_PP

3.1 输入模式 - 浮空输入

在这里插入图片描述

图一 浮空输入

如图中黄色阴影部分所示 ,表示在此模式下由 ①~④ 的电路为通路。首先,由 ① I/O端口 输入电平(高或低),经过两只保护二极管后,到达 ② TTL施密特触发器(此时两个开关为断开状态)。其次,电平再由 ② TTL施密特触发器 将电平直接传送到 ③ 输入数据寄存器 中。最后,再通过 ③ 输入数据寄存器 传送至 ④ CPU 中。此时 ④ CPU 便可通过 ③ 输入数据寄存器 等读取到 ① I/O端口 处的高或低电平的情况。

简言之,浮空模式下CPU可以读取到外部输入的高或低电平。

3.2 输入模式 - 输入上拉

在这里插入图片描述

图二 输入上拉

浮空模式输入上拉模式 的主要区别在于, 输入上拉模式 中上拉电阻(连接VDD)的开关闭合(图二中处于黄色区域的上拉电阻的开关闭合),上拉电阻的大小约为 30~50kΩ

3.3 输入模式 - 输入下拉

在这里插入图片描述

图三 输入下拉

同理 ,输入下拉模式浮空模式输入上拉模式 的主要区别在于 输入下拉模式 中下拉电阻(连接VSS)的开关闭合(图二中处于黄色区域的下拉电阻的开关闭合)。

3.4 输入模式 - 模拟输入

在这里插入图片描述

图四 模拟输入

如图中黄色阴影部分所示 ,此模式下 输入上拉输入下拉 失效。该模式可将 外部电压(0~3.3V)转换为 电平(AD转换)。

3.5 输出模式 - 开漏输出

在这里插入图片描述

图五 开漏输出

如图中黄色阴影部分所示 ,首先由 ① CPU位设置/清除寄存器 中写入 1/0,然后 它 将电平的高低映射到 输出数据寄存器 中。随后再到 ② 输出控制电路 中, 若 ② 输出控制电路 接收到 1(高电平),则 ③ N-MOS管 截止。此时 ④ I/O端口 处的电平不是通过接收到 1(高电平)的 ② 输出控制电路 和截止的 ③ N-MOS管 来控制的,而是通过外部的 “上拉” 或 “下拉” 来决定(图五中未画出)。若 ② 输出控制电路 接收到 0(低电平),则 ③ N-MOS管 导通,此时 ④ I/O端口 处的电平被 ③ N-MOS管 拉低为低电平。

在输出状态下,④ I/O端口 的电平还可通过 ④ I/O端口 → ⑥ 输入数据寄存器 → ⑦ CPU读取 的线路读取(此状态在 ② 输出控制电路 接收到高电平“1”时启用)。

3.6 输出模式 - 开漏复用功能

在这里插入图片描述

图六 开漏复用功能

开漏复用功能开漏输出 的区别在于,开漏复用功能② 输出控制电路 处的电平来源不同(开漏复用功能① 复用功能输出 提供,来自“片上外设模块”,即“外设”)。

开漏输出 相同的是,若 开漏复用功能 中的 ② 输出控制电路 接收到 1(高电平),则 ③ N-MOS管 截止。此时 ④ I/O端口 处的电平不是通过接收到 1(高电平)的 ② 输出控制电路 和截止的 ③ N-MOS管 来控制的,而是通过外部的 “上拉” 或 “下拉” 来决定(图六中未画出)。若 ② 输出控制电路 接收到 0(低电平),则 ③ N-MOS管 导通,此时 ④ I/O端口 处的电平被 ③ N-MOS管 拉低为低电平。

3.7 输出模式 - 推挽式输出

在这里插入图片描述

图七 推挽式输出

推挽式输出 的控制输出寄存器和 开漏输出 是相同的。但 推挽式输出 中的 ② 输出控制电路 接收到 1(高电平)时,③ P-MOS管 导通、③ N-MOS管 截止,此时1(高电平)将通过 ③ P-MOS管 传输至 ④ I/O端口 并将1(高电平)输出。相反 推挽式输出 中的 ② 输出控制电路 接收到 0(低电平)时,③ P-MOS管 截止、③ N-MOS管 导通,此时0(低电平)将通过③ N-MOS管传输至 ④ I/O端口 并将0(低电平)输出。

在输出状态下,④ I/O端口 的电平也可通过 ④ I/O端口 → ⑥ 输入数据寄存器 → ⑦ CPU读取 的线路读取。

3.8 输出模式 - 推挽式复用功能

在这里插入图片描述

图八 推挽式复用功能

推挽式输出推挽式复用功能 的主要区别在于,推挽式输出② 输出控制电路 处的电平来源不同(推挽式复用功能① 复用功能输出 提供,来自“片上外设模块”,即“外设”)。

4.推挽输出和开漏输出的区别简述

4.1推挽输出:

可以输出强高低电平,连接数字器件。推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。

4.2开漏输出:

只可以输出强低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极。要得到高电平状态需要上拉电阻才行。适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内)。

—————————END—————————

  • 37
    点赞
  • 243
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

學不董Gavin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值