STM32中GPIO工作模式

来源:互联网 发布:域名别名是什么意思 编辑:程序博客网 时间:2024/05/06 19:53

一、什么是GPIO?

General Purpose Input Output (通用输入/输出)简称为GPIO,或总线扩展器。

二、GPIO配置模式

这里写图片描述

GPIO 模 式 模 式 说 明 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 复用推挽输出
GPIO输入模式
  • 模拟输入
    • 顾名思义,模拟量输入(若引脚悬空,该端口的电平是不确定的)。(ADC采集时考虑滤波)
  • 浮空输入
    • 多用于外部按键输入,IO的电平状态由外部输入决定。默认情况下什么都不接,呈高阻态
  • 下拉输入
    • 表示该端口在默认情况下输入为低电平
  • 上拉输入
    • 表示该端口在默认情况下输入为高电平
GPIO输出模式
  • 开漏输出
    • 仅作为输出强低电平,高电平得靠外部电阻拉高。适合于做电流型的驱动,用来连接不同电平的器件以匹配电平。
  • 推挽输出
    • 输出强高低电平,连接数字器件
  • 复用开漏输出
    • 作为第二功能时的配置片内外设功能(I2C的SCL,SDA)
  • 复用推挽输出
    • 片内外设功能(TX1,MOSI,MISO.SCK.SS)
端口复用功能

所谓复用,就是一些端口不仅仅可以做为通用IO口,还可以复用为一些外设引脚(比如PA9,PA10可以复用为STM32的串口1引脚),最大限度的利用端口资源

端口重映射功能

就是可以把某些功能引脚映射到其他引脚(比如串口1默认引脚是PA9,PA10可以通过配置重映射映射到PB6,PB7),方便布线


GPIO 输出速度匹配 说 明 GPIO_Speed_10MHz 最高输出速率10MHz GPIO_Speed_2MHz 最高输出速率2MHz GPIO_Speed_50MHz 最高输出速率50MHz

通过可选速度(2MHz、10MHz、50MHz)来选择不同的输出驱动模块,以达到最佳的噪声控制和降低功耗的目的。

说明:在输出模式下,以上3种可选输出速度度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关(芯片内部在I/O口的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路)。

Ps:高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。当然如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。

输出速度又称输出驱动电路的响应速度,可理解为:输出驱动电路的带宽,即一个驱动电路可以不失真地通过信号的最大频率。

    如果一个信号的频率超过了驱动电路的响应速度,就有可能信号失真。如果信号频率为10MHz,而你配置了2MHz的带宽,则10MHz的方波很可能就变成了正弦波。就好比是公路的设计时速,汽车速度低于设计时速时,可以平稳地运行,如果超过设计时速就会颠簸,甚至翻车。
// GPIO的引脚速度跟应用相匹配,速度配置越高,噪声越大,功耗越大。// 带宽速度高的驱动器耗电大、噪声也大,带宽低的驱动器耗电小、噪声也小。// 使用合适的驱动器可以降低功耗和噪声。

三、GPIO的引脚速度与应用匹配说明(推荐10倍以上)。

  • 对于串口,假如最大波特率只需115.2KHz,那么用2MHz的GPIO的引脚速度就够了,既省电也噪声小。

  • 对于I2C接口,假如使用400KHz波特率,若想把余量留大些,那么用2MHz的GPIO的引脚速度或许不够,这时可以选用10MHz的GPIO引脚速度。

  • 对于SPI接口,假如使用18MHz或9MHz波特率,用10MHz的GPIO的引脚速度显然不够了,需要选用50MHz的GPIO的引脚速度。

0 0
原创粉丝点击