1.1 STM32_GPIO_基本知识

GPIO概述

GPIO全称为通用输入输出端口,可以对外设的信息进行采集以及对外设进行控制。

GPIO最大翻转频率计算

GPIO可以进行快速翻转,每次翻转最快只需两个时钟周期。例如STM32的晶振为72MHz,那么GPIO的最快翻转速度为72/2 = 36MHz。对于F1,手册上标注的最快速度为50MHz,该数值是在超频下测量,而不是72MHz。

GPIO的分组

GPIO以大写字母ABC...进行分组,每一个组最多有16个IO,最终标注为PA0~PA15等等。

电气特性

STM32的工作电压:

工作电压范围为2V~3.6V,一般接入3.3V电压。

GPIO的识别电压范围如下:

  • 对于CMOS端口,高电平VIH:1.833V~3.6V,低电平VIL:-0.3V~1.164V
  • 对于TTL端口,可以兼容5V,在手册上这种IO标注FT字样,如下图:

GPIO的输出电流:

对于单个IO,最大为25mA,这并不是意味着所以IO都可以同时输出25mA,STM32的总输出电流最大为150mA,因此各IO的输出电流之和不能超过150mA

GPIO基本结构

GPIO的基本结构图如下(以F1为例):

上下拉电阻作用范围分析

可以看到,在输入驱动器这个框中有两个电阻,一个连接VDD、一个连接VSS,它们是芯片内部的上拉、下拉电阻。从摆放的位置可以看出,当IO为输入模式时,信号会流入输入驱动器,此时上下拉电阻有效(可以配置成上拉、下拉、浮空);当IO为输出模式时,信号从输出驱动器流出,不经过上下拉电阻,因此输出模式下配置上下拉电阻不起作用。

上下拉电阻的阻值为30kΩ~50kΩ,电阻比较大,而VDD为3.3V,最终算得的电流很小,驱动能力弱,因此也称这两个电阻为弱的上下拉电阻。这里的弱指的是驱动能力弱。

信号输入过程分析

当IO处于输入状态时,信号从引脚流入输入驱动器,经过上下拉电阻后最终存入GPIO的IDR寄存器,CPU可以通过读取IDR寄存器来获取当前IO的电平值。

信号输出过程分析

当IO处于输出状态时,信号从输出驱动器流出,信号的来源为P-MOS和N-MOS。当P-MOS导通时,IO接入VDD,输出高电平;当N-MOS导通时,IO接入VSS,输出低电平。

保护二极管工作分析

保护二极管用于防止IO输入电压过低或过高而产生损坏。 当为CMOS时,VDD=3.3V,当为TTL时,VDD=5V。下面以CMOS进行分析:

可以看到,当外部接入5V,并且有限流电阻R时,上方二极管导通。二极管导通电压为0.3V,VDD=3.3V,因此VA=0.3+3.3=3.6V,即:二极管将VA钳位在3.6V,这符合CMOS的高电平检测范围,因此对芯片内部的电路进行了保护。

限流电阻R是必须存在的。若R过小或不存在,二极管导通后的电阻很小,VA依旧为3.6V,此时电流就非常的大,直接打穿二极管,造成器件损坏。

当外部接入-5V时,分析方法与接入+5V类似,最终二极管钳位-0.3V,符合CMOS的低电平检测范围。限流电阻R依旧不可缺少或阻值过小。

施密特触发器(肖特基触发器)

施密特触发器的作用是实现整形电路,能够将非标准的方波整形成方波。整形结论如下:

  • 当输入电压高于正向阈值电压,输出为高
  • 当输入电压低于负向阈值电压,输出为低
  • 当输入电压在正向、负向阈值之间,输出不改变。

下面假设正向阈值电压为2.7V,负向阈值电压为1.3V,分析整形过程,过程图如下:

  • 在过程1,输入电压低于阈值1.3V,因此整形为低电平0V。
  • 在过程2,输入电压处于两个阈值之间,因此整形的电平保持不变,依旧为低电平的0V。
  • 在过程3,输入电压高于阈值2.7V,因此整形为高电平3.3V。
  • 在过程4,输入电压处于两个阈值之间,因此整形的电平保持不变,依旧为高电平的3.3V。

P-MOS与N-MOS工作分析

对于P-MOS,需要满足Vgs<0时,MOS管导通。因为VS=VDD=3.3V,所以VG=0V时导通。

对于N-MOS,需要满足Vgs>0时,MOS管导通。因为VS=VSS=0V,所以VG=3.3V时导通。

GPIO的八种工作模式

GPIO的八种工作模式分为4个输入模式、4个输出模式。

输入模式

4个输入模式有:浮空输入、上拉输入、下拉输入、模拟输入

