当前位置: 首页 > news >正文

GPIO八种工作模式

目录

一、推挽输出

二、开漏输出

三、复用推挽输出

四、复用开漏输出

五、浮空输入

六、上拉输入

七、下拉输入

八、模拟输入


GPIO八种配置模式,原理和使用场景,硬件原理如下图:

一、推挽输出

1、 原理

       当控制栅极为低电平时,上面的P沟道MOS管导通,下面的的N沟道MOS管截至,由于上管的S连接VDD,所以输出高电平。当控制栅极为高电平时,上面的P沟道MOS管截止,下面的的N沟道MOS管导通,由于下管的S连接VSS,所以输出低电平。对于STM32单片机,由于P沟道的MOS输出电流能力很强,所以推挽输出的电流最大可以输出20mA

(1) 推动阶段——当连接到晶体管栅极的内部信号设置为低电平时,PMOS 晶体管被激活,电流从 VDD 流经它到输出引脚,NMOS 晶体管处于非活动状态(开路)且不导通。

(2) 拉动阶段——当连接到晶体管栅极的内部信号设置为高电平时,NMOS 晶体管被激活(关闭)并且电流开始从输出引脚流过它到 GND。同时,PMOS 晶体管处于非活动状态(开路)并且不传导电流。这种类型的输出不允许在总线配置中将多个设备连接在一起,推挽配置最常用于具有单向通信线上(线路上的信号传输仅在单一方向,比如SPI、UART等)。

2、使用场景

单片机主动控制输出高电平和低电平,例如对LED的控制,MOS管的开关控制,使能信号等。

二、开漏输出

1、原理

       开漏输出是为了实现逻辑器件的线与逻辑,如果配置成这种开漏输出,在需要电流输出驱动外部电路时,往往需要上拉一个电阻来提供电路的驱动电流,驱动能力的大小由外部上拉电阻决定,电阻越大,驱动能力越小,电阻越小,驱动能力越大,但是不能超过单片机的GPIO电流能力范围。

2、使用场景

        开漏输出一般应用在I2C、SMBUS 通讯等需要“线与”功能的总线电路中。除此之外,还用在电平不匹配的场合,如需要输出5 伏的高电平,就可以在外部接一个上拉电阻,上拉电源为5 伏,并且把GPIO 设置为开漏模式,当输出高阻态时,由上拉电阻和电源向外输出5 伏的电平,只要电流够,就可以驱动继电器等。

三、复用推挽输出

1、原理

(1) 从电路中可以看出,复用推挽输出和推挽输出并没有太大区别,区别仅仅在于触发源不一样, 单纯的推挽输出是在软件中手动地设置0和1实现的。

(2) GPIO的输出速度:GPIO的引脚速度跟应用相匹配,速度配置越高,噪声越大,功耗越大。

(3) 当然引脚频率是对输出而言的,当GPIO配置为输入模式时,输出速度配置毫无意义,因为输出驱动电路与输入端口是断开的。

(4)GPIO引脚输出频率说的是I/O口驱动电路的响应频率而不是输出信号的频率,可以理解为由高电平转换到低电平的时间:例如,对于串口,假如最大波特率只需115.2kb/s,那么用2MHz的GPIO引脚频率就可以了,既省电,噪声也小。对于I2C接口,假如使用400kb/s波特率,又想留一些裕量,2MHz或许不够,可以选择10MHz的引脚频率。对于SPI接口,假如使用18Mb/s或9Mb/s的波特率,用10MHz的引脚频率显然不够了,需要选50MHz的。

2、使用场景

        而复用推挽输出指的是在某些模式下,例如某个GPIO既可以做USART的引脚,也可以做SPI的引脚等,启用了引脚的复用功能,这个时候需要设置该引脚为复用推挽输出,因为这个时候开发人员只需要配置相应的寄存器(参数),不需要关注具体的引脚电平。

四、复用开漏输出

五、浮空输入

1、原理

        对于单片机来说,此时的输入引脚处于高阻态,需要外部同时提供高电平和低电平,因为在该模式下,内置上拉电阻和下拉电阻都没有生效。而内部的TTL肖特基触发器相当于斯密特触发器,用于对输入信号进行“整形”,将其转化为理想的TTL电平后传入输入数据寄存器,等待CPU读取。

2、使用场景

如果外部电路中已经包含了适当的上拉或者下拉电阻,可以选择浮空输入。

