GPIO简介
GPIO,全称为通用输入输出端口,是STM32系列微控制器中的一个重要概念。STM32芯片的GPIO引脚可以被配置为输入模式或输出模式,实现与外部设备的通信、控制以及数据采集功能。
GPIO工作模式
输入模式
- 浮空输入
- 上拉输入
- 下拉输入
- 模拟输入
输出模式
- 开漏输出
- 推挽输出
- 推挽式复用功能
- 开漏式复用功能
输出速度
GPIO框图和电路解析
电路标识
- VDD通常指的是正电源电压,即芯片的工作电压。它是为芯片内部逻辑电路提供电源的,使得芯片能够正常工作。
- VSS通常指的是地线或0V参考电压。它是为芯片内部逻辑电路提供参考电压的,使得芯片内部逻辑能够正常工作。
- VDD_FT 对5伏容忍I/O脚是特殊的,它与VDD不同
电路元件
- 保护二极管:保护二极管的作用是防止引脚外部过高或过低的电压输入。当引脚电压高于VDD时,上方的二极管导通;当引脚电压低于VSS时,下方的二极管导通,从而保护芯片不受异常电压的损坏。 然而,尽管有二极管的保护,大电压和大电流的接入仍可能烧坏芯片。因此,在设计中应考虑引脚的保护电路,避免直接外接大功率驱动器件,如电机等。
- 上下拉电阻:上下拉电阻的作用是将不确定的信号线确定为高电平或低电平,防止外界干扰。具体来说,当某个引脚不控制时,上下拉电阻可以将该引脚确定为高电平或低电
- TTL肖特基触发器:TTL肖特基触发器是一种数字逻辑门电路,由两个或多个与非门组成。它的作用是将输入的模拟信号转换为数字信号,即当输入信号达到一定幅度时,触发器输出高电平,否则输出低电平。平。
- P-MOS:P-MOS管通常与输出引脚相连,用于控制输出信号的电平状态。当输出信号为高电平时,P-MOS管导通,输出引脚通过P-MOS管连接到VDD,输出高电平。当输出信号为低电平时,P-MOS管截止,输出引脚通过N-MOS管接地,输出低电平。
- N-MOS:N-MOS管通常与输出引脚相连,用于控制输出信号的电平状态。当输出信号为高电平时,N-MOS管截止,输出引脚通过P-MOS管连接到VDD,输出高电平。当输出信号为低电平时,N-MOS管导通,输出引脚接地,输出低电平。
GPIO工作模式电路解析
浮空输入
浮空输入,是指不接入上拉或下拉电阻,通过TTL肖特基触发器使得输入进来的电平数据更加稳定。在该模式下,引脚的电平状态完全取决于外部信号,当外部信号不接入时,引脚的电平状态不确定。这种模式一般用于按键检测之类的应用中。
上拉输入
上拉输入通过接入上拉电阻来读取引脚电平。当外部信号未接入时,引脚默认电平为高电平。
下拉输入
下拉输入通过接入下拉电阻来读取引脚电平。当外部信号未接入时,引脚默认电平为低电平。
模拟输入
开漏输出
在开漏输出模式下P-MOS不参与工作,控制输出0,N-MOS导通,此时为低电平,控制输出为1,N-MOS关闭,使得引脚既不输出高电平,也不输出低电平,有IO外部链接决定。
推挽输出
在推挽输出模式下,当内部信号为1时,上边的P-MOS管导通,下边的N-MOS管截止,IO口输出高电平。当内部信号为0时,上边的P-MOS管截止,下边的N-MOS管导通,IO口输出低电平。
推挽式复用功能
复用推挽输出模式下的IO不再受ODR控制,当外围电路产生低电平时,会导致IO口输出低电平;当外围电路产生高电平时,会导致IO口输出高电平。
开漏式复用功能
在复用开漏输出模式下,IO可以输出高低电平,但无法直接读取外部信号,该模式下的IO不再受ODR控制。由于开漏输出只能输出低电平,如果要输出高电平必须通过上拉电阻才能实现,因此上拉电阻的选择也会影响复用开漏输出的工作状态。
IO工作模式的选取
输入模式
浮空输入
- 当外部电路中已经包含适当的下拉电阻时,可以选择浮空输入模式。如果连接的是一个开关,开关的另一端已经通过外部电阻连接到地,那么可以选择使用浮空输入模式。
- 在某些模拟电路中,输入信号可以通过电阻分压器来模拟,当输入信号为0时,电阻分压器的输出电压为0V,相当于浮空输入模式。
注:需要注意的是,浮空输入模式并不常用,但在特定情况下,如模拟输入或低功耗下省电等场景中可能会使用到。在使用浮空输入模式时,应避免外部信号功率很小,否则可能会导致内部上拉电阻影响外部输入电平。因此,在选择使用浮空输入模式时需要根据实际情况进行评估和选择。
上拉输入
- 上拉输入主要用于检测低电平的输入,并能在未输入时默认IO为高电平。这种模式适用于电路为低有效的元器件的情况(例如LED共阳极)。
下拉输入
- 下拉输入主要用于检测高电平的输入,并能在未输入时默认IO为低电平。这种模式适用于电路为高有效的元器件的情况(例如LED共阴极)。
模拟输入
- 当需要采集模拟量信号时,如电压、电流、温度等参数,模拟输入模块可以将这些信号采集到计算机中,并进行相应的处理。
在自动化和信息化系统中,模拟输入模块可以应用于各种传感器和变送器的信号采集,实现数据采集和监控系统的集成。
输出模式
开漏输出
- 多设备共享总线:开漏输出允许多个设备共享同一个总线或信号线,通过合理的电平控制,实现对总线或信号线的协调使用,避免冲突和干扰。
- LED控制:开漏输出也常用于控制LED(Light-EmittingDiode)的亮灭。LED在工作时需要限流,以避免过电流损坏。通过使用开漏输出和外部限流电阻,可以有效控制LED的亮度和闪烁频率。
- 输入/输出扩展:开漏输出可用于输入/输出(I/O)扩展。通过使用外部电阻和开漏输出组合,可以将一个GPIO(General Purpose
Input/Output)引脚扩展为多个输入或输出引脚。 - 推挽输出无法满足需求时:开漏输出和推挽输出在工作原理、上拉电阻、输出电流和应用场景上存在差异。例如,当需要直接驱动负载时,推挽输出更合适;而在多设备共享总线的场景中,开漏输出更为适合。
推挽输出
- 当输出电平为0V和3.3V时,推挽输出模式是最佳选择。这是因为推挽输出可以输出高电平和低电平,并且不需要外部上拉或下拉电阻。
- 在高速切换开关状态的应用中,推挽输出模式也是很好的选择。因为它既提高了电路的负载能力,也提高了开关速度。
推挽式复用功能
- 当GPIO的引脚用作串口的输出时,可以使用复用推挽输出模式。这种模式可以提高电路的负载能力和开关速度,适用于高速切换开关状态的应用。
开漏式复用功能
- 控制多个PWM信号:当需要控制多个PWM信号时,例如,当多个PWM信号由同一GPIO口输出,并且需要连接在一起时,可以使用复用开漏输出模式。
- 复用其他外设功能:当GPIO口需要复用其他外设功能,例如I2C的SCL或SDA等,复用开漏输出模式可以方便地实现这些功能。
多路输出连在一起:当需要将多个输出端口连在一起时,例如,控制多个LED或其他负载,复用开漏输出模式可以方便地实现。
有什么错误请及时指出🤝