一文带你搞懂GPIO以及常见面经

1.GPIO简介

       通用输入输出端口,用于与外设进行数字信号通信。STM32芯片的GPIO被分成很多组,每组有16个引脚,所有的GPIO引脚都有基本的输入输出功能。

什么是GPIO的复用:

    STM32 有很多的内置外设,这些外设的外部引脚都是与 GPIO 共用的。一个引脚可以有很多作用,但是默认为IO口,如果想使用一个 GPIO内置外设的功能引脚,就需要GPIO的复用,那么当这个 GPIO 作为内置外设使用的时候,就叫做复用,比如说串口就是GPIO口复用为串口。

2. GPIO结构

保护二极管: IO引脚上下两边两个二极管用于防止引脚外部过高、过低的电压输入,当引脚电压高于VDD_FT时,上方的二极管导通,当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁
上拉、下拉电阻: 控制引脚默认状态的电压,开启上拉的时候引脚默认电压为高电平,开启下拉的时候引脚默认电压为低电平
TTL施密特触发器: 基本原理是当输入电压高于正向阈值电压,输出为高;当输入电压低于负向阈值电压,输出为低;IO口信号经过触发器后,模拟信号转化为0和1的数字信号 也就是高低电平 并且是TTL电平协议 这也是为什么STM32是TTL电平协议的原因
P-MOS管和N-MOS管: 信号由P-MOS管和N-MOS管,依据两个MOS管的工作方式,使得GPIO具有“推挽输出”和“开漏输出”的模式 P-MOS管高电平导通,低电平关闭,下方的N-MOS低电平导通,高电平关闭

3. GPIO的输入模式

3.1 浮空输入/上拉输入/下拉输入:

      I/O端口的电平信号直接进入输入数据寄存器。

      不同输入的特点。

     浮空:引脚悬空(在无信号输入)的情况下,读取该端口的电平是不确定的。

     上拉: VDD接通,默认高电平。

     下拉:VSS接通,默认低电平。

      注意:STM32的内部上拉是"弱上拉",即通过此上拉输出的电流是很弱的,如要求大电流还是需要外部上拉。

3.2 模拟输入

        当GPIO引脚用于ADC采集电压的输入通道时,用作"模拟输入"功能,此时信号不经过施密特触发器,直接直接进入ADC模块,并且输入数据寄存器为空 ,CPU不能在输入数据寄存器上读到引脚状态。

4. GPIO口的输出模式

4.1 推挽/开漏输出:

**推挽输出:**可以输出强高低电平,结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止.

       在推挽输出模式时,N-MOS管和P-MOS管都工作,如果我们控制输出为0,低电平,则P-MOS管关闭,N-MOS管导通,使输出低电平,I/O端口的电平就是低电平,若控制输出为1 高电平,则P-MOS管导通N-MOS管关闭,使输出高电平,I/O端口的电平就是高电平,外部上拉和下拉的作用是控制在没有输出时IO口电平。

**开漏输出:**可以输出强低电平,高电平得靠外部电阻拉高输出端相当于三极管的集电极.

      在开漏输出模式时,只有N-MOS管工作,如果我们控制输出为0,低电平,则P-MOS管关闭,N-MOS管导通,使输出低电平,I/O端口的电平就是低电平,若控制输出为1时,高电平,则P-MOS管和N-MOS管都关闭,输出指令就不会起到作用,此时I/O端口的电平就不会由输出的高电平决定,而是由I/O端口外部的上拉或者下拉决定。

4.2 复用推挽/开漏输出

     如果需要作为内置外设的输出的时候,需要使用复用推挽/开漏输出,使用该模式的时候输出数据寄存器GPIOx_ODR无效,输出的高低电平的来源于其它外设,施密特触发器打开,输入可用,通过输入数据寄存器可获取I/O实际状态,  除了输出信号的来源改变 其他与推挽/开漏输出功能相同。

5 GPIO总结

8种模式特点及其应用
输入浮空输入用,完全浮空,状态不定
输入上拉输入用,用内部上拉,默认是高电平
输入下拉输入用,用内部下拉,默认是低电平
模拟功能

用于接收连续变化的模拟信号,通常与ADC/DAC(模数转换器)配合使用, 测量传

感器信号、音频输入等模拟信号的变化。

开漏输出永远只输出低电平,需要通过上拉电阻实现高电平的输出。IIC 的 SDA、SCL 等
推挽输出

驱动能力强,25mA,通用输出,适用于高速外设。

SPI的输出线。

开漏式复用功能片上外设功能(硬件 IIC 的 SDA、SCL 引脚等)
推挽式复用功能片上外设功能(SPI 的 SCK、MISO、MOSI引脚等)

面经

 1. 浮空输入,上下拉输入的区别。

  2. 开漏输出和推挽输出的区别以及应用的场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值