【GPIO】通用输入/输出工作模式原理

2023-11-07

1、GPIO基本结构
  • 保护二极管:IO引脚上下两边两个二极管用于防止引脚外部过高、过低的电压输入。 当引脚电压高于VDD时,上方的二极管导通;当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。
  • P-MOS管和N-MOS管:由P-MOS管和N-MOS管组成的单元电路使得GPIO具有“推挽输出”和“开漏输出”的模式
  • TTL肖特基触发器:信号经过触发器后,模拟信号转化为0和1的数字信号(整形电路)。
  • 当GPIO引脚作为ADC采集电压的输入通道时,用其“模拟输入”功能,此时信号不再经过触发器进行TTL电平转换, 以保证 ADC外设要采集到的原始的模拟信号。
  • FT 代表着这个GPIO口时兼容3.3V和5V的;如果没有标注“FT”,就代表着不兼容5V

2、GPIO输入输出的8种模式
  • 4种输入模式:上拉输入、下拉输入、浮空输入、模拟输入
1) 上拉输入模式:
默认情况下输入引脚数据为1,高电平
上拉输入模式下,I/O端口的电平信号直接进入输入数据寄存器
在I/O端口悬空(在无信号输入)的情况下,输入端的电平保持在高电平(上拉连接电压)
在I/O端口输入为低电平的时候,输入端的电平也是低电平(上拉电压和端口导通)
2)下拉 输入 模式:
默认情况下输入引脚为0,低电平。
下拉输入模式下,I/O端口的电平信号直接进入输入数据寄存器
在I/O端口悬空(在无信号输入)的情况下,输入端的电平保持在低电平(下拉连接电压)
在I/O端口输入为高电平的时候,输入端的电平也是高电平(下拉电压和端口导通)
3)浮空输入模式:
I/O端口的电平信号直接进入输入数据寄存器
I/O的电平状态是不确定的,完全由外部输入决定
———— 如果在该引脚悬空(在无信号输入)的情况下,读取该端口的电平是不确定的
[]通常用于IIC、USART
4)模拟输入模式:
I/O端口的模拟信号(电压信号,而非电平信号)直接模拟输入到 片上外设模块(如ADC模块)
  • 4种输出模式:推挽输出、 开漏输出、推挽复用输出、开漏复用输出
