GPIO理论详解
GPIO详解
GPIO系统框图
GPIO寄存器表

GPIO硬件电路图

GPIO硬件结构详解
1、保护电路

- 当输入电压高于VDD时,上面的二极管导通,输入电压被钳位在VDD
- 当输入电压低于Vss时,下面的二极管导通,输入电压被钳位在Vss
确保引脚的电平在VDD和Vss之间,保护引脚和芯片
2、TTL施密特触发器

可以将模拟信号转换为数字信号
3、输入数据寄存器

可以存储外部输入的电平信号(来自TTL施密特触发器的数字信号)
4、输出数据寄存器

可以通过编程直接控制寄存器的数值是0还是1
5、二选一选择器

GPIO的输入模式
GPIO输入模式有四种:
- 上拉输入
- 下拉输入
- 浮空输入
- 模拟输入
GPIO输入电路图

1、模拟输入

2、上拉输入模式
IO端口输入高电平,读取高电平;输入低电平,读取低电平

IO端口悬空无信号输入,读取高电平

3、下拉输入模式
IO端口输入高电平,读取高电平;输入低电平,读取低电平

IO端口悬空无信号输入,读取低电平

4、浮空输入模式
IO端口输入高电平,读取高电平;输入低电平,读取低电平

IO端口悬空无信号输入,读取的电平是不确定的

GPIO输出模式
GPIO输出电路图

GPIO输出模式有四种:
- 推挽输出
- 开漏输出
- 推挽复用输出
- 开漏复用输出
输出模式硬件结构简化电络图

1、推挽输出
输出高电平

输出低电平

推挽输出的驱动能力和芯片的IO电流特性有关

如图芯片的IO电流特性所示,
- IO端口驱动电流最大25mA
- 端口总驱动电流最大240mA
- 对于大功率外设,需要外置驱动电路
2、开漏输出

没有外部上拉电阻

N-MOS管导通,输出端口被拉低

N-MOS管截止,输出端口高阻态
开漏输出要想输出高电平,需要外部上拉电阻提高驱动输出

开漏模式的作用
(1)改变输出高电平的电压,不通过VCC输出电压,由外部上拉电阻连接的电源决定输出电压

这里N-MOS管截止,输出电压就是5V
(2)具有“线与”的特性

多个开漏输出引脚连接到一块,如果都输出高电平,才能输出高电平

如果有一个引脚输出低电平,整个线路输出低电平
3、推挽复用输出

推挽输出和推挽复用输出的不同之处在于,控制源来自片上外设,比如PWM和串口
4、推挽复用输出

开漏输出和开漏复用输出的不同之处在于,控制源来自片上外设,比如I2C
单片机除了必须用开漏输出模式的场合,一般都使用推挽输出模式
———————————————————————————————————————————
GPIO输出模式

GPIO在输出时有三种状态:
- Q1和Q2打开,输出高电平
- Q1关闭Q2打开,输出低电平
- Q1和Q2关闭,输出端对VCC和GND有很大的电阻值,呈现高阻态,也叫浮空
- Q1和Q2不能同时打开,否则短路
推挽输出


推挽输出模式的两种状态:
- Q1打开Q2关闭,通过VCC输出高电平,就是推
- Q1关闭Q2打开,通过GND输出低电平,就是挽
开漏输出

开漏模式的两种状态:
- Q1一直处于关闭,可以忽略
- Q2打开,通过GND输出低电平
- Q2关闭,输出端处于高阻态,浮空
开漏模式的作用
(1)改变输出高电平的电压,不通过VCC输出电压,由外部上拉电阻连接的电源决定输出电压


(2)支持多个GPIO控制一个输出端

开漏输出模式下,
- 只要所有MOS管都关闭,输出端就会保持高电平
- 某个GPIO要输出低电平,只要打开GPIO对应的MOS管就能让输出端输出低电平
注意,如果使用推挽输出,多个GPIO相连的情况下,一旦有某个GPIO输出高电平,某个GPIO输出低电平时,就会出现短路问题,而多个GPIO控制一个输出端时这种问题不可避免,所以不能使用推挽输出。
更多推荐




所有评论(0)