Port口配置关键
port口的输入输出模式
(333条消息) GPIO输入输出模式原理(八种工作方式附电路图详解)_gpio输出模式_行稳方能走远的博客-CSDN博客
输入模式
- 浮空输入(GPIO_Mode_IN_FLOATING)
- 上拉输入(GPIO_Mode_IPU)
- 下拉输入(GPIO_Mode_IPD)
- 模拟输入(GPIO_Mode_AIN)
输出模式
- 开漏输出(GPIO_Mode_Out_OD)
- 推挽输出(GPIO_Mode_Out_PP)
输入
上拉:默认情况下输入引脚数据为1,高电平。
上拉输入模式下,I/O端口的电平信号直接进入输入数据寄存器。但是在I/O端口悬空(在无信号输入)的情况下,输入端的电平保持在高电平(自己理解:上拉电阻连接电压);并且在I/O端口输入为低电平的时候,输入端的电平也是低电平(自己理解:上拉电阻上的电压和端口导通)。
下拉:默认情况下输入引脚为0,低电平。
下拉输入模式下,I/O端口的电平信号直接进入输入数据寄存器。但是在I/O端口悬空(在无信号输入)的情况下,输入端的电平保持在低电平;并且在I/O端口输入为高电平的时候,输入端的电平也是高电平。
浮空:浮空输入模式下,I/O端口的电平信号直接进入输入数据寄存器。也就是说,I/O的电平状态是不确定的,完全由外部输入决定;如果在该引脚悬空(在无信号输入)的情况下,读取该端口的电平是不确定的。通常用于IIC、USART。
模拟:模拟输入模式下,I/O端口的模拟信号(电压信号,而非电平信号)直接模拟输入到片上外设模块,比如ADC模块等。模拟信号一般:3.3v 5v 9v。
- 模拟量选浮空输入,模拟量是连续变化的值
- 数字量就两种状态0和1,选上拉和下拉,通过“拉高拉低”增益效果,消除中间态“”模糊电压“,同时赋予电路确定的初始值高或低。
输出
开漏:可以输出0和1,适用于电平不匹配场合,要得到高电平需要上拉电阻才行。
当设置输出的值为高电平的时候,N-MOS管处于关闭状态,此时I/O端口的电平就不会由输出的高低电平决定,而是由I/O端口外部的上拉或者下拉决定;当设置输出的值为低电平的时候,N-MOS管处于开启状态,此时I/O端口的电平就是低电平
推挽:可以输出高低电平0和1,适用于双向IO使用。
当设置输出的值为高电平的时候,P-MOS管处于开启状态,N-MOS管处于关闭状态,此时I/O端口的电平就由P-MOS管决定:高电平;当设置输出的值为低电平的时候,P-MOS管处于关闭状态,N-MOS管处于开启状态,此时I/O端口的电平就由N-MOS管决定:低电平。