1)推挽输出: P-MOS管+N-MOS管
可以输出高低电平0和1,适用于双向IO使用
当设置输出的值为高电平的时候,P-MOS管处于开启状态,N-MOS管处于关闭状态,此时I/O端口电平由P-MOS管决定:高电平
当设置输出的值为低电平的时候,P-MOS管处于关闭状态,N-MOS管处于开启状态,此时I/O端口电平由N-MOS管决定:低电平
同时,I/O端口的电平也可以通过输入电路进行读取;注意,此时I/O端口的电平 一定是输出的电平
2)开漏输出: 上拉电阻+N-MOS管
可以输出0和1,适用于电平不匹配场合,要得到高电平需要上拉电阻才行
当设置输出的值为高电平的时候,N-MOS管处于关闭状态,此时I/O端口的电平就不会由输出的高低电平决定,而是由I/O端口外部的上拉或者下拉决定;
当设置输出的值为低电平的时候,N-MOS管处于开启状态,此时I/O端口的电平就是低电平
同时,I/O端口的电平也可以通过输入电路进行读取;注意,I/O端口的电平 不一定是输出的电平
3)推挽复用输出
不是让CPU直接写输出数据寄存器,取而代之利用片上外设模块的复用功能输出来决定的
片内外设功能:IIC的SCL、SDL
4)开漏复用输出
不是让CPU直接写输出数据寄存器,取而代之利用片上外设模块的复用功能输出来决定的
片内外设功能:TX1,MOSI,MISO,SCK,SS

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【GPIO】通用输入/输出工作模式原理 的相关文章

  • STM32F207 I2C 测试失败

    我正在使用 STM32F207 微控制器在 STM3220G EVAL 板上学习嵌入式开发 我尝试通过连接同一芯片上的两个 I2C2 和 I2C3 模块并发送 接收字符来测试 I2C 接口 这是我当前编写的代码 使用 mdk arm 5 i
  • 普冉32位单片机 PY32C642,M0+内核,1.7 V ~ 5.5 V宽工作电压

    PY32C642 单片机采用高性能的 32 位 ARM Cortex M0 内核 宽电压工作范围 嵌入 24Kbytes Flash 和 3 Kbytes SRAM 存储器 最高工作频率 24 MHz 包含多种不同封装类型产品 工作温度范围
  • 为什么这么多人自学黑客,但没过多久就放弃了(掌握正确的网络安全学习路线很重要)

    网络安全是一个 不断发展和演变 的领域 以下是一个 网络安全学习路线规划 旨在帮助初学者快速入门和提高自己的技能 基础知识 网络安全的 基础知识 包括 网络结构 操作系统 编程语言 等方面的知识 学习这些基础知识对理解网络安全的原理和技术至
  • 【OpenCV学习笔记02】- 图像入门

    内容 这里介绍了图像处理的入门操作 你将学习如何读取图像 如何显示图像以及如何将其保存回去 你将学习以下功能 cv imread cv imshow cv imwrite 简单使用OpenCV 读取图像 使用 cv imread 函数读取图
  • Arm:objcopy 如何知道 elf 中的哪些部分要包含在二进制或 ihex 中?

    我正在开发一个项目 其中涉及解析arm elf 文件并从中提取部分 显然 elf 文件中有很多部分没有加载到闪存中 但我想知道 objcopy 到底如何知道要在二进制文件中包含哪些部分以直接闪存到闪存中 以arm elf文件的以下reade
  • for循环延时时间计算

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 之前做led点亮的实验 好像是被delay函数影响了 因为delay参数设置的不对
  • 小白也能学会的创建Git仓库实操

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 2k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 2024年网络安全十10大发展趋势发布

    2023年网络安全十10大发展趋势发布 近日 中国计算机学会 CCF 计算机安全专委会中 来自国家网络安全主管部门 高校 科研院所 大型央企 民营企业的委员投票评选出2023年网络安全十大发展趋势 福利 趋势一 数据安全治理成为数字经济的基
  • msyql 异常,别干着急,70%的问题都在这里!

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 【计算机毕业设计】OA公文发文管理系统_xtv98

    近年来 人们的生活方式以网络为主题不断进化 OA公文发文管理就是其中的一部分 现在 无论是大型的还是小型的网站 都随处可见 不知不觉中已经成为我们生活中不可或缺的存在 随着社会的发展 除了对系统的需求外 我们还要促进经济发展 提高工作效率
  • 计算机Java项目|基于SSM的微课学习系统

    作者主页 编程指南针 作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智
  • 【GRNN-RBFNN-ILC算法】【轨迹跟踪】基于神经网络的迭代学习控制用于未知SISO非线性系统的轨迹跟踪(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 第1部分 2 2 第2部分
  • systick定时器

    systick定时器 文章目录 前言 一 前期疑惑 二 解答 1 关于systick是阻塞的吗 2 非阻塞 三 软件编写 总结 前言 这边记录systick相关知识点 一 前期疑惑 在学习systick志气啊 其实对于systick还是一脸
  • 核心耦合内存在 STM32F4xx 上可执行吗?

    尝试从 STM32F429s CCM 运行代码 但每当我命中 CCM 中的第一条指令时 我总是会遇到硬故障 并且 IBUSERR 标志被设置 该指令有效且一致 STM32F4xx 是否可能不允许从 CCM 执行 数据访问效果良好 alios
  • STM32 上的 ADC 单次转换

    我正在研究 STM32 F103x 上的 ADC 编程 并从最简单的情况 单次转换开始 测量内部温度传感器 连接到 ADC1 的值 并使用 USART 将其发送到 COM 端口 目标似乎很明确 但是当我尝试将源代码下载到闪存时 它不会向 C
  • 如何为 Arm Cortex M4 交叉编译 GSL?

    我正在使用带有arm cortex m4的STM32 MCU 并且想要使用gsl 2 7 1 但是 我已经尝试过例如命令 configure prefix home user name gsl arm target arm none eab
  • 在 Contiki 程序中使用 malloc

    考虑以下 Contiki 程序 include
  • STM32F0、ST-link v2、OpenOCD 0.9.0:打开失败

    我在用着发射台 http www ti com ww en launchpad about htmlgcc arm none eabi 4 9 2015q2 为 STM32F0 进行编译 现在我想使用该集合中的 arm none eabi
  • 哪些变量类型/大小在 STM32 微控制器上是原子的?

    以下是 STM32 微控制器上的数据类型 http www keil com support man docs armcc armcc chr1359125009502 htm http www keil com support man d
  • 移动数组中的元素

    我需要一点帮助 我想将数组中的元素向上移动一个元素 以便新位置 1 包含位置 1 中的旧值 new 2 包含 old 1 依此类推 旧的最后一个值被丢弃 第一个位置的新值是我每秒给出的新值 我使用大小为 10 的数组 uint32 t TE

随机推荐

  • SSM框架学习(三),SSM整合

    主要整合的主要整合Spring和Mybatis 将Mybatis交由Spring管理 第一步配置datasource
  • 因找不到D3DCompiler_47.dll文件导致游戏软件无法启动问题

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个D3DComp
  • jdbc中加载oracle驱动程序,在一个Java应用程序中使用多个Oracle JDBC驱动程序?

    我想通过JDBC连接到两个不同的Oracle数据库 一个8 0 5 0 0和一个12c 我确实有两个JDBC驱动程序 它们可以通过简单的 hello world 应用程序分别成功地连接到相应的DB 下面 我将它们都放在一个Java应用程序中
  • 【R语言】实验五 综合应用

    系列文章目录 实验一 R 语言数据结构 数据导入与数据处理 实验二 基本数据处理 实验三 数据可视化 实验四 数据分析 实验五 综合应用 实验数据 实验数据下载 1 systation 数据集 systation csv 中包含的是沈阳地铁
  • springmvc_上传图片以及显示图片到页面

    首先我使用的开发工具是IntelliJ idea 今天想做一个上传头像以及显示头像的简单功能 也在网上查询了很多资料 真的看得头大 最后还是自己鼓捣出来了 明明很简单的一个功能 先看看效果吧 需要注意的地方 1 记住要在wepapp文件目录
  • 必看,Mac苹果电脑重装系统教程

    们在使用mac电脑的过程中 因为Mac电脑长时间使用或多或少都可能会出现一些问题 这个时候我们可以选择重新安装系统来解决这些问题 Mac电脑重装系统方法其实很简单 分为两种 一种可以在线重装系统 一种可以将Mac系统制作到U盘里进行系统重装
  • ubuntu pptp

    Hi 1 安装pptp linux sudo apt get install pptp linux binutils 2 建立pptp连接 sudo pptpsetup create testvpn server 45 77 243 243
  • 在Ubuntu18.04上安装Docker CE的方法

    卸载旧版本 如果之前安装旧版本 需要先卸载 1 sudoapt get remove docker docker engine docker io containerd runc 设置仓库 更新apt包索引 1 sudoapt get up
  • Java实验3 员工管理系统

    Java实验3 员工管理系统 文章目录 Java实验3 员工管理系统 toc 1 实验要求 2 具体创建过程 3 结果展示 4 代码展示 1 实验要求 进行一个企业员工基本信息的数据库设计 使用员工信息表 部门信息表两个数据表来存放数据 选
  • SSM集成Redis的小案例

    一 详情介绍 这里是使用Window版本的Redis 将下载好的Windows版本的Redis压缩包解压到一个目录下 客户端使用的是Redis Desktop Manager 使用Redis需要启动相应的服务 操作如下图所示 备注 双击打开
  • LDAP应用技术简述

    LDAP应用技术简述 一 一 简介 a X500 目录服务 OSL X 500目录是基于OSI网络协议的目录服务协议 也是LDAP的前身 但是X 500的缺点是不支持TCP IP 而是支持OSI协议 显然 在 Windows等个人电脑上不可
  • Jenkins

    Jenkins 文章目录 Jenkins 1 Jenkins概述 Jenkins特性 2 系统集成工具 Jenkins和Hudson 3 部署方案 手动部署流程 自动化署流程 4 Jenkins svn自动部署 环境准备 yum部署Jenk
  • Linux安装Oracle JDK

    从公司云平台申请的虚拟机默认安装了open jdk 想改成oracle 官方的jdk 1 检查系统jdk版本 root localhost software java version openjdk version 1 8 0 102 Op
  • vue js 获取yaml文件内容并且将文件内容转换为JSON

    写在公共js内 export function eadFile file const reader new FileReader const promise new Promise resolve reject gt reader onlo
  • 通过libusb读取鼠标数据

    include
  • 临界区锁 InitializeCriticalSection()--- EnterCriticalSection()--LeaveCriticalSection()

    1 InitializeCriticalSection 此函数初始化一个临界区对象 格式 void InitializeCriticalSection LPCRITICAL SECTION lpCriticalSection 参数 lpCr
  • C++ VTK 8.2 如何绘制弹簧图形

    创建圆柱 vtkSmartPointer
  • c++primer 第十五章笔记

    15 1 oop 概述 面向对象程序设计核心思想 数据抽象 继承 动态绑定 继承 联系在一起的类构成一种层次关系 通常在层次关系的根部有一个基类 派生类 其他类则直接或间接地从基类继承而来 继承示例代码 class Quote public
  • c语言之矩阵

    矩阵作为线性代数核心内容之一也是刷题人时常会遇到的一种类型 本篇博客简单介绍一下矩阵转置 上三角矩阵以及杨氏矩阵 1 转置矩阵 输入m行n列的矩阵以n行m列的方式打印出来 只要将数组的行列进行交换即可 并不难想也不难写 相应练习 牛客网BC
  • 【GPIO】通用输入/输出工作模式原理

    1 GPIO基本结构 保护二极管 IO引脚上下两边两个二极管用于防止引脚外部过高 过低的电压输入 当引脚电压高于VDD时 上方的二极管导通 当引脚电压低于VSS时 下方的二极管导通 防止不正常电压引入芯片导致芯片烧毁 P MOS管和N MO