GPIO ----------- 通用输入输出端口(可控引脚)
最基本输出功能:控制引脚输出高、低电平,实现开关控制。
最基本的输入功能:检测外部输入电平。
GPIO基本结构分析:
1.保护二极管
引脚的两个二极管可以防止引脚外部过高或过低的电压输入。 当引脚电压高于VDD时, 上方的二极管导通 当引脚电压低于VSS时, 下方的二极管导通 防止不正常电压引入芯片导致芯片烧毁。
GPIO引脚路线经过两个保护二极管后,向上流向"输入模式"结构,
向下流向"输出模式"结构。
2.输出模式驱动器部分
mos管
路线经过一个由P-MOS和N-MOS管组成的单元电路。这个结构使GPIO具有"推挽输出"和"开漏输出"两种模式。
推挽输出模式:负载能力和开关速度都比普通的方式有很大的提高。应用在需在高速切换开关状态的场合。
开漏输出模式:P-MOS管完全不工作,(若控制输出为0,低电平,则P-MOS管关闭,N-MOS管导通,使输出接地。若控制输出为1(无法直接输出高电平),则P-MOS管和N-MOS管都关闭了,所以引脚既不输出高电平,也不输出低电平,也不输出高电平,为高阻态。)正常使用时必须外部接上拉电阻。具有"线与"特性,也就是说,若有很多个开漏模式引脚连接到一起时,只有当所有引脚都输出高阻态,才由上拉电阻提供高电平,此高电平的电压为外部上拉电阻所接的电源的电压。
应用在I2C、SMBUS通信等需要"线与"功能的总线电路中。Except,还可用在电平不匹配的场合,如需要输出5V电压,可以在外部接一个上拉电阻,上拉电源为5V,并设置GPIO为开漏输出模式。
GPIO的八种工作模式
1.输入模式(模拟/浮空/上拉/下拉)
浮空输入的电平是不确定的,完全由外部的输入决定。 模拟输入用于ADC采集。2.输出模式(推挽/开漏)
输出速度即I/O支持的高低电平状态最高切换频率,支持频率越高,功耗越大,如果功耗要求不严格,把速度设置成最大即可。
输出模式时肖特基触发器是打开的,即输入可用,通过输入数据寄存器GPIOx_IDR可读取I/O的实际状态。
普通推挽输出模式一般应用在输出电平为 0和3.3伏的场合。而普通开漏 输出一般应用在电平不匹配的场合,如需要输出 5伏的高电平,就需要在外部 接一个上拉电阻,电源为 5伏,把 GPIO设置为开漏模式,当输出高阻态时, 由上拉电阻和电源向外输出 5伏的电平。 对于相应的复用模式,则是根据 GPIO的复用功能来选择的,如 GPIO的引 脚用作串口的输出,则使用复用推挽输出模式。如果用在IC、SMBUS这些需要 线与功能的复用场合,就使用复用开漏模式。在使用任何一种开漏模式,都需要接上拉电阻。3.复用功能(推挽/开漏)
GPIOx_IDR/ GPIOx_ODR ----------- 输入输出数据寄存器
GPIOx_CRH/GPIOx_CRL ---------------- 控制端口高低控制寄存器
ODR寄存器可读可写:既能控制管脚为高电平,也能控制管脚为低电平。管脚对于位写1 gpio 管脚为高电平,写 0 为低电平
BSRR 只写寄存器:既能控制管脚为高电平,也能控制管脚为低电平。对寄存器高 16bit 写1 对应管脚为低电平,对寄存器低16bit写1对应管脚为高电平。写 0 ,无动作
BRR 只写寄存器:只能改变管脚状态为低电平,对寄存器 管脚对于位写 1 相应管脚会为低电平。写 0 无动作。
STM32 GPIO模式理解
详解STM32 GPIO口中的推挽输出和开漏输出
STM32 GPIO 配置之ODR, BSRR, BRR 详解
STM32:未使用的引脚应该怎么处理?
未使用的IO口,优先考虑将这些IO接地或者接到电源,配置成PP输出并驱动为低电平。如果有功耗方面的需求,就配置成模拟方式。