GPIO作为单片机的重要外设之一,以下是我对于GPIO的输出功能的理解。
处理器的IO引脚除了可以作为输入输出引脚外,还能够作为其他模块,比如定时器的输出、SPI模块的引脚、串口的功能引脚等功能,具有“通用性”,所以这类引脚我们用通用IO引脚来描述,叫GPIO引脚。
关于GPIO引脚的内部电路结构
由图可见,每一个IO引脚的内部都由一对保护二极管、一对上下拉电阻、输入数据寄存器、肖特基触发器、位设置/消除寄存器、输出数据寄存器、输出控制逻辑、输出驱动电路等构成。
当GPIO设定为输出模式的时候
1、响应速度 IO引脚外接电路的频率可能不同,就需要配置不同的响应速度,而STM32的IO引脚输出时的速度可以设置为三种速度分别时low—2MHz,mediu—10MHz,high—50MHz,但是对于驱动一些蜂鸣器,LED灯对频率没有要求的时候一般采用低速,用以获得EMC性能。
2、驱动方式 分别有两种,①推挽输出 ②开漏输出
①推挽输出
当输出数据寄存器为1的时候(既输出控制为1),P-MOS管导通,N-MOS管截止,此时IO引脚的电平为VDD(高电平)。
当输出数据寄存器为0的时候(既输出控制为0),P-MOS管截止,N-MOS管导通,此时IO引脚的电平为VSS(低电平)。
①开漏输出
选择开漏输出的时候P-MOS管不工作,只有N-MOS管工作。
输出高电平的时候,N-MOS管截止,所以IO引脚需要靠上拉电阻进行上拉才可以输出高电平
输出低电平的时候,N-MOS管导通,此时电平为低
如果外部电路有比较大的电流灌入电路,则应该将引脚的输出驱动模式配置为开漏模式,让外部电流经过N-MOS管的源极流入VSS,以保护处理器的内部电路。