STM32八种I/O口模式

STM32八种I/O口模式

文章目录


前言

作为两年嵌入式软件攻城狮,还没仔细去理解过STM32的GPIO的八种使用模式,俗话说嵌入式软硬件不分家,软件不懂硬件,出了问题有时候只能"抓虾",今天有点时间,特此总结一下学过的有关STM32的GPIO模式的硬件知识。


一、stm32八种I/O类型

GPIO(general porpose intputoutput):通用输入输出端口的简称,在STM32中,对于 GPIO 的配置种类有以下 8 种之多,接触最多的就是开漏输出、上拉输入、推挽输出

类型 模式
GPIO_Mode_AIN 模拟输入
GPIO_Mode_IN_FLOATING 浮空输入
GPIO_Mode_IPD 下拉输入
GPIO_Mode_IPU 上拉输入
GPIO_Mode_Out_OD 开漏输出
GPIO_Mode_Out_PP 推挽输出
GPIO_Mode_AF_OD 复用开漏输出
GPIO_Mode_AF_PP 复用推挽输出

二、区别

1.模拟输入

模拟输入顾名思义就是对模拟信号的读取IO,关于什么是模拟信号此处不再赘述,在STM32给出的5 V 容忍 I/O 端口位的基本结构图中,模拟输入的路径如图红线所示。例如在单片机使用用AD采集电压信号时候,需将IO配置为模拟输入模式,为让单片机真实的读取到电压信号,该模式下既不开启上下拉,也不经过施密特触发器。

2.浮空输入

浮空输入从字面意思理解就是IO口是悬浮滞空状态的,的在STM32给出的5 V 容忍 I/O 端口位的基本结构图中,浮空输入的路径如图红线所示需要走的路径如图所示。VDD和VSS两个开关同时断开,此时没有上拉和下拉的情况,我理解为浮空输入状态下, IO 的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。

优势:此模式下,IO电平会完全取决于外部电路而与内部电路无关,所以常用作对开关按键的读取。

注意:上拉和下拉电阻电路的开关在实际应用中一般使用MOS管来代替开关来提到。再往前面走,就是走到了TTL施密特触发器这一个部分。我们知道,由于电源的特性,或者是由于外部开关输入的特性,输入的数字信号,极有可能会出现脉冲等噪声的影响,为了让我们的波形更好看,或者信号更加清晰,所以就设置了TTL施密特触发器这个东西。经过之后,我们就会把这个数字信息存储在输入数据寄存器中。这样我们就读到了IO过来的数字信号

3.上拉输入

上拉输入首先是对一个数字信号的读取,其次就是在IO口增加有上拉电阻,在STM32给出的5 V 容忍 I/O 端口位的基本结构图中,上拉输入的路径如图红线所示,此时右侧绿框中上拉电阻接入,红框中下拉电阻断开。

IO此时的电平就是VDD的电平,此时读到的电平为高电平。如果输入了一个高电平,VDD和左侧I/O引脚的电势差为0,I/O口输入或不输入高电平,读取到的电平数据都是高电平,所以不太容易确定有没有电平输入。输入一个低电平时,此时左侧I/O引脚的电平的电平就会变成低电平与VDD形成了电势差,因为有上拉电阻所以不会出现大电流,但此时可以读取到一个低电平。

所以在上拉输入,容易读取低电平但不容易读取高电平

注意:上拉输入的好处就是输入的电平不会上下浮动而导致输入信号不稳定,在没有信号输入的情况下可以稳定在高电平。

4.下拉输入

下拉输入与上拉输入原理一样,只不过带的是下拉电阻,在STM32给出的5 V 容忍 I/O 端口位的基本结构图中,下拉输入的路径如图红线所示,此时右侧绿框中下拉电阻接入,红框中上拉电阻断开。

IO此时的电平就是VSS的电平,此时读到的电平为低电平。如果输入了一个低电平,VSS和左侧I/O引脚的电势差为0,I/O口输入或不输入低电平,读取到的电平数据都是低电平,到此可以知道和上拉输入是截然相反的。所以在下拉输入,容易读取高电平但不容易读取低电平。唯一的好处就是使得把输入钳在一个明确的低电平,电平信号不会浮动而导致输入信号不稳定。

5.推挽输出

推挽输出就是利用如图两个不同的MOS管(P-MOS和N-MOS)来实现输出电平,通过PMOS和NMOS通断组合会出现两种情况:

N-MOS导通,P-MOS截至,此时IO口接通在VSS(如图绿色路径),此时输出的是低电平,俗称"灌电流"。

N-MOS截至,P-MOS导通,此时IO口接通在VDD(如图红色路径),此时输出的是高电平,俗称"拉电流"。

另外两种情况暂且不论,感兴趣可参见博文:推挽输出与开漏输出

因为有VDD和VSS,所以输出具有电平反转效率高,电流驱动能力强。

6.开漏输出

所谓的开漏,如图,我们假设没有PMOS的存在,此时类似于我们直接将IO接到N-MOS的漏极,此时N-MOS的通断有两种状态

1.NMOS导通,相当于外接到VSS,为低电平

2.NMOS截至,类似接无穷大电阻,为高阻态,

这两种情况下在外部加一个上拉电阻(绿框),外部IO就会出现两种情况:

1.NMOS导通,相当上拉电阻一端外接到VSS,外部IO被短路,输出为低电平

2.NMOS截至,相当于将短路部分断开,上拉电阻将外部IO拉高,输出高电平

特点:IO电压不再由内部VDD决定,而是由上拉电阻决定,可以通过上拉电阻部分给定想要的电压,并且可以进行"线与"

更多的开漏和推挽相关的知识参见博文:推挽输出与开漏输出

7.复用推挽输出

复用推挽就是如果你不想用单片机内部来输出,那么你可以通进行复用,将输出转移到其他外设上面,更改需要开启复用功能和时钟

8.复用推挽输出

复用开漏就是如果你不想用单片机内部来输出,那么你可以通进行复用,将输出转移到其他外设上面,更改需要开启复用功能和时钟

总结

另外关于GPIO的速率(2MHz,10MHz,50MHz),很多人认为这个速率就是GPIO的信号输出速率,其实不然,这个速率只是GPIO的硬件响应速率,可以理解为高低电平反转的速率,并不是信号输出速率,信号输出速率受软件影响。

相关推荐
恒锐丰小瑞18 小时前
率能SS6812T 40V/1A/双通道H桥驱动芯片,PWM电流控制与混合衰减模式(eTSSOP28),用于POS打印机/安防相机/机器人
单片机·嵌入式硬件·数码相机·机器人
嵌入式阿蔡19 小时前
传感器_02:MPU6050 六轴 IMU 姿态入门——从一串看不懂的数,到一个不漂的角度
网络·stm32·单片机·嵌入式硬件·嵌入式实时数据库
恒锐丰科技韩生20 小时前
SS6951A|8.2‑36V 双通道 4A H 桥电机驱动 ETSSOP28 带散热焊盘 工业缝纫机打印机机器人专用
嵌入式硬件·硬件工程
恒锐丰小瑞20 小时前
率能SS6811H 38V/1.6A/双通道H桥驱动芯片,PWM控制接口与低功耗睡眠模式,用于舞台灯光/安防相机/机器人
单片机·嵌入式硬件·数码相机·机器人
怀民民民20 小时前
开篇:基于 Cortex-M7、OpenMV 与双频 GNSS 的智能派件 AGV 设计与实现
单片机·嵌入式硬件·gnss·openmv·智能车
爱吃米粥21 小时前
过流、过压、防反接、防浪涌于一体的输入电路
单片机·嵌入式硬件
江屿风21 小时前
【STM32基础篇】【嵌入式生态问题及历史追溯】流食般投喂
大数据·开发语言·人工智能·笔记·stm32·嵌入式硬件
橘色的喵21 小时前
USB MCU的固件烧写工具:从 vendor 命令到逐字节校验
单片机·嵌入式硬件·嵌入式
意法半导体STM3221 小时前
【官方原创】STM32CubeMX 6.18.0新版本发布
stm32·单片机·嵌入式硬件·stm32cubemx·cube开发工具
恒锐丰小瑞1 天前
率能SS8833T 15V/1A/双通道H桥驱动芯片,低静态电流与过温报警输出(FAULT),用于POS打印机/机器人/电池玩具
stm32·单片机·机器人