STM32 GPIO 详解

0. 实验平台

基于STM32F407ZG

1. GPIO 简介

1.1 简介

GPIO全称:General Purpose Input Output,即通用输入输出端口,一般用来采集外部器件的信息或者控制外部器件工作,即输入输出

1.2 STM32 的 GPIO 特点

  1. 不同型号,IO口数量可能不一样,可通过选型手册快速查询
  2. 快速翻转,每次翻转最快只需要两个时钟周期(F1最高速度可以到50Mhz)
  3. 每个IO口都可以做中断
  4. 支持 8 种工作模式(后面会详解)

1.3 STM32 的 GPIO 电气特性

  1. STM32 的工作电压:2 V ≤ VDD ≤ 3.6 V
  2. GPIO 的识别范围:COMS 端口:
    -0.3 V ≤ VIL ≤ 1.164 V
    1.833 V ≤ VIH ≤ 3.6 V
  3. 输出电流:单个 GPIO 最大 25mA

2. STM32F4 端口结构

STM32F1 系列与 F4 有细微的差别,但是原理都是互通的
下图可以在 STM32F4xx 手册中的 GPIO 章节找到
在这里插入图片描述

  1. 保护二极管,保护接入电路的电压不会超过可承受的范围
  2. 上下拉电阻,通常阻值在 30-50KΩ ,是一种弱上下拉(电流很小,不具备驱动能力)
  3. 施密特触发器,可以使得非方波信号转为方波信号
  4. P-MOS & N-MOS 管

下面会详解 施密特触发器 和 P-MOS & N-MOS 管

2.1 施密特触发器

施密特触发器就是一种整形电路,可以将非标准方波整形成方波,特点如下

  • 当输入电压高于正向阈值电压,输出为高;
  • 当输入电压低于负向阈值电压,输出为低;
  • 当输入在正负向阈值电压之间,输出不改变
    在这里插入图片描述

2.2 P-MOS & N-MOS 管

MOS 管是压控型元件,通过控制栅源电压( Vgs )来实现导通或关闭

在这里插入图片描述
在这里插入图片描述
其中,G是栅极,S是源极,D是漏极
对于 P-MOS:Vgs<0,导通
对于 N-MOS:Vgs>0,导通

3. GPIO 的 8 种工作模式

GPIO8 种模式特点及应用
输入浮空输入用,完全浮空,状态不定
输入上拉输入用,用内部上拉,默认是高电平
输入下拉输入用,用内部下拉,默认是低电平
模拟功能ADC、DAC
开漏输出软件 IIC 的 SDA、SCL 等
推挽输出驱动能力强,25mA,通用输出
开漏式复用功能片上外设功能(硬件 IIC 的 SDA、SCL 引脚等)
推挽式复用功能片上外设功能(SPI 的 SCK、MISO、MOSI引脚等)

3.1 输入浮空

电路状态:

  • 上拉 /下拉电阻断开
  • 施密特触发器打开
  • 输出被禁止。
  • P-MOS 和 M-MOS 管不导通

电路图:
在这里插入图片描述

适用场景: IO 口的电平完全是由外部电路决定。如果 IO 引脚没有连接其他的设备,那么检测其输入电平是不确定的。该模式可以用于检测外部引脚电平的情况(如按键,但是更常用的方法是设置为输入下拉或者上拉模式)

3.2 输入上拉

电路状态:

  • 上拉电阻接通
  • 下拉电阻断开
  • 施密特触发器打开
  • 输出被禁止
  • P-MOS 和 M-MOS 管不导通

电路图:
在这里插入图片描述
适用场景: IO 口的电平默认状态为高电平,但是外部有低电平输入的时候还是可以被读取到

3.3 输入上拉

电路状态:

  • 上拉电阻断开
  • 下拉电阻接通
  • 施密特触发器打开
  • 输出被禁止
  • P-MOS 和 M-MOS 管不导通

电路图:
在这里插入图片描述
适用场景: IO 口的电平默认状态为低电平,但是外部有高电平输入的时候还是可以被读取到

3.4 模拟功能

电路状态:

  • 上拉 /下拉电阻断开
  • 施密特触发器关闭
  • 输出被禁止
  • P-MOS 和 M-MOS 管不导通

