目录
二、I/O端口位的基本结构
STM32F103的GPIO详细介绍可以参考:GPIO的内部结构和工作模式_hepiaopiao_wemedia的博客-CSDN博客_gpio内部结构
基本结构图如下所示:
I/O端口位的基本结构
带5V容错的基本结构图如下所示:
5V容错I/O端口位的基本结构
主要以第一张图为基础来介绍。
I/O端口位的基本结构可分为上下两部分,下半部分为 “ 输出驱动 ” ,上半部分为 “ 输入驱动 ” 。
CMOS电路
1. “ 输出驱动 ”
1.1 当GPIO用作 普通I/O输出
下图高亮部分为普通I/O输出的过程:
<1>首先,通过 “ 置位/复位寄存器 ” 和 “ 输出数据寄存器 ” 的共同作用 输出 0 或 1 ;
<2>其次,在 选择器 处选择 “ 普通I/O输出 ” 或 “ 复用功能输出 ” ,这里选择 “ 普通I/O输出 ” ;
<3>再次,反相器 将前面输出的 0 或 1 转换为 1 或 0 ;
<4>最后,通过 P-MOS管 和 N-MOS管 两个MOS管决定 输出逻辑0 还是 逻辑1 。
- P-MOS管 为低电平导通,导通后输出逻辑1
- N-MOS管 为高电平导通,导通后输出逻辑0
1.2 当GPIO用作 复用功能功能输出
下图高亮部分为复用功能功能输出的过程:
注意:此时,选择器 选择的是 复用功能输出 。
2. “ 输入驱动 ”
2.1 保护二极管的作用
输入为低电平0时相对比较简单,上下拉电阻处于关闭状态,施密特触发器为打开状态。
输入为高电平时要考虑输入电压的大小,如果电压过大必须进行稳压,否则会烧坏电路。
1)输入的高电平为3.3V
输入的高电平为3.3V也能够之直接通过I/O引脚进入内部电路,与输入为低电平0一样。
2)输入的高电平为5V
这时就要用到 5V容错I/O端口 其中 VDD_FT(3.3V) 的。
当输入为时,上面二极管导通,连接 VDD_FT(3.3V),将输入的稳压到,从而保护了电路。
当输入为时(同样也是,只不过是方向相反),下面二极管导通,连接 VSS(0V),将输入的稳压到,从而保护电路。
2.2 上拉、下拉电阻(约40K)的作用
当某个引脚悬空时,其输入电平难以确定,不是高电平也不是低电平。
上拉、下拉的作用就是要解决这种不确定的电平状态,强制性的将电平拉上或拉下。注意这里是不确定的电平,当输入为确定的高电平或低电平时,上拉、下拉不起作用。
上拉和下拉都各有一个开关,当输入电平不确定时且上拉或下拉开关闭合时,不确定的电平就被强制性的转换为高电平(上拉开关闭合)或低电平(下拉开关闭合)。
1)上拉电阻
将上拉开关闭合,输入的不确定电平被强制上拉为高电平。
2)下拉电阻
将下拉开关闭合,输入的不确定电平被强制下拉为低电平。
怎样配置才能将I/O引脚用作输入或输出呢?需要用到哪些寄存器?需要如何配置寄存器呢?
这些将在下节讨论。