GPIO引脚配置输入输出方式
- 推挽输出(Push-Pull Output):适用于控制外部数字电路或驱动其他数字设备。输出引脚会主动拉高或者拉低,以实现数字信号的传输。在需要精确控制输出电平的情况下常用,如控制LED、继电器等。
- 开漏输出(Open-Drain Output):通常用于在多个设备之间共享信号线,如总线通信。输出引脚可以拉底信号线,而上拉电阻将信号线拉高,适用于I2C、SPI等多个设备协作的情况
- 上拉输入(Pull-Up Input):适用于接收开关、按键、传感器等信号。在未触发时,上拉电阻将输入引脚拉高,当信号被激活时,输入电平会被拉低。防止浮空输入,提高信号的稳定性。
- 下拉输入(Pull-Down Input):与上拉类似,在信号未配置时,输入引脚会被拉低,同时防止浮空输入,适用于接收开关、按键、传感器等信号。
- 浮空输入(Floating Input):如果引脚连接到未定义的信号源,可能会导致浮空输入。通常情况下,应避免使用浮空输入,而是应该选择上拉或下拉模式,以确保输入的稳定性。
在配置GPIO引脚时,通常需要根据开发工具、硬件文档或相关编程库来设置引脚的模式、状态和电平。
上、下拉使用场景:
假设你正在设计一个嵌入式系统,其中有一个按键(按钮)用于触发特定的操作。在按键输入中,上拉或下拉电阻可以用来处理按键的状态,并确保在未按下按键时,引脚的状态是稳定的。
上拉电阻的应用场景:
- 假设你将按键连接到微控制器的引脚上。当按键未按下时,引脚处于高电平状态(通过上拉电阻拉高)。当按键按下时,引脚被连接到地,电平变为低电平状态。你可以在代码中检测引脚状态的变化,从而识别按键按下的事件。
下拉电阻的应用场景:
- 反过来,你也可以使用下拉电阻的方式来设计按键输入。在这种情况下,引脚在未按下按键时会被下拉电阻拉低,当按键按下时,引脚连接到高电平。同样,你可以在代码中检测引脚状态的变化,以便识别按键按下的事件。
开漏、推挽使用场景:
开漏输出应用场景:
在I2C通信中,多个设备可以共享同一条数据线,但是每个设备需要能够将数据线拉低。开漏输出模式非常适合这种情况,因为设备可以选择性地将引脚拉低,而当引脚不处于低电平状态时,它将变为高阻态(高阻抗状态),从而允许其他设备将线拉低。这样,多个设备可以在总线上进行协作。
推挽输出应用场景:
推挽输出引脚连接到LED,以控制LED的开关状态。当输出引脚拉高时,LED亮起;当输出引脚拉低时,LED熄灭。
常见通信总线输入输出引脚配置
常见通讯总线(I2C、SPI、UART、CAN、以太网等),输入输出引脚配置需要根据通讯总线和硬件设计需求有所不同,推荐的配置建议为:
I2C通信:
- 数据线(SDA)和时钟线(SCL)通常配置为开漏输出,并使用上拉电阻将线拉高,这有助于多设备在总线上的协作,保持总线空闲时的高电平状态
- 有些情况下,也可将SDA和SCL配置为推挽输出,但需要注意避免冲突和竞争
SPI通信:
- SPI通讯中的输出引脚(如:主设备的主机输出引脚)通常配置为推挽输出,以确保有效的信号传输
- 输入引脚通常需要配置为上拉和下拉,以确保在未接收到有效数据是保持稳定状态
UART通信:
- 接收引脚(RX)引脚通常需要配置为上拉和下拉,以确保在未接收到有效数据是保持稳定状态
- 发送引脚(TX)通常配置为推挽输出
CAN通信:
- CAN通信通常使用特定的物理层和收发器,引脚配置会有所不同。CAN通信线(CAN_H、CAN_L)通常不需要上下拉电阻
以太网通信:
- 以太网通信中的输入引脚和输出引脚通常需要按照具体的硬件要求配置,以确保正确的信号传输和连接状态指示
注意:通信总线的配置会受到硬件平台、具体应用、总线协议要求等多种因素的影响。在设计中,务必仔细阅读相关的硬件和通信协议文档,以确保正确地配置输入输出引脚。
端口的驱动能力
port口的驱动能力:指的是特定的通用输入/输出(GPIO)端口或引脚在输出高电平或低电平时所能提供的电流或电压能力。
配置GPIO端口的驱动能力可以影响以下方面:
- 信号稳定性: 引脚的驱动能力会影响信号的稳定性和可靠性。高驱动能力的引脚可以更轻松地驱动外部负载,例如驱动大电流的装置或通过长电缆传输信号,从而确保信号的稳定传输。
- 电流消耗: 不同的驱动能力需要不同的电流。高驱动能力通常需要更多的电流供应。在设计低功耗应用时,选择适当的驱动能力可以帮助降低电流消耗。
- 噪声抑制: 在一些情况下,高驱动能力可以提供更好的噪声抑制能力。较强的驱动能力可以在一定程度上抵消外部电磁干扰对信号的影响。
- 延迟和速率: 高驱动能力通常能够更快地改变信号状态,从而可能影响信号的传输速率和延迟。
- 外部设备驱动: 如果你要驱动需要较高电流的外部设备(如电机、继电器等),选择适当的驱动能力可以确保你的控制信号能够有效地驱动这些设备。
选择适当的驱动能力取决于应用需求,如需要驱动的负载、通信速率、电源消耗以及外部环境的影响等。
端口复用功能:
一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候就叫复用。
比如:STM2的串口1的引脚对应的I/O位PA9、PA10。而PA9、PA10默认的功能都是GPIO,所以说当PA9、PA10引脚作为串口1使用的时候就是端口复用。
本文来自博客园,作者:{Ray963},转载请注明原文链接:{https://www.cnblogs.com/ray93/}

浙公网安备 33010602011771号