MCU的GPIO口设计是我们在硬件开发中必须使用到的一个部分。其中通过对内部相关寄存器的配置可以实现输入口的内部上拉或者内部下拉;通过对内部相关寄存器的配置可以实现对输入口的上、下两个MOS 管导通来实现输入浮空,输入上拉,输入下拉,开漏输出,推挽式输出等功能。

a).IO口的引脚输入电压
GPIO内部的二极管是两个钳位二极管的作用。其作用是防止从外部I/O管脚输入的电压过高或者过低造成内部电路损坏。一般IO口的输入电压为VSS-0.3≤Vinput≤VDD+0.3,其中0.3为二极管导通压降,VDD为MCU工作电压,VSS为MCU GND电压。如果从GPIO输入的电压≥VDD加上上方二极管的导通压降,则上面钳位二极管导通,从而输入到内部的信号电压不会超过VDD+0.3V。同理,如果GPIO输入的电压电压≤VSS,则由于下方钳位二极管导通,会把实际输入内部的信号电压钳制在VSS-0.3V左右。
b)IO口的MOS管
下面是某MCU 输入输出IO端口的寄存器配置,通过对寄存器配置来控制上、下两个MOS 管导通关闭来实现开漏 推挽的控制输出。MCU 所有的 IO 在上电完成还未进行其他配置时,均默认工作在浮空输入模式, 其中调试口为上拉或下拉模式,具体的上拉还是下拉请参照用户手册。

C)IO口的上下拉电阻
IO 口的内部上拉或者下拉电路,通过相关寄存器的配置可以实现输入口的内部上
拉或者内部下拉,上拉/下拉电阻的阻值可以参考数据手册。下图是某MCU 的上下拉电阻
