STM32F103GPIO工作模式及原理

news2024/11/18 19:43:43

目录

    • GPIO简介
    • GPIO工作模式
      • 输入模式
      • 输出模式
      • 输出速度
    • GPIO框图和电路解析
      • 电路标识
      • 电路元件
    • GPIO工作模式电路解析
      • 浮空输入
      • 上拉输入
      • 下拉输入
      • 模拟输入
      • 开漏输出
      • 推挽输出
      • 推挽式复用功能
      • 开漏式复用功能
    • IO工作模式的选取
      • 输入模式
      • 输出模式

GPIO简介

GPIO,全称为通用输入输出端口,是STM32系列微控制器中的一个重要概念。STM32芯片的GPIO引脚可以被配置为输入模式或输出模式,实现与外部设备的通信、控制以及数据采集功能。

GPIO工作模式

输入模式

  1. 浮空输入
  2. 上拉输入
  3. 下拉输入
  4. 模拟输入

输出模式

  1. 开漏输出
  2. 推挽输出
  3. 推挽式复用功能
  4. 开漏式复用功能

输出速度

  • 2MHz
  • 10MHz
  • 50MHz

GPIO框图和电路解析

在这里插入图片描述

电路标识

  • VDD通常指的是正电源电压,即芯片的工作电压。它是为芯片内部逻辑电路提供电源的,使得芯片能够正常工作。
  • VSS通常指的是地线或0V参考电压。它是为芯片内部逻辑电路提供参考电压的,使得芯片内部逻辑能够正常工作。
  • VDD_FT 对5伏容忍I/O脚是特殊的,它与VDD不同

电路元件

  • 保护二极管:保护二极管的作用是防止引脚外部过高或过低的电压输入。当引脚电压高于VDD时,上方的二极管导通;当引脚电压低于VSS时,下方的二极管导通,从而保护芯片不受异常电压的损坏。 然而,尽管有二极管的保护,大电压和大电流的接入仍可能烧坏芯片。因此,在设计中应考虑引脚的保护电路,避免直接外接大功率驱动器件,如电机等。
  • 上下拉电阻:上下拉电阻的作用是将不确定的信号线确定为高电平或低电平,防止外界干扰。具体来说,当某个引脚不控制时,上下拉电阻可以将该引脚确定为高电平或低电
  • TTL肖特基触发器:TTL肖特基触发器是一种数字逻辑门电路,由两个或多个与非门组成。它的作用是将输入的模拟信号转换为数字信号,即当输入信号达到一定幅度时,触发器输出高电平,否则输出低电平。平。
  • P-MOS:P-MOS管通常与输出引脚相连,用于控制输出信号的电平状态。当输出信号为高电平时,P-MOS管导通,输出引脚通过P-MOS管连接到VDD,输出高电平。当输出信号为低电平时,P-MOS管截止,输出引脚通过N-MOS管接地,输出低电平。
  • N-MOS:N-MOS管通常与输出引脚相连,用于控制输出信号的电平状态。当输出信号为高电平时,N-MOS管截止,输出引脚通过P-MOS管连接到VDD,输出高电平。当输出信号为低电平时,N-MOS管导通,输出引脚接地,输出低电平。

GPIO工作模式电路解析

浮空输入

请添加图片描述

浮空输入,是指不接入上拉或下拉电阻,通过TTL肖特基触发器使得输入进来的电平数据更加稳定。在该模式下,引脚的电平状态完全取决于外部信号,当外部信号不接入时,引脚的电平状态不确定。这种模式一般用于按键检测之类的应用中。

上拉输入

请添加图片描述

上拉输入通过接入上拉电阻来读取引脚电平。当外部信号未接入时,引脚默认电平为高电平。

下拉输入

请添加图片描述

下拉输入通过接入下拉电阻来读取引脚电平。当外部信号未接入时,引脚默认电平为低电平。

模拟输入

请添加图片描述

开漏输出

请添加图片描述
在开漏输出模式下P-MOS不参与工作,控制输出0,N-MOS导通,此时为低电平,控制输出为1,N-MOS关闭,使得引脚既不输出高电平,也不输出低电平,有IO外部链接决定。