六、上拉输入

1、 原理

        所谓的上拉输入就是内部的上拉电阻投入使用。这个时候当外部输入低电平时可正常输入低电平,而当外部无输入信号(高阻态)时,可由单片机自身的上拉电阻提供高电平信号。

2、使用场景

        输入信号在断开连接时保持稳定的逻辑电平(例如,保持为高电平),可以选择上拉输入。通过使用上拉电阻,可以确保在没有外部信号输入时,输入引脚始终保持一个已定义的稳定状态。

七、下拉输入

1、原理

        下拉输入与上拉输入正好相反,这个时候当外部输入低电平时可正常输入高电平,而当外部无输入信号(高阻态)时,可由单片机自身的下拉电阻提供低电平信号。

2、 使用场景

        输入信号在断开连接时保持稳定的逻辑电平(例如,保持为低电平),可以选择下拉输入。通过使用下拉电阻,可以确保在没有外部信号输入时,输入引脚始终保持一个已定义的稳定状态。

八、模拟输入

1、原理

        只有在此模式下,输入才为模拟信号,因为其他模式输入模拟信号没有任何意义,经过了肖特基触发器或者施密特触发器,全都变成了数字信号。这时候上拉和下拉电阻也没有起到作用,电平直接由外部输入, 传输到内部的AD转换器单元将其转换为数字信号,等待CPU处理。

2、 使用场景

一般用于MCU内部的AD转换。

相关文章:

GPIO八种工作模式

目录 一、推挽输出 二、开漏输出 三、复用推挽输出 四、复用开漏输出 五、浮空输入 六、上拉输入 七、下拉输入 八、模拟输入 GPIO八种配置模式,原理和使用场景,硬件原理如下图: 一、推挽输出 1、 原理 当控制栅极为低电平时&#x…...

C++初阶:适合新手的手撕list(模拟实现list)

