GPIO工作模式
1. GPIO简介
GPIO 是通用输入输出端口的简称,简单来说就是 STM32 可控制的引脚,STM32 芯片的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。STM32 芯片的 GPIO 被分成很多组,每组最多 16 个 IO 口,组数视芯片而定。比如:STM32F407ZGT6 芯片是 144 脚的芯片,分为 7 组,分别是:GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF 和 GPIOG,其中 112 个 IO 口是 GPIO 引脚,所有的 GPIO引脚都有基本的输入输出功能。
最基本的输出功能:是由 STM32 控制引脚输出高、低电平,实现开关控制,如把 GPIO 引脚接入到 LED 灯,那就可以控制 LED 灯的亮灭,引脚接入到继电器或三极管,那就可以通过继电器或三极管控制外部大功率电路的通断。
最基本的输入功能:是检测外部输入电平,如把 GPIO 引脚连接到按键,通过电平高低区分按键是否被按下。
2. GPIO工作模式
GPIO 工作模式 模式描述 应用场景 1.输入浮空 用于读取外部信号的电平 1.
外部电路已经提供了上拉或下拉电阻2.输入上拉 上拉电阻将引脚拉至高电平,用于确保引脚在未连接外部
信号时保持稳定的电平。1.
按键检测:确保按键未按下时引脚为高电平2.
信号抗干扰:减少外部噪声对引脚电平的影响3.输入下拉 下拉电阻将引脚拉至低电平,用于确保引脚在未连接外部
信号时保持稳定的电平。1.
信号抗干扰:减少外部噪声对引脚电平的影响4.模拟 引脚的数字输入和输出功能被禁用,用于连接模拟信号。 1.
ADC 输入:连接模拟传感器(如温度传感器)
2.
DAC 输出:输出模拟信号(如音频信号)5.开漏输出 只能输出低电平或高阻态,外部上拉电阻才能提供高电平。 1.
I2C 总线:SDA 和 SCL 通常配置为开漏输出2.
电平转换:用于不同电压电平之间的信号转换3.
多设备共享信号线:如中断信号线6.推挽输出 可以输出高低电平,驱动能力强,适合驱动大电流负载。 1.
LED 控制:直接驱动 LED2.
电机控制:驱动电机驱动器3.
数字信号输出:输出高电平或低电平信号7.开漏式复用 同<开漏输出> 同<开漏输出> 8.推挽式复用 同<推挽输出> 同<推挽输出>
最右边的 I/O 引脚就是我们可以看到的芯片实物的引脚,其他部分都是 GPIO 的内部结构。
① 保护二极管
保护二极管共有两个,用于保护引脚外部过高或过低的电压输入。当引脚输入电压高于VDD 时,上面的二极管导通,当引脚输入电压低于 VSS 时,下面的二极管导通,从而使输入芯片内部的电压处于比较稳定的值。虽然有二极管的保护,但这样的保护却很有限,大电压大电流的接入很容易烧坏芯片。如 STM32 的引脚能直接外接大功率驱动器件(电机),强制驱动要么电机不转,要么导致芯片烧坏,必须要加大功率及隔离电路驱动。② 上拉、下拉电阻
它们阻值大概在 30~50K 欧之间,可以通过上、下两个对应的开关控制,这两个开关由寄存器控制。当引脚外部的器件没有干扰引脚的电压时,即没有外部的上、下拉电压,引脚的电平由引脚内部上、下拉决定,开启内部上拉电阻工作,引脚电平为高,开启内部下拉电阻工作,则引脚电平为低。同样,如果内部上、下拉电阻都不开启,这种情况就是我们所说的浮空模式。浮空模式下,引脚的电平是不可确定的。引脚的电平可以由外部的上、下拉电平决定。需要注意的是,ST