一、什么是GPIO?
1.简介
(1)GPIO是通用输入输出端口简称
(2)是stm32可控制的引脚
(3)GPIO与外部设备连接,可实现控制、与外部设备通信、数据采集等功能
(4)stm32控制的是GPIO上电平的变化
2.GPIO组成框图
从上图可以看出,GPIO口实现的就是输入输出功能,所以可以从输入驱动器和输出驱动器两个方面去剖析。
(1)保护二极管:外部设备与GPIO口连接时,若电压过高或过低都可以通过这两个二极管进行保护,防止不正常电压进入芯片导致芯片烧毁。STM32不建议直接驱动电机,会导致电机不转或者stm32芯片烧毁。官方数据手册明确stm32 GPIO口电压范围。
(2)输出驱动器:
【1】P-MOS管和N-MOS管组成的电路使GPIO具有“推挽输出”、“开漏输出”两种模式。
推挽输出:
IN: H OUT: H (上面三极管导通,下方三极管截至,OUT输出高电平3.3V);
IN: L OUT: L (上方三极管截至,下方三极管导通,OUT输出低电平0V)
优点:OUT端高低电平与电源挂钩,电压信号强,STM32常用该模式
开漏输出:上方的P-MOS管完全不工作
IN: L OUT: L(P-MOS关闭,N-MOS导通,输出接地)
IN: H OUT: 高阻态(P-MOS关闭,N-MOS也关闭), 只有用上拉电阻把OUT与VDD连接
上,OUT引脚才会输出高电平
优点:可实现“线与”功能,一般应用于I2C、SMBUS通讯中,还用于电平不匹配场合
【2】输出数据寄存器和复用功能输出
(3)输入驱动器
【1】输出数据寄存器
【2】复用功能输入
【3】模拟输入:模拟信号采集
其中【1】【2】需要先经过TTL肖特基触发器,【3】不需要;因为肖特基触发器的功能是将模拟信号转换成离散信号。
3.GPIO工作模式
8种工作模式,三大类:输出模式(4种)、输出模式(2种)、复用功能(2种)
输入模式:模拟、浮空、上拉、下拉输入。输入模式下,施密特触发器打开,输出被禁止。
输出模式:推挽、开漏输出。输出模式下,施密特触发器打开,输入可用。举例:用GPIO控制LED灯,GPIO配置输出模式,此时GPIO端口可以输出高低电平控制灯的亮灭,也可以通过GPIO口读取当前电平状态知道灯的情况。
复用功能:推挽、开漏。在复用功能下,输出使能,可工作在推挽和开漏模式,但是,输出信号源于其他外设,输出数据寄存器无效;输入可用,可以通过输入数据寄存器获取GPIO状态。