STM32笔记——GPIO
2022-07-01 来源:csdn
GPIO简介
GPIO是通用输出输入端口的简称,简单来说就是STM32可控制的引脚,STM32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集功能。
GPIO的基本结构
1、保护二极管与上下拉电阻
当外部输入电压高于VDD的电压时,上方的保护二极管导通,当外部输入电压底于Vss的电压时,上方的保护二极管导通,防止不正常电压引入芯片导致芯片烧毁。
2、P-MOS管和N-MOS管
在输出模式部分,线路经过一个由'P-MOS'和'N-MOS'组成的结构,这个结构使其拥有'推挽输出'和'开漏输出'的功能。
3、TTL肖特基触发器
4、IO耐压
STM32是一款3.3V电压的芯片,IO输出是3.3V,但IO大部分都是可以容忍5V电压输入。一般在芯片手册的“引脚定义”章节可以查看到有FT标识表示该IO可以容忍5V电压输入。
GPIO的工作模式
GPIO的输入
GPIO的输出可以细分为4种工作模式:上拉输入、下拉输入、模拟输入、浮空输入。
1、输入上拉(GPIO_Mode_IPU)
上拉电阻:将一个不确定的信号(高电平/低电平),通过一个电阻与电源VCC相连,固定在高电平。上拉电阻的目的是为了保证在无信号输入时输入端的电平为高电平。
上拉就是把点位拉高,比如拉到Vcc。上拉就是将不确定的信号通过一个电阻嵌位在高电平。电阻同时起到限流的作用。弱强只是上拉电阻的阻值不同,没有什么严格区分。
2、输入下拉(GPIO_Mode_IPD)
下拉电阻:将一个不确定的信号(高电平/低电平),通过一个电阻与地线GND相连,固定在低电平。下拉电阻是为了保证无信号输入时输入端的电平为低电平。
下拉就是把点位拉低,比如拉到GND。下拉就是将不确定的信号通过一个电阻嵌位在低电平。电阻同时起到限流的作用。弱强只是下拉电阻的阻值不同,没有什么严格区分。
3、模拟输入(GPIO_Mode_AIN)
模拟输入用于ADC的采集。
4、输入浮空(GPIO_Mode_IN_FLOATING)
浮空就是逻辑器件与引脚即不接高电平,也不接低电平。由于逻辑器件的内部结构,当它输入引脚悬空时,相当于该引脚接了高电平。
此时的GPIO引脚是处在高阻状态的,浮空输入的电平是不确定的,完全取决于外部的输入。
浮空输入多用于外部按键输入、标准通信协议的I2C、USART的接收端;
GPIO的输出
GPIO的输出可以细分为4种工作模式:开漏输出、推挽输出、复用开漏输出、复用推挽输出。
1、推挽输出(GPIO_Mode_Out_PP)
推挽模式时双 MOS 管以轮流方式工作。当输入端口输入高电平,上部开关管导通,下部开关管关闭,VDD被推到OUT端口,相当于输出高电平;当输入端口输入低电平,上部开关管关闭,下部开关管导通,OUT端口接地,相当于输出低电平。
2、开漏输出(GPIO_Mode_Out_OD)
只有 N-MOS 管工作。当输入端口输入低电平,开关管导通,OUT端接地,相当于输出低电平;当输入端口输入高电平,开关管关闭,相当于输出高电平。
注:正常使用时必须外部上拉电阻。
3、推挽和开漏复用功能
可以理解为GPIO口被用作第二功能时的配置情况。(并非作为通用IO口使用)
推挽输出和开漏输出的对比
推挽输出模式一般应用在输出电平为0和3.3V而且需要高速切换开关的状态的场合。除了必须用开漏模式的场合,一般习惯使用推挽输出模式。
开漏输出模式一般应用在I2C、spi通信等需要“线与”功能的电路中。
就电流的大小而言,开漏输出是弱电流(基本算是没有电流)只是给外部一个电平信号,没有驱动能力,而推挽输出是强电流是具有推动(驱动)性的。
参考:
《【野火】stm32HAL库实战开发指南---基于F103系列开发板》
《STM32F10x——中文开发手册》