STM32的GPIO片上外设

news2025/1/17 3:04:48

一、STM32的片上外设

        片上外设是集成在 MCU 芯片内部的硬件模块,它们通过片内总线与 CPU 直接通信,而不是通过外部引脚或接口连接的设备。

片上外设:
  • 包括 UART、I2C、SPI、ADC、定时器、GPIO、DMA、RTC 等集成在 MCU 内部的模块。
  • 这些外设通过 MCU 内部的总线系统与 CPU 核心连接,并不需要外部连接
不是片上外设:
  • 外部传感器、存储器、显示设备、通信模块、电机驱动器等。这些外设通过 I2C、SPI、UART、GPIO 等接口与 MCU 连接,并不属于 MCU 芯片的一部分。

二、STM32中的GPIO

        详细理解 STM32 的 GPIO(通用输入输出,General-Purpose Input/Output)。GPIO 是嵌入式系统中非常重要的一个模块,几乎所有的 MCU 都会有 GPIO 功能,因为它们负责与外部世界(传感器、按钮、LED 等)进行交互。

        GPIO有3种状态,高电平状态、低电平状态、高组态(浮空态)

1. 什么是 GPIO?

GPIO 是 MCU 上的引脚,可以根据配置用来作为输入或者输出。每个 GPIO 引脚可以独立配置为:

  • 输入:读取外部设备的状态(如按钮、传感器信号)。
  • 输出:向外部设备提供电平信号(如控制 LED、继电器)。
  • 复用功能:有时 GPIO 引脚会被用来复用片上外设(如 UART、SPI、I2C 等)功能。
  • 模拟功能:GPIO 引脚也可以作为模拟输入,用于 ADC(模数转换)等操作。

 这张图给出了一个I/O端口位的基本结构。

2、输入模式:
1. 输入模式下的电路工作

当 GPIO 引脚配置为 输入模式 时,输入数据来自外部设备(例如开关、传感器等),我们通过 MCU 的 GPIO 引脚读取外部信号的状态(高电平或低电平)。在这种模式下:

  • 主要工作部分:输入路径(即图中上半部分)。
    • 上半部分电路中的输入缓冲器、电平转换器和上拉/下拉电阻等相关电路在输入模式下起作用,负责检测并处理外部信号。
    • 这些电路会根据外部信号的电压(高或低),通过输入寄存器(IDR)将信号传送到 MCU 内部。
  • 下半部分的输出电路不会起作用:当引脚处于输入模式时,下半部分的 P-MOS 和 N-MOS 输出控制电路被禁用。换句话说,在输入模式下,输出控制电路与输入信号无关,不影响输入电路的工作
2. 输入模式的工作原理

当 GPIO 配置为 输入模式 时,引脚用于接收外部信号。这时,MCU 通过 GPIO 引脚读取外部设备的信号状态(高电平或低电平),这些信号可能来自按钮、传感器或其他输入设备。

3.输入模式下的工作流程
  1. 外部信号进入 GPIO 引脚

    • 外部电路会给 GPIO 引脚施加电压,这个电压通常是 高电平低电平
    • 例如,当你按下一个按钮,按钮会让引脚变为低电平;当按钮释放时,引脚通过上拉电阻保持高电平。
  2. GPIO 读取引脚电平

    • GPIO 内部的 输入缓冲器 负责读取引脚上的电压状态,并将其传递给 输入寄存器(IDR)
    • MCU 程序可以通过读取输入数据寄存器(IDR)来获取引脚的当前状态(高或低)。
  3. 上拉/下拉电阻的作用

    • 在输入模式下,GPIO 引脚可以选择通过内部的上拉或下拉电阻来稳定信号:
      • 上拉电阻:将引脚默认拉高到 V_DD(高电平),适用于开关、按钮等场景。如果引脚悬空,输入会保持高电平。
      • 下拉电阻:将引脚默认拉低到 V_SS(低电平),适用于需要默认低电平的输入信号。
3、输出模式:
1、输出模式下的电路工作

当 GPIO 引脚配置为 输出模式 时,引脚用来向外部设备发送高电平或低电平信号(例如点亮 LED、驱动继电器等)。在这种模式下:

  • 主要工作部分:输出路径(即图中下半部分)。
    • 下半部分电路中的 P-MOS 和 N-MOS 控制晶体管在输出模式下工作,用于控制引脚的电平(高电平或低电平)。
    • 具体来说,在推挽输出模式下,P-MOS 和 N-MOS 会根据 GPIO 输出寄存器(ODR)的设置,交替导通或关闭,从而驱动引脚输出高电平或低电平。
  • 上半部分的输入电路不会起作用:当引脚处于输出模式时,上半部分的输入电路被禁用。这意味着 TTL 触发器和输入相关的电路不会影响输出信号
 
2. 输出模式的工作原理

当 GPIO 配置为 输出模式 时,GPIO 引脚用于向外部设备(如 LED、继电器等)发送高电平或低电平信号。

3.输出模式下的工作流程
  1. MCU 通过寄存器设置输出状态

    • MCU 程序通过设置 输出数据寄存器(ODR) 来控制引脚的电平状态。
      • ODR 设置为 1 时,引脚输出高电平(V_DD)。
      • ODR 设置为 0 时,引脚输出低电平(V_SS,地)。
  2. GPIO 驱动电路的工作

    • 推挽输出模式 下:
      • P-MOS 导通(N-MOS 关闭),引脚与 V_DD 相连,输出高电平。
      • N-MOS 导通(P-MOS 关闭),引脚与 V_SS 相连,输出低电平。
    • 开漏输出模式 下:
      • N-MOS 控制引脚,N-MOS 导通时输出低电平;N-MOS 关闭时,引脚进入高阻态,无法主动输出高电平,需要外部上拉电阻将引脚拉高。
  3. 外部设备接收信号

    • 外部设备(如 LED、继电器等)通过 GPIO 引脚接收电平信号,并做出响应。
      • 例如,输出高电平时 LED 会点亮,输出低电平时 LED 会熄灭。

1. 输入部分

  • 输入浮空模式

    • 在浮空输入模式下,输入引脚没有上拉或下拉电阻。此时,图中的输入路径是打开的(“输入驱动器”工作),但由于没有内部电阻,电平是不确定的,依赖于外部电路施加的电压。引脚处于高阻状态,电压漂浮,容易受到噪声影响。
  • 输入上拉模式

    • 这时引脚通过图中显示的内部上拉电阻(位于 I/O 引脚右侧)拉到高电平。即使外部没有施加电压,内部上拉电阻将引脚拉高,输入电平会默认变为逻辑高电平(V_DD)。当外部电压拉低时,电平变为低。
  • 输入下拉模式

    • 类似于上拉模式,但这时内部电路中启用了下拉电阻。图中未明确展示下拉电阻,但在 STM32 的实现中,引脚通过下拉电阻连接到地 (V_SS),此时引脚默认电平是逻辑低电平。外部电压施加高电平时,可以改变引脚状态。
  • 模拟输入模式

    • 模拟输入模式主要用于 ADC(模拟数字转换),输入电压通过图中的输入路径直接传输到 ADC 模块。此时,输入电路不再工作为数字电平检测,而是作为模拟信号的采样通道。

2. 输出部分

  • 推挽输出模式

    • 在推挽模式下,P-MOS 和 N-MOS 开关交替工作。
      • 高电平:当 P-MOS 导通(如图中显示的 P-MOS 控制线路通向 V_DD),引脚被直接连接到高电平(V_DD),引脚输出逻辑 1。
      • 低电平:当 N-MOS 导通,引脚被连接到低电平(V_SS),输出逻辑 0。
    • 这就是所谓的“推”和“挽”——推电流到引脚(高电平),或将引脚拉到地(低电平),适用于大部分输出场景,如控制 LED、电机等。
  • 开漏输出模式

    • 在开漏模式下,只有 N-MOS 开关工作(P-MOS 不工作)。
      • 低电平:N-MOS 导通时,引脚连接到地,输出低电平(逻辑 0)。
      • 高阻态(浮空):当 N-MOS 关闭时,引脚被断开(高阻状态),不主动输出高电平。此时,若外部有上拉电阻(如图中的外部上拉电阻),引脚会通过外部电路被拉到高电平。
    • 这种模式常用于像 I2C 这种总线协议,多个设备共享一条信号线。设备只负责拉低信号,而高电平由外部上拉电阻提供。
  • 推挽复用输出
    • 当 GPIO 被配置为某个外设(如 UART),复用功能控制引脚的电平,推挽模式仍然有效。引脚可以在外设的控制下输出高电平或低电平。
  • 开漏复用输出
    • 这个模式常用于像 I2C 通信协议。外设控制引脚的开漏输出,在这种模式下,引脚输出低电平由 N-MOS 驱动,而高电平依赖外部上拉电阻。

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

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

相关文章

《Linux从小白到高手》综合应用篇:深入理解Linux磁盘及IO优化

1. 前言 其实磁盘优化和IO优化,我在前面的其他Linux调优博文中已经讲述过或者涉及过了,但是太过零碎,所以本篇就来集中深入讨论下Linux磁盘和IO调优。 2.磁盘调优 结合我多年的经验,本人认为磁盘调优最重要的是读写性能的提升和…

Unity 实战案例全解析 实现时间停止效果+世界变灰

画面里运动的那个小玩意这么写 using System.Collections; using System.Collections.Generic; using UnityEngine;public class Partol : MonoBehaviour {public Transform pos1;public Transform pos2;public float speed;private Transform target;void Start() {target p…

SpringBoot智能推荐:健康生活新选择

3系统分析 3.1可行性分析 通过对本基于智能推荐的卫生健康系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本基于智能推荐的卫生健康系统采用SSM框架&#…

二叉查找树(Binary Search Tree)Java语言实现

一、二叉查找树 二叉查找树(Binary Search Tree),也称为二叉搜索树、有序二叉树(Ordered Binary Tree)或排序二叉树(Sorted Binary Tree)。 是指一棵空树或者具有下列性质的二叉树&#xff1a…

Unity DOTS中的Archetype与Chunk

Unity DOTS中的Archetype与Chunk 在Unity中,archetype(原型)用来表示一个world里具有相同component类型组合的entity。也就是说,相同component类型的entity在Unity内部会存储到一起,共享同一个archetype。 使用这样的设…

JAVA毕业设计191—基于Java+Springboot+vue的电子产品商城管理系统(源代码+数据库)

毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootvue的电子产品商城管理系统(源代码数据库)191 一、系统介绍 本项目前后端不分离,分为用户、管理员两种角色 1、用户: 注册、登录、商品…

C++在vscode中的code runner配置/环境配置

C在vscode中快捷运行(code runner) 一、配置tasks.json 在vscode中创建文件夹或打开文件夹,会发现文件夹下多了一个.vscode文件夹,在该文件夹下创建tasks.json文件,并添加一下内容 {"version": "2.0…

弘景光电:以创新为翼,翱翔光学科技新蓝海

在科技日新月异的今天,光学镜头及模组作为智能设备的核心组件,其重要性日益凸显。广东弘景光电科技股份有限公司(以下简称“弘景光电”)正是在这一领域中,凭借其卓越的研发实力和市场洞察力,即将在创业板上…

工具篇:(二)MacOS 下载 MySQL 并进行配置连接,使用 VSCode 创建 Node 项目-亲测有效

MacOS 下载 MySQL 并进行配置连接,使用 VSCode 创建 Node 项目 我们将介绍如何在 macOS 上下载和配置 MySQL 数据库,并使用 VSCode 创建一个 Node.js 项目进行测试。通过这些步骤,您将能够顺利地设置开发环境并进行基本的数据操作。 一、删…

【国际学术会议之都,IEEE出版】第四届计算机科学、电子信息工程和智能控制技术国际会议(CEI 2024,2024年11月8-10日)

第四届计算机科学、电子信息工程和智能控制技术国际会议(CEI 2024) 2024 4th International Conference on Computer Science, Electronic Information Engineering and Intelligent Control Technology 官方信息 会议官网:www.ic-cei.org …

AFSim仿真系统 --- 系统简解_10处理器 (Processors)

处理器 (Processors) 处理器提供了为特定平台定义行为的能力。 大多数处理器由用户使用 AFSIM 脚本语言定义。 以下是一些预定义的处理器类型: WSF_DIRECTION_FINDER_PROCESSORWSF_TRACK_PROCESSORWSF_MESSAGE_PROCESSORWSF_GUIDANCE_COMPUTERWSF_IMAGE_PROCESS…

Android11 USB Camera会出现预览绿屏问题

目录 一、问题描述 二、问题原因 三、解决方法 一、问题描述 DDR容量是4G及以上的机器,USB Camera会出现预览绿屏问题。 串口中会刷如下log: 二、问题原因 RGA2使用超过4G内存会异常,导致USB Camera调用rga相关操作报错,从而预览绿屏 三…

深度学习基础—神经风格迁移

1.什么是神经风格迁移 神经风格迁移就是将一张图片的风格迁移到另一张图片上,生成具有第一张图片风格的新的图片。新图片的主体还是第二张图片,但是风格是第一张图片的。 如下两组图片都是神经风格迁移的例子: 将绘画的风格迁移到真实建筑图片…

树型名称前面插入图片

需求&#xff1a; 搜索树、树型要显示连线&#xff0c;还有名称前带图片 ui组件&#xff1a;https://devui.design/components/zh-cn/overview 直接上代码 [checkable] false 表示取消复选框 <div class"p-sm"><div class"row"><d-sea…

软件开发----Java基础每日刷题(转载于牛客)

1. 对抽象类的描述正确的是() A 抽象类的方法都是抽象方法 B 一个类可以继承多个抽象类 C 抽象类不能有构造方法 D 抽象类不能被实例化 正确答案&#xff1a;D 解析&#xff1a; A.抽象类可以有非抽象的方法&#xff0c;而接口中的方…

Flythings学习(三)界面交互

文章目录 1 界面切换1.1 打开界面1.2 关闭界面 2 界面活动周期2.1 打开不存在页面的活动流程2.2 打开已存在界面&#xff08;被隐藏的界面&#xff09;2.3 关闭界面的流程 1 界面切换 界面切换的相关函数如下 1.1 打开界面 如果需要打开一个界面&#xff0c;在其他界面的控件…

WebSocket状态码及异常报错1006

文章目录 1.WebSocket协议简介2.WebSocket状态码的作用&#xff1a;3.WebSocket状态码1006详解1.问题原因2.解决方案 1.WebSocket协议简介 WebSocket协议是一种基于TCP的协议&#xff0c;它通过在浏览器和服务器之间建立一条持久的双向通信通道&#xff0c;实现了实时的数据传…

【论文阅读】SAM 2: 分割一切图像和视频

导言 继SAM模型发布以来&#xff0c;Meta公司于2024年8月发布第二个图像分割大模型SAM2。相较于第一代SAM模型&#xff0c;论文提出了第二代“分割任意物体模型” (SAM 2)&#xff0c;旨在解决视频中的可提示视觉分割任务&#xff08;Promptable Visual Segmentation, PVS&…

TVS常规过压保护

一、前言 上一篇文章 TVS选型-CSDN博客https://blog.csdn.net/qq_39543984/article/details/142825929?spm=1001.2014.3001.5501我们介绍了如何通过理论计算选择合适的TVS,TVS主要是防止瞬间过压,因为他的名字就叫瞬态二极管(Transient Voltage Suppressor)。本文就通过理…

自动化检查网页的TDK,python+selenium自动化测试web的网页源代码中的title,Description,Keywords

首先&#xff0c;TDK是什么&#xff1f;对于新手小白来说&#xff0c;可能是懵逼的&#xff0c;所以这里给出一个官方的解说‌网页的TDK是指标题&#xff08;Title&#xff09;、描述&#xff08;Description&#xff09;和关键词&#xff08;Keywords&#xff09;的集合‌。这…