电路图(更正:蓝色框中为输入部分):
在这里插入图片描述
适用场景: 该模式用于 ADC 采集或者 DAC 输出,或者低功耗下省电

3.5 开漏输出

电路状态:

  • 上拉 /下拉电阻根据寄存器的值决定是否导通
  • 施密特触发器打开
  • 可以通过数据寄存器访问 IO 状态
  • P-MOS 管始终不激活
  • 输出寄存器中输入 0 会激活 M-MOS 管

电路图(更正:蓝色框中为输入部分):

在这里插入图片描述
电路图解析:
开漏模式下,P-MOS 管是一直截止的,所以 P-MOS 管的栅极一直接 VSS。

如果输出数据寄存器设置为 0 时,经过“输出控制”的逻辑非操作后,输出逻辑 1 到 N-MOS 管的栅极,这时 N-MOS 管就会导通,使得 I/O 引脚接到 VSS,即输出低电平。

如果输出数据寄存器设置为 1 时,经过“输出控制器”的逻辑非操作后,输出逻辑 0 到 N-MOS 管的栅极,这时 N-MOS 管就会截止。因为 P-MOS 管是一直截止的,使得 I/O 引脚呈现高阻态,即不输出低电平,也不输出高电平。因此要 I/O 引脚输出高电平就必须接上拉电阻。这时可以接内部上拉电阻,或者接一个外部上拉电阻。由于内部上拉电阻的阻值较大,所以只是“弱上拉”。需要大电流驱动,需要接外部的上拉电阻。

此外,上拉电阻具有线与特性,即如果有很多开漏模式的引脚连在一起的时候,只有当所有引脚都输出高阻态,电平才为 1,只要有其中一个为低电平时,就等于接地,使得整条线路都为低电平 0。IIC 通信( IIC_SDA)就用到这个原理。

另外在开漏输出模式下,施密特触发器是打开的,所以 IO 口引脚的电平状态会被采集到输入数据寄存器中,如果对输入数据寄存器进行读访问可以得到 IO 口的状态。也就是说开漏输出模式下,我们可以对 IO 口进行读数据。

特点和适用场景:它只能输出低电平 Vss 或者高阻态,常用于软件 IIC 的 SDA、SCL 等

3.6 推挽输出

电路状态:

  • 上拉 /下拉电阻根据寄存器的值决定是否导通
  • 施密特触发器打开
  • 可以通过数据寄存器访问 IO 状态
  • P-MOS 管和 N-MOS 管通过输出寄存器的值来决定是否导通

电路图(更正:蓝色框中为输入部分):
在这里插入图片描述

电路图解析:

如果输出数据寄存器设置为 0 时,经过“输出控制”的逻辑非操作后,输出逻辑 1 到 P-MOS 管的栅极,这时 P-MOS管就会截止,同时也会输出逻辑 1 到 N-MOS 管的栅极,这时 N-MOS 管就会导通,使得 I/O 引脚接到引脚接到 VSS,即输出低电平。

如果输出数据寄存器设置为 1 时,经过“输出控制”的逻辑非操作后,输出逻辑 0 到到 N-MOS 管的栅极,这时 N-MOS 管就会截止,同时也会输出逻辑 0 到 P-MOS 管的栅极,这时 P-MOS 管就会导通,使得 I/O 引脚接到引脚接到 VDD,即输出高电平。

推挽输出模式下,P-MOS 管和 N-MOS 管同一时间只能有一个管 MOS 管是导通的。当引脚高低电平切换时,两个管子轮流导通,一个负责灌电流,一个负责拉电流,使其负载能力和开关速度都有很大的提高。

另外在推挽输出模式下,施密特触发器也是打开的,可以读取IO口的电平状态。由于推挽输出模式输出高电平时,是直接连接VDD ,所以驱动能力较强,可以做电流型驱动,驱动电流最大可达25mA。该模式也是最常用的输出模式。

特点和适用场景:可以输出最大 25mA 的电流,可以用来驱动一些外设如 LED 灯等

3.7 开漏式复用

电路状态:

  • 上拉 /下拉电阻根据寄存器的值决定是否导通
  • 施密特触发器打开
  • 可以通过数据寄存器访问 IO 状态
  • P-MOS 管始终不激活
  • 引脚的状态由外设决定, 0 会激活 M-MOS 管

电路图(更正:蓝色框中为输入部分):
在这里插入图片描述
适用场景:片上外设功能(硬件IIC 的SDA、SCL引脚等)

3.8 推挽式复用

电路状态:

  • 上拉 /下拉电阻根据寄存器的值决定是否导通
  • 施密特触发器打开
  • 可以通过数据寄存器访问 IO 状态
  • P-MOS 管和 N-MOS 管通过外设来决定是否导通

电路图(更正:蓝色框中为输入部分):
在这里插入图片描述
适用场景:片上外设功能(SPI 的SCK、MISO、MOSI引脚等)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【玩转Docker小鲸鱼叭】虚拟化技术是什么?

到底什么是虚拟化&#xff1f; Docker 是一款基于容器虚拟化技术构建的软件&#xff0c;那到底什么虚拟化技术呢&#xff1f;在学习Docker之前&#xff0c;先简单了解下虚拟化技术。 虚拟化是云原生的实现基础&#xff0c;它能够帮助我们更加有效地利用物理计算机硬件。 虚拟…

黑客工具软件大全

黑客工具软件大全100套 给大家准备了全套网络安全梓料&#xff0c;有web安全&#xff0c;还有渗透测试等等内容&#xff0c;还包含电子书、面试题、pdf文档、视频以及相关的网络安全笔记 &#x1f447;&#x1f447;&#x1f447; 《黑客&网络安全入门&进阶学习包》 &a…

ROS:move_base路径规划介绍、更换全局路径规划算法(A star、Dijkstra、DWA,测试当前是哪种算法,效果展示图)

前提&#xff1a;需要安装navigation包&#xff0c;才可以运行move_base。 一.move_base路径规划包内容 二.更换全局路径规划算法&#xff08;A*、Dijkstra、DWA&#xff09; A*、Dijkstra属于全局路径规划、DWA属于局部路径规划。 1、move_base.launch move_base.launch文…

TCP可靠数据传输

TCP的可靠数据传输 1.TCP保证可靠数据传输的方法 TCP主要提供了检验和、序号/确认号、超时重传、最大报文段长度、流量控制等方法实现了可靠数据传输。 检验和 通过检验和的方式&#xff0c;接收端可以检测出来数据是否有差错和异常&#xff0c;假如有差错就会直接丢失该TC…

Matlab论文插图绘制模板第102期—分组填充箱线图

在之前的文章中&#xff0c;分享了Matlab箱线图的绘制模板&#xff1a; 填充箱线图的绘制模板&#xff1a; 分组箱线图的绘制模板&#xff1a; 进一步&#xff0c;再来分享一下分组填充箱线图的绘制模板。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;本期内容『数据…

NLP——Translation 机器翻译

文章目录 为什么翻译任务困难Statistical Machine TranslationAlignment 对齐summary Neural Machine Translation如何训练 Neural MTloss 设定Trainingdecoding at Test TimeExposure BiasExhaustive Search DecodingBeam Search Decoding什么时候解码停止summary Attention M…

异常数据检测 | Python实现支持向量机(SVM)的异常数据检测

文章目录 文章概述模型描述源码分享学习小结参考资料文章概述 SVM通常应用于监督式学习,但OneClassSVM算法可用于将异常检测这样的无监督式学习,它学习一个用于异常检测的决策函数其主要功能将新数据分类为与训练集相似的正常值或不相似的异常值。 模型描述 OneClassSVM的思…

为什么中国大公司不开发 Linux 桌面应用?

我们Linux平台C端的业务&#xff0c;也就是给大家提供的Linux的个人版本。目前真的是靠爱发电了&#xff0c;逃&#xff09; 更爱的是&#xff0c;我们不只是提供了X64平台&#xff0c;更是提供了Arm&#xff0c;MIPS64平台的二进制包。 估计国内在Linux平台首发新功能的桌面应…

asp.net高校食谱管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net高校食谱管理系统 是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言 开发 asp.net高校食谱管理系统VS开发s…

Pytest自动化测试框架生成allure的报告

一、前言 最近通过群友了解到了allure这个报告&#xff0c;开始还不以为然&#xff0c;但还是逃不过真香定律。 经过试用之后&#xff0c;发现这个报告真的很好&#xff0c;很适合自动化测试结果的展示。下面说说我的探索历程吧。 选用的项目为Selenium自动化测试Pytest框架实…

为什么要使用微软的 Application Framework?

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天来看一下我们为什么要使用微软的 Application Framework&#xff1f; 虽然Application Framework 并不是新观念&#xff0c;它们却在最近数年才成为 PC 平台上软件开发的主流工具。面向对象语言是具体实…

【活动访谈】发力数字基座 推动物联创新—航天科技控股集团AIRIOT4.0平台发布会活动专访

近日&#xff0c;由航天科技控股集团股份有限公司主办的“数字基座 智慧物联—AIRIOT4.0平台发布会”在北京圆满落幕。航天三院科技委总工程师王连宝应邀出席本次会议并接受媒体采访&#xff0c;共同参与访谈的还有AIRIOT产品研发创始人、航天科技控股集团股份有限公司智慧物联…

SpringCloud第三篇:GateWay服务网关

一、为什么需要服务网关&#xff1a; 1、什么是服务网关 传统的单体架构中只需要开放一个服务给客户端调用&#xff0c;但是微服务架构中是将一个系统拆分成多个微服务&#xff0c;如果没有网关&#xff0c;客户端只能在本地记录每个微服务的调用地址&#xff0c;当需要调用的…

【连续介质力学】变形梯度

变形梯度 简介 本节讨论两个不同质点P和Q的之间的相对运动变化 拉伸比和相对伸长 d X ⃗ d\vec X dX : 在参考构形连接质点P和Q的向量&#xff0c;线单元 M ^ \hat M M^: d X ⃗ d\vec X dX 方向的单位向量 d x ⃗ d\vec x dx : 在当前构形连接质点P’和Q‘的向量&#xff…

简要介绍 | 计算机视觉中的开放词汇:挑战与未来

注1&#xff1a;本文系“简要介绍”系列之一&#xff0c;仅从概念上对计算机视觉中的开放词汇(open vocabulary)进行非常简要的介绍&#xff0c;不适合用于深入和详细的了解。 注2&#xff1a;"简要介绍"系列的所有创作均使用了AIGC工具辅助 计算机视觉中的开放词汇&…

深入理解Java虚拟机jvm-对象的内存布局

对象的内存布局 对象头&#xff08;Header&#xff09;实例数据&#xff08;Instance Data&#xff09;对齐填充&#xff08;Padding&#xff09; 在HotSpot虚拟机里&#xff0c;对象在堆内存中的存储布局可以划分为三个部分&#xff1a;对象头&#xff08;Header&#xff09;、…

jenkins用户权限管理

环境准备: 登录jenkins: http://192.168.9.190:8091/ admin asdwhl@0 一、用户权限插件安装 1、Dashboard > Manage Jenkins > Manage Plugins > Available(可选插件) 依次安装: Role-based Authorization Strategy Authorize Project

【Git】git push origin master时发生的各类错误汇总

文章目录 一、常见的git命令二、错误一三、错误二四、错误三五、问题解决 一、常见的git命令 使用 git 命令时&#xff0c;您可以执行一系列操作来管理代码仓库。下面是一些常用的 git 命令及其功能&#xff1a; git init: 在当前目录初始化一个新的 git 仓库。git clone <…

stm32超声波测距代码

操作思路&#xff1a; 初始化时将trig和echo端口都置低&#xff0c;首先向给trig 发送至少10 us的高电平脉冲&#xff08;模块自动向外发送8个40K的方波&#xff09;&#xff0c;然后等待&#xff0c;捕捉 echo 端输出上升沿&#xff0c;捕捉到上升沿的同时&#xff0c;打开定时…

Spark大数据处理学习笔记(3.2.2)掌握RDD算子

衔接上文&#xff1a;http://t.csdn.cn/Z0Cfj 文章目录 三、掌握行动算子3.1 归约算子 - reduce()3.2 采集算子 - collect()3.3 首元素算子 - first()3.4 计数算子 - count()3.5 按键计数算子 - countByKey()3.6 前截取算子 - take(n)3.7 排序前截取算子 - takeOrdered(n)[(ord…