上次讲了常用的接口:今天就来进行模拟实现啦 文章目录 1.基本结构与文件规划2.空参构造函数(constructor)3.完善迭代器(iterator)(begin(),end())4.List Capacity(size(),empty())4.增删改查(push_back,pop_back,pop_f…...

js手写Promise(上)

目录 构造函数resolve与reject状态改变状态改变后就无法再次改变 代码优化回调函数中抛出错误 thenonFulfilled和onRejected的调用时机异步then多个then 如果是不知道或者对Promise不熟悉的铁铁可以先看我这篇文章 Promise 构造函数 在最开始,我们先不去考虑Promi…...

基于Web技术的家居室内温湿度监测系统

设计一个基于Web技术的家居室内温湿度监测系统涉及前端和后端开发,以及与硬件传感器的集成。以下是一个简单的设计概述: ### 1. 系统架构 - **前端**: 用户界面,用于显示实时数据和历史记录,可通过Web浏览器访问。 - **后端**: 服…...

ubuntu22.04@laptop OpenCV Get Started: 009_image_thresholding

ubuntu22.04laptop OpenCV Get Started: 009_image_thresholding 1. 源由2. image_thresholding应用Demo2.1 C应用Demo2.2 Python应用Demo 3. 重点分析3.1 Binary Thresholding ( THRESH_BINARY )3.2 Inverse-Binary Thresholding ( THRESH_BINARY_INV )3.3 Truncate Threshold…...

Zeek实战—快速构建流量安全能力

第1章 网络流量与网络安全 1.2流量与网络 从宏观角度进行观察,如果将计算机网络看作一个整体,可以很容易抽象出它是由以下3个部分组成的。 1.网络终端。指连接在网络中的、能够产生或消费网络流量的软/硬件系统,是网络流量在正常情况下的…...

vim命令编辑完文件后,按ESC键退出编辑模式,无法进入命令模式解决方案

发现问题 在Vim编辑器中,我们通常需要按Esc键来退出编辑模式并进入命令模式。但有时,你可能会发现即使按了Esc键,也无法进入命令模式。这可能是由于某些设置或插件导致的。不过,有一个解决办法可以帮助你解决这个问题。 解决办法…...

【生产实测有效】Linux磁盘清理常用命令

经常遇到磁盘空间告警需要清理 常用方法 磁盘空间分析 先查看整体磁盘空间使用情况 df -Th lsblk 再有针对性的查看使用率过高的磁盘 du -hsx --exclude/{proc,sys,dev,boot,home,tmp,usr,var,app,ncltybbpo} /*查找大文件 find . -type d -exec tar -cjvf {}.tar.bz2 {…...

练习:鼠标类设计之1_类内容解析

前言 光做理论上的总结,不做练习理解不会那么深刻 做类的练习,解析类里面的内容有哪些 引入 电脑使用最频繁的两个外设:鼠标和键盘,他们每时每刻都在和用户交互,试做一个鼠标类 思路 我们现在要做一个鼠标类,这个类是属于能动类还是资源类呢?鼠标似乎自己做不了什么,需要和其…...

消息队列RabbitMQ-使用过程中面临的问题与解决思路

消息队列在使用过程中会出现很多问题 首先就是消息的可靠性,也就是消息从发送到消费者接收,消息在这中间过程中可能会丢失 生产者到交换机的过程、交换机到队列的过程、消息队列中、消费者接收消息的过程中,这些过程中消息都可能会丢失。 …...

搜索Agent方案

为啥需要整体方案,直接调用搜索接口取Top1返回不成嘛?要是果真如此Simple&Naive,New Bing岂不是很容易复刻->.-> 我们先来看个例子,前一阵火爆全网的常温超导技术,如果想回答LK99哪些板块会涨,你…...

排序算法---计数排序

原创不易,转载请注明出处。欢迎点赞收藏~ 计数排序(Counting Sort)是一种线性时间复杂度的排序算法,其核心思想是通过统计待排序元素的个数来确定元素的相对位置,从而实现排序。 具体的计数排序算法步骤如下&#xff…...

STM32——LCD(1)认识

目录 一、初识LCD 1. LCD介绍 2. 显示器的分类 3. 像素 4. LED和OLED显示器 5. 显示器的基本参数 (1)像素 (2)分辨率 (3)色彩深度 (4)显示器尺寸 (5&#xff…...

iTop-4412 裸机程序(二十二)- RTC时钟

目录 0.源码1. RTC2. iTop4412 中的 RTC使用的相关寄存器3. BCD编码4. 关键源码 0.源码 GitHub:https://github.com/Kilento/4412NoOS 1. RTC RTC是实时时钟(Real Time Clock)的缩写,是一种用于计算机系统的硬件设备&#xff0…...

Kafka 之 AdminClient API

目录 一. 前言 二. KafkaAdminClient API 2.1. API 总览 2.2. Topic 操作 2.2.1. 创建 Topic 2.2.2. Topic 列表 2.2.3. 删除 Topic 2.2.4. 描述 Topic 详细信息 2.3. 分区 Partition 操作 2.3.1. 增加分区 2.3.2. 分区副本重新分配 2.3.3. 查询分区副本列表 2.4.…...

Flutter run 一直 Running Gradle task ‘assembleDebug’…

发生缘由 Flutter 项目引入 fluttertoast 插件后,执行 Flutter run 一直 Running Gradle task ‘assembleDebug’…,最后发现下载 kotlin-compiler-embeddable-7.1.0.jar 特别的缓慢。 运行环境 电脑系统版本:Windows 10 64bit VS Code&…...

kali无线渗透之用wps加密模式破解出wpa模式的密码12

WPS(Wi-Fi Protected Setup,Wi-Fi保护设置)是由Wi-Fi联盟推出的全新Wi-Fi安全防护设定标准。该标准推出的主要原因是为了解决长久以来无线网络加密认证设定的步骤过于繁杂之弊病,使用者往往会因为步骤太过麻烦,以致干脆不做任何加密安全设定&…...

【Python】高级数据类型

🚩 WRITE IN FRONT 🚩 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…...

挑战杯 python区块链实现 - proof of work工作量证明共识算法

文章目录 0 前言1 区块链基础1.1 比特币内部结构1.2 实现的区块链数据结构1.3 注意点1.4 区块链的核心-工作量证明算法1.4.1 拜占庭将军问题1.4.2 解决办法1.4.3 代码实现 2 快速实现一个区块链2.1 什么是区块链2.2 一个完整的快包含什么2.3 什么是挖矿2.4 工作量证明算法&…...

如何给最小化安装的CentOS主机装个远程桌面?

正文共:888 字 18 图,预估阅读时间:1 分钟 前面我们领微软云Azure的免费主机时(白嫖党618福利!来Azure领200美刀!外加云主机免费用一年!),发现“有资格免费试用服务”的主…...

Cursor实现用excel数据填充word模版的方法

cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...