第二讲 GPIO输出
一、简介
- GPIO(General Purpose Input Output)通用输入输出口;
- 可配置为8种输入输出模式;
- 引脚电平:0V~3.3V,部分引脚可容忍5V(可接受输入);
- 输出模式下可以控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等;
- 输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接受数据等。
二、GPIO位结构
- 右侧的两个保护二极管:用于限幅电压,当输入电压大于3.3V时,导通上方的二极管,保护电路,当电压小于0V时,则会导通下方的二极管;
- 输入驱动器:闭合上面的开关就是上拉输入模式,闭合下面的开关就是下拉输入模式,如果都断开则就是浮空模式。为了避免引脚悬空导致输入不确定,需要在这里加上上拉或者下拉电阻,上拉模式默认高电平,下拉电阻默认低电平,由于电阻较大,这里是弱上拉和弱下拉;
- 肖特基触发器:这里存在翻译错误,内部符合施密特触发器,对输入电压进行整形,如果输入大于某一阈值,则输出高电平,若输入小于某一阈值,则输入低电平,在阈值范围内则保持原有电平不会变化;
- 模拟输入:连接到ADC上面,接收模拟量;
- 复用功能输入:连接其他需要读取的端口外设上,例如串口输入引脚,接收数字量;
- 输出控制寄存器:普通IO口输出,写这个数据寄存器的某一位就可以操作对应的端口
- 位设置/清除寄存器:可以单独操作输出数据寄存器的某一位,而不影响其他位,由于输入输出寄存器是同时控制十六位的输出,想要改变某一位,一种方法是通过读出寄存器的数据,再进行按位与或者按位或,另一种方法则是通过通过位设置和位清楚寄存器来实现,如果对某一位进行置一操作,则在位设置寄存器对应位置一,其他位置零,如果对某一位进行置零操作,则在位清除寄存器对应位置置一,其他位置置零。
- 两个MOS管:一种电子开关,在推挽(强推)模式下,P-MOS和N-MOS均有效果,在数据寄存器为1时,上管导通,下管断开,输出高电平,数据寄存器为0时,上管断开,下管导通,输出直接接到VSS,输出低电平,开漏模式下,只有N-MOS在工作,数据寄存器为1时,下管断开,输出相当于断开,高阻模式,数据寄存器为0时,下管导通,接到VSS输出低电平,可以用作通信协议的驱动方式,还可用作输出5V电压,在关闭模式下,两个MOS管均失效,端口的电平由外部信号控制。
三、GPIO模式
模式名称 | 性质 | 特征 |
---|---|---|
浮空模式 | 数字输入 | 可读取引脚电平,若引脚悬空,则电平不确定,端口要接上一个连续的驱动元 |
上拉输入 | 数字输入 | 可读取引脚电平,内部连接上拉电阻,悬空时默认高电平 |
下拉输入 | 数字输入 | 可读取引脚电平,内部连接下拉电阻,悬空时默认低电平 |
模拟输入 | 模拟输入 | GPIO无效,引脚直接接入内部ADC |
开漏输出 | 数字输入 | 可输出引脚电平,高电平为高阻态,低电平接VSS |
推免输出 | 数字输入 | 可输出引脚电平,高电平接VDD,低电平接VSS(在输出模式下,输入正常,但是输入模式下,输出断开) |
复用开漏输出 | 数字输入 | 由片上外设控制,高电平为高阻态,低电平接VSS |
复用推免输出 | 数字输入 | 由片上外设控制,高电平接VSS,低电平接VDD |
四、补充
GPIO的输出速度:可以限制输出引脚的最大翻转速度,为了低功耗和稳定性,一般配置成50MHz
高十六位进行位清除,第十六位进行位设置,除此之外还有一个位清除寄存器,方便对单个位进行设置或者清除,若同步要求较高时,则使用上图的寄存器,其他时候可以利用两个寄存器同时配置低十六位方便操作。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 青竹小站!