推挽输出

请添加图片描述
在推挽输出模式下,当内部信号为1时,上边的P-MOS管导通,下边的N-MOS管截止,IO口输出高电平。当内部信号为0时,上边的P-MOS管截止,下边的N-MOS管导通,IO口输出低电平。

推挽式复用功能

请添加图片描述
复用推挽输出模式下的IO不再受ODR控制,当外围电路产生低电平时,会导致IO口输出低电平;当外围电路产生高电平时,会导致IO口输出高电平。

开漏式复用功能

请添加图片描述
在复用开漏输出模式下,IO可以输出高低电平,但无法直接读取外部信号,该模式下的IO不再受ODR控制。由于开漏输出只能输出低电平,如果要输出高电平必须通过上拉电阻才能实现,因此上拉电阻的选择也会影响复用开漏输出的工作状态。

IO工作模式的选取

输入模式

浮空输入

  • 当外部电路中已经包含适当的下拉电阻时,可以选择浮空输入模式。如果连接的是一个开关,开关的另一端已经通过外部电阻连接到地,那么可以选择使用浮空输入模式。
  • 在某些模拟电路中,输入信号可以通过电阻分压器来模拟,当输入信号为0时,电阻分压器的输出电压为0V,相当于浮空输入模式。

注:需要注意的是,浮空输入模式并不常用,但在特定情况下,如模拟输入或低功耗下省电等场景中可能会使用到。在使用浮空输入模式时,应避免外部信号功率很小,否则可能会导致内部上拉电阻影响外部输入电平。因此,在选择使用浮空输入模式时需要根据实际情况进行评估和选择。
上拉输入

  • 上拉输入主要用于检测低电平的输入,并能在未输入时默认IO为高电平。这种模式适用于电路为低有效的元器件的情况(例如LED共阳极)。

下拉输入

  • 下拉输入主要用于检测高电平的输入,并能在未输入时默认IO为低电平。这种模式适用于电路为高有效的元器件的情况(例如LED共阴极)。

模拟输入

  • 当需要采集模拟量信号时,如电压、电流、温度等参数,模拟输入模块可以将这些信号采集到计算机中,并进行相应的处理。
    在自动化和信息化系统中,模拟输入模块可以应用于各种传感器和变送器的信号采集,实现数据采集和监控系统的集成。

输出模式

开漏输出

  • 多设备共享总线:开漏输出允许多个设备共享同一个总线或信号线,通过合理的电平控制,实现对总线或信号线的协调使用,避免冲突和干扰。
  • LED控制:开漏输出也常用于控制LED(Light-EmittingDiode)的亮灭。LED在工作时需要限流,以避免过电流损坏。通过使用开漏输出和外部限流电阻,可以有效控制LED的亮度和闪烁频率。
  • 输入/输出扩展:开漏输出可用于输入/输出(I/O)扩展。通过使用外部电阻和开漏输出组合,可以将一个GPIO(General Purpose
    Input/Output)引脚扩展为多个输入或输出引脚。
  • 推挽输出无法满足需求时:开漏输出和推挽输出在工作原理、上拉电阻、输出电流和应用场景上存在差异。例如,当需要直接驱动负载时,推挽输出更合适;而在多设备共享总线的场景中,开漏输出更为适合。

推挽输出

  • 当输出电平为0V和3.3V时,推挽输出模式是最佳选择。这是因为推挽输出可以输出高电平和低电平,并且不需要外部上拉或下拉电阻。
  • 在高速切换开关状态的应用中,推挽输出模式也是很好的选择。因为它既提高了电路的负载能力,也提高了开关速度。

推挽式复用功能

  • 当GPIO的引脚用作串口的输出时,可以使用复用推挽输出模式。这种模式可以提高电路的负载能力和开关速度,适用于高速切换开关状态的应用。

开漏式复用功能

  • 控制多个PWM信号:当需要控制多个PWM信号时,例如,当多个PWM信号由同一GPIO口输出,并且需要连接在一起时,可以使用复用开漏输出模式。
  • 复用其他外设功能:当GPIO口需要复用其他外设功能,例如I2C的SCL或SDA等,复用开漏输出模式可以方便地实现这些功能。
    多路输出连在一起:当需要将多个输出端口连在一起时,例如,控制多个LED或其他负载,复用开漏输出模式可以方便地实现。

有什么错误请及时指出🤝

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1367941.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

眼镜用超声波清洗机洗会有伤害吗?这些超声波清洗机适合清洗眼镜

用超声波清洗机洗眼镜是一种非常好的选择,超声波清洗机通过高频振动,将眼镜上的污渍、灰尘等清洗干净,比手洗更彻底、更高效。然而,有些人担心超声波清洗机会对眼镜造成伤害。实际上,这种担心是多余的。超声波清洗机在…

python基础教程八(循环1)

1. while循环 为避免多次重复的代码&#xff0c;我们会用到循环 while (condition): 执行语句 while循环的结构非常简单只要条件满足就一直循环直到&#xff0c;条件不满足为止。 例子如下&#xff1a; x1 while x<100:print(x)x1结果就是最简单的输出1-100的数字 while…

【Internal Server Error】pycharm解决关闭flask端口依然占用问题

Internal Server Error The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application. 起因&#xff1a; 我们在运行flask后&#xff0c;断开服务依然保持运行&#xff0…

Java中SpringBoot组件集成接入【MQTT中间件】

Java中SpringBoot组件集成接入【MQTT中间件】 1.MQTT介绍2.搭建MQTT服务器1.Windows2.Ubuntu3.Docker4.其他方式3.mqtt可视化客户端MQTTX及快速使用教程4.SpringBoot接入MQTT1、maven依赖2、MQTT配置3、MQTT组件具体代码1.定义通道名字2.消息发布器3.MQTT配置、生产者、消费者4…

基于Java SSM框架实现班级同学录管理系统项目【项目源码】

基于java的SSM框架实现高校校园点餐系统演示 SSM框架 当今流行的“SSM组合框架”是Spring SpringMVC MyBatis的缩写&#xff0c;受到很多的追捧&#xff0c;“组合SSM框架”是强强联手、各司其职、协调互补的团队精神。web项目的框架&#xff0c;通常更简单的数据源。Spring…

【S32K 进阶之旅】 NXP S32K3 以太网 RMII 接口调试(2)

前言 前文介绍了 NXP S32K3 以太网 RMII 接口调试的开发环境搭建&#xff0c;下面开始详解软件调试步骤。没看过第一节的小伙伴请移步《【S32K 进阶之旅】 NXP S32K3 以太网 RMII 接口调试&#xff08;1&#xff09;》&#xff0c;话不多说我们直接进入正题。 lwip Stack 介绍 …

oracle 19c容器数据库数据加载和传输-----SQL*Loader(一)

目录 数据加载 &#xff08;一&#xff09;控制文件加载 1.创建用户执行sqlldr 2.创建文本文件和控制文件 3.查看表数据 4.查看log文件 &#xff08;二&#xff09;快捷方式加载 1.system用户执行 2.查看表数据 3.查看log文件 外部表 数据加载和传输的工具&#xff1…

Vue3---安装路由

介绍 在Vue3项目中安装路由 示例 第一步&#xff1a;执行npm命令安装路由 npm install vue-router4第二步&#xff1a;在项目的src文件夹下创建router子文件夹 第三步&#xff1a;创建index.js和routes.js文件&#xff0c;以下为文件的代码 //通过vue-router插件实现模板…

docker打包介绍

最近在做一个开源项目&#xff0c;遇到开发者问各种问题&#xff0c;发现都是系统和软件版本的差异引起的。于是了解了一下docker的使用&#xff0c;发现docker真是个好东东&#xff0c;基本解决了各种版本差异的问题&#xff0c;真正做到了一键部署使用。 先熟悉一下docker里…

VS2022 | 显示Unreal Engine日志

VS2022 | 显示Unreal Engine日志 视图 -> 其他窗口 -> Unreal Engine日志 视图 -> 其他窗口 -> Unreal Engine日志

ORACLE体系结构逻辑结构-表空间、段、区和数据块

实例 实例是指在内存中分配的一块共享内存区域&#xff08;SGA&#xff09;和一组后台进程&#xff08;或线程&#xff09;&#xff0c;它们用于访问和控制数据库。3实例是Oracle数据库的运行时环境&#xff0c;它是数据库的动态部分&#xff0c;它可以启动和关闭&#xff0c;…

本地部署 big-AGI

本地部署 big-AGI 1. big-AGI 介绍2. Github 地址3. 本地部署 big-AGI4. 访问 big-AGI5. 配置 API key6. 测试一下 1. big-AGI 介绍 欢迎使用 big-AGI &#x1f44b;&#xff0c;这是一款面向需要功能、形式、简单性和速度的专业人士的 GPT 应用程序。 big-AGI 由 10 个供应商…

静态网页设计——崩坏3(HTML+CSS+JavaScript)

前言 声明&#xff1a;该文章只是做技术分享&#xff0c;若侵权请联系我删除。&#xff01;&#xff01; 感谢大佬的视频&#xff1a; 使用技术&#xff1a;HTMLCSSJS&#xff08;静态网页设计&#xff09; 主要内容&#xff1a;对游戏崩坏3进行简单介绍。 https://www.bilib…

ATTCK视角下的信息收集:组策略信息收集

目录 什么是组策略&#xff1f; 本地组策略收集 域组策略收集 组策略存储收集 组策略对象收集 什么是组策略&#xff1f; Windows中的组策略&#xff08;Group Policy&#xff09;是一种管理和配置Windows操作系统的功能&#xff0c;它允许系统管理员对计算机和用户的行为…

Photoshop Express一款出色的照片编辑器

​【应用名称】&#xff1a;Photoshop Express ​【适用平台】&#xff1a;#Android ​【软件标签】&#xff1a;#Photoshop ​【应用版本】&#xff1a;12.1.2 ​【应用大小】&#xff1a;223MB ​【软件说明】&#xff1a;软件升级更新。一款出色的照片编辑器&#xff0c…

Xshell连接Ubuntu失败

错误&#xff1a; Xshell连接Ubuntu失败。 Connecting to 192.168.xx.xxx:22…Could not connect to 192.168.xx.xxx’ (port 22): Connection failed. 解决方案&#xff1a;边解决&#xff0c;边测试Xshell是否可以连接 1、SSH 服务未启动&#xff1a; 确保 Ubuntu 上的 S…

回车与换行的区别。CR、LF、CRLF的区别。\r \n \r\n

1.先上结论 中文英文英文缩写ASCⅡ转义ASCⅡ值系统回车Carriage ReturnCR\r13MacIntosh&#xff08;早期的Mac&#xff09;换行LinefeedLF\n10Unix/Linux/Mac OS X&#xff08;现在的Mac&#xff09;回车并换行CRLF\r\nWindows 2.详解 很长一段时间里&#xff0c;对于CRLF、C…

swing快速入门(四十二)JTree的基本创建

注释很详细&#xff0c;直接上代码 新增内容 &#x1f526;JTree的创建 &#x1f526;设置节点之间的连线 &#x1f526;设置节点之间的水平分割线 &#x1f526;设置根节点的展开折叠图标 &#x1f526;设置是否隐藏根节点 package swing31_40;import javax.swing.*; import j…

【Electron】 Vite项目 初始配置 scss

pnpm add -D sasssrc下面创建 styles/main.scss 文件 mian.ts 内引入 ./styles.scss 文件 import ./styles/main.scss 测试scss是否生效&#xff1a; styles/mian.scss :root{--mian:red; } App.vue <template><div>你好</div> </template><s…

锂电池低温充电效率低、容量低的原因

前言&#xff1a;锂离子电池在充电时&#xff0c;Li从正极脱嵌并嵌入负极&#xff1b;但是当一些异常情况&#xff1a;如负极嵌锂空间不足、Li嵌入负极阻力太大、Li过快的从正极脱嵌但无法等量的嵌入负极等异常发生时&#xff0c;无法嵌入负极的Li只能在负极表面得电子&#xf…