|------|------------|
| 输入模式 | 功能描述 |
| 浮空输入 | 完全浮空,状态不定 |
| 上拉输入 | 内部上拉,默认高电平 |
| 下拉输入 | 内部下拉,默认低电平 |
| 模拟输入 | 用于ADC、DAC |

1、浮空输入

浮空输入时,上下拉电阻关闭、双MOS管关闭,肖特基触发器开启。信号流入输入驱动器,通过肖特基触发器整型之后将数据存入到数据数据寄存器IDR中,CPU读取IDR的值从而获取到IO的电平状态。

因为没有上下拉电阻,所以在空闲时(IO未接外设,为浮空),IO状态是不确定的。即:有时是1有时是0。

2、上拉输入

上拉输入时,上拉电阻开启,下拉电阻关闭、双MOS管关闭,肖特基触发器开启。信号流入输入驱动器,通过肖特基触发器整型之后将数据存入到数据数据寄存器IDR中,CPU读取IDR的值从而获取到IO的电平状态。

因为有上拉电阻,所以在空闲时(IO未接外设,为浮空),IO状态是高电平,同时这个高电平可以向外驱动一些设备,但这个驱动能力很弱。

3、下拉输入

下拉输入时,下拉电阻开启,上拉电阻关闭、双MOS管关闭,肖特基触发器开启。信号流入输入驱动器,通过肖特基触发器整型之后将数据存入到数据数据寄存器IDR中,CPU读取IDR的值从而获取到IO的电平状态。

因为有下拉电阻,所以在空闲时(IO未接外设,为浮空),IO状态是低电平。

4、模拟输入

模拟输入时,上下拉电阻关闭、双MOS管关闭,肖特基触发器关闭。信号流入输入驱动器,通过模拟输入路线进入到片上外设ADC和DAC

输出模式

4个输出模式有:开漏输出、推挽输出、开漏复用、推挽复用

|------|------------------------|
| 输入模式 | 功能描述 |
| 开漏输出 | 强低电平,不能输出高电平 |
| 推挽输出 | 最大输出25mA,可以输出强高电平和强低电平 |
| 开漏复用 | 硬件IIC使用 |
| 推挽复用 | 硬件SPI使用 |

1、开漏输出

开漏输出时,上下拉电阻关闭,肖特基触发器开启,这代表开漏输出时,也可以读取IO状态,和浮空输入的效果一样。P-MOS始终不导通,N-MOS可被控制是否导通,这代表开漏输出不能控制输出高电平,可以控制输出低电平

因为上述特性,当输出寄存器ODR写0时,IO输出低电平;ODR写1时,N、P都关闭,IO状态就是浮空输入,IO电平由外部决定。

2、开漏复用

开漏复用与开漏输出的区别在于,控制MOS的信号不由ODR控制,而由片上外设控制。

3、推挽输出

推挽输出时,上下拉电阻关闭,肖特基触发器开启,这代表推挽输出时,也可以读取IO状态,和浮空输入的效果一样。P-MOS、N-MOS可被控制是否导通,这代表推挽输出能控制输出高低电平。

因为上述特性,当输出寄存器ODR写0时,IO输出低电平;ODR写1时,IO输出高电平。这个高低电平都是强驱动,因为接入到外部的过程中没有经过限流电阻。

4、推挽复用

推挽复用与推挽输出的区别在于,控制MOS的信号不由ODR控制,而由片上外设控制。

相关推荐
code_snow3 小时前
STM32-- 看门狗--介绍、使用场景、失效场景
stm32·单片机·嵌入式硬件
深圳市青牛科技实业有限公司5 小时前
电动工具领域可推荐的一些调速控制电路,运算放大器芯片等相关型号
人工智能·科技·stm32·单片机·嵌入式硬件·测试工具·电动工具
zyjishuyuan5 小时前
25 基于51单片机的温度电流电压检测系统(压力、电压、温度、电流、LCD1602)
单片机·嵌入式硬件·51单片机
饮啦冰美式5 小时前
什么是串联谐振
单片机·嵌入式硬件
浮梦终焉5 小时前
单片机_简单AI模型训练与部署__从0到0.9
人工智能·stm32·单片机·嵌入式·c/c++
深圳市青牛科技实业有限公司 小芋圆5 小时前
【青牛科技】2K02 电动工具专用调速电路芯片描述
单片机·嵌入式硬件·智能马桶·直流有刷风扇调速·割草机·小型电钻·电动工具调速
weixin_452600695 小时前
【青牛科技】电动工具电流反馈型相位控制电路D2010
科技·单片机·音视频·电动工具·白色家电电源·机顶盒电源
夜间看花7 小时前
33 基于单片机的智能窗帘控制系统
单片机·嵌入式硬件·51单片机·oled
小昭在路上……9 小时前
《解读 freeRTOS queue.c 源码:探寻任务间高效通信的核心机制》(建议收藏)
单片机·嵌入式硬件