GPIO 不同配置带来的不同效果 | 学习笔记

简介: 快速学习 GPIO 不同配置带来的不同效果

开发者学堂课程【嵌入式之 RFID 开发与应用2020版:GPIO 不同配置带来的不同效果】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/665/detail/11151


GPIO 不同配置带来的不同效果

IO 整个的配置,继续完善一下。流程第一使能时钟; 第二步定义 Gpio 的数据结构;第三步初始化这些数据结构;第四步通过库函数接口完成寄存器配置。

整个流程,第一步定义的结构体如图:

image.png

第二步设置它的速度,第三步设置它的输入输出方式,有模拟输入、悬空输入、下拉输入、开漏输入、复用功能开漏输出等等。

最后调用 GPIO_Init,其实是完成了一堆计算器的操作。函数里面所有的这些配置,如果将来换成别的 io 口,或者是别的模块的时候,不见得是 APP2 了,你要在这里改一下,但是基本流程不变。

最后去点 LED 灯和操作蜂鸣器,效果是一样的。

重点看 IO 口既然是学单片机,要了解一下 IO 口是整个配置代表的含义,单片机里面 32 的单片机的配置的方式应该说是最多的,能够支持各式各样的配置。下面介绍每种配置的作用。

 

一、GPIO 配置

1、悬空输入

image.png

如果把一个 io 口配置成悬空输入,两个管子是属于保护二极管, io 口是对外的,整个部分是属于芯片内部的逻辑电路,所谓的悬空就是上拉电阻的开关是断开的,下拉也是断开的,只经过了一个触发器,直接就送到了芯片的内部,就可以读取 io的状态。触发器的主要的作用是滤波,整形的一个电路,它没有跟其他的电路相连接,这就是悬空。或者悬空输入的值,如果外面也没有接任何外设,读回来这个值是不确定的,因为它没有跟任何外界沟通,这个值读出来也是未知。主要作用是为了降低功耗。

2、上下拉输入

image.png

在悬空输入的基础之上把上图右上角开关给闭合了。也就是此时如果外部依然没有接任何东西的话,那么此时在 4 这个位置读到的值,可以非常明确的知道它的值就是 1。因为这里拉成了高电平。上拉输入的好处就是可以明确电平,当然还有下拉,下拉明确的就是低电平。

image.png

上下拉的话它主要有三个作用,第一就是钳位电平,因为只有接了上下拉,的这个值才是固定的,否则的话值是不确定的,就是读回来这个值不知道是多少,所以它是钳位住了电平。

第二是增强驱动,以上拉为主,假设现在上拉不是输入是输出了,外面接了一个灯是接地的,流过的电流假设是 I。如果没有上拉,那么 I拉就等于芯片内部的电流假设叫 I1,如果接了上拉,那么还有一个电流叫 I2,所以I1和加上 I2 等于 I,之前直接等于I电流明显是增大了,所以增强了驱动能力。

第三个是抗干扰,抗干扰的意思就是,不管是上拉还是下拉,那么拉完了之后, io口的引脚要么就到电源,要么就到地,而电源和地本身是一个回路,如果外界有个静电或者是干扰的进入,那么它就能被电源给吸收掉。如果没有上下拉,那么这个信号就直接到达芯片内部,就容易对芯片内部的逻辑电路造成影响。

image.png

3、模拟输入

模拟输入不需要上下拉,拉完了之后模拟输入就会出问题,它也不经过施密特触发器,直接到达芯片内部,也就是模拟输入跟的悬空输入非常的像,只是不经过施密特触发器,因为模拟输入就是模拟型号,模拟电信号。比如 AD 转换,肯定需要模拟原始信号,不能经过任何处理的原始信号,如果处理完之后,就不能得到真实的情况,比如麦克风采样的信号,处理完那就不是真实的声音了。还有模拟输出,比如 DAC。

4、通用开漏输出

image.png

输入是走上面那条路,输出就是走下面这条路。在下方最左端写的值经过了位的设置、输出寄存器,最后送到选择寄存器,选择完了之后再送到输出电路,再经过两个末视管,下面管子的急电极及上面管子发射器是断开的,也就是一个开漏输出。

假设输出电路前选择出来电平是高电平,上面输出的就是 0,因为这两个末视管的信号刚好相反,那么下面输出 1。假设 1 是使管子导通,也就是接地了,最终输出的信号是 0,开漏输出的值为低电平。若上面输出为 1,下面为 0 的时候,下方这个管子就是截止,管子截止就意味着输出的 io 既无法跟上面的电源相连,也无法跟下面的地相连,直接断开了,断开之后,那么这个时候输出的值它既不是 0,也不是 1,不知道是多少。所以开漏输出通常只能输出 0,别的都不能输出。

开漏输出的意义是非常大的,例如 151 单片机供电电压是 5 伏的,之后买许多传感器或者是叫外设模块,然后外设工作电压 3.3 伏,建议接 5 伏,51 单片机它就是 5 伏的,接不上 3.3 伏。还有一种情况是用了一个单片机,比如 avr 这个单片机它是 3.3 的,然后又买了一个 5 伏的,它们又无法接上。现在 32 提供一种方式,叫开漏输出。

开漏输出的意思就是只能输出低电平,硬件工程师可以自己在 io 口的外部去接一个上拉电阻,然后这个电阻接到电源,电源多少都可以。

假如输出的是低电平,它就最终输出了一个低电平,但是如果输出的是一个高电平,输出电路后方就断开了,这里之前是未知的输出,因为接了一个上拉,它就变成一个已知的输出,而且这个输出的值一定是高电平, 高电平的这个值取决于上拉的是 5 伏还是 3.3,上拉是 5 伏,那么它输出的就是 5 伏,上拉是 3.3,输出的就是 3.3 伏。这样子就完成了电平的兼容,完美的兼容了不同外侧的电平,这是开漏输出的好处。

它还有一个意义,在输出的时候,假如有 3 个开漏输出的 io 口,这 3 个 io 口可以作为一个选择器,送到另一个输出里面去。这 3 个 io 有一个线语的功能,把它当成一个与门来用。只要让 io 口输出一个低电平,就等于是把输出给短路了,把它短路这 3 个引脚全部连一块,只要有一个引脚短路,那就全短路了。所以 3 个 io 里任何一个为低电平它就短路,只有除非 3 个全部都接成高电平,它的输出才是高电平,否则就是低电平。所以就省去了一个与门电路,最后一个叫做线与功能,这就是开漏输出的优势。

5、复用开漏输出

image.png

复用开漏输出这里指的是输出的值不是直接输出的,而是复用到了别的电路。复用,表示 io 不再普通 io,而是具有特殊功能的 io,比如 spi,uart 等。

6、通用推挽输出

image.png

推挽输出用的非常多,首先是要往 io 口去写入一个值,刚才讲开漏的时候,两个管子里是断开的,那么如果是推挽的话,这两个管子是通过一个开关, 比如当输入一个高电平,那上面是低电平,下面是高电平,这样的带来的意义是上面 0 这个管子就截止了,1 的管子导通,输出低电平。给的是低电平,上面是 1 下面是 0,意思就是下面的管子截止,而上面的管子导通,导通之后接的电源是1,也就是不管它输出的是 0 还是 1,它的输出的值直接要么跟地相连,要么跟电源相连。

电源提供电流的阻抗是比较小的,从而就大大的增加了拉电流和断电流。所以推挽输出是为了提高驱动能力。

7、复用推挽输出

image.png

主要不再是普通 io,而是由芯片内部的其他模块来提供的一个输入输出的值。

GPIO 配置:

1、悬空输入,为了降低功耗

2、上下拉:钳位电平、增强驱动、抗干扰

3、模拟输入就是模拟电信号,如 ADC

4、开漏输出,通常情况下只能输出 0,意义:完美兼容不同外设点评,线与

5、复用,表示 IO 不在是普通 IO,而是具有特殊功能的 IO,比如 SPI,uart 等

6、推挽输出,是为了提高驱动能力

7、复用推挽输出

相关文章
GPIO简介
本文所述IO(Input/Output PAD)主要是指集成在CMOS芯片中的连接模块,其负责芯片引脚的外部信号与芯片内部的数字/模拟模块的交互,它是一颗完整芯片设计中不可或缺的组成部分。 文章首先根据IO的使用类型,介绍了IO的分类;紧接着重点介绍了GPIO的输入/输出功能和模式...
GPIO简介
|
芯片
STM32速成笔记(二)—GPIO
本文介绍了STM32的GPIO的配置和使用方法,并且给出了应用实例。此外,针对使用时可能遇到的一些问题给出了解决办法。
368 0
STM32速成笔记(二)—GPIO
|
6月前
|
Linux 芯片 Ubuntu
Linux驱动入门 —— 利用引脚号操作GPIO进行LED点灯
Linux驱动入门 —— 利用引脚号操作GPIO进行LED点灯
|
6月前
|
传感器 数据采集 存储
STM32--GPIO
STM32--GPIO
|
6月前
|
Linux API
常见的GPIO口框架分析
常见的GPIO口框架分析
135 0
STM32F0单片机快速入门五 GPIO中断
STM32F0单片机快速入门五 GPIO中断
|
移动开发 API
STM32使用HAL库操作GPIO
使用HAL库的优点在于不用手动添加初始化的代码了,CubeMX会根据软件设置自动生成
216 0
|
编译器 C语言
STM32学习笔记(1) GPIO初始化及点亮LED
在这一段代码中,假设同时有A.h和B.h同时包含了这个头文件,在编译器编译A时,会先判断LED.H有没有被定义(这里肯定是未被定义的),那么就定义(define __LED_H),然后再(endif),在编译器编译B时,同样会判断LED.H有没有被定义(这里经过A的编译,肯定是被定义的),那么就直接(endif)。这样,就可以防止重复编译。
304 0
|
芯片
STM32F1系列GPIO的八种工作模式
以STM32的F1系列为例,用最通俗易懂的大白话教会你外设GPIO的8种工作模式。并附流程图,有助于加深理解
264 0
STM32F1系列GPIO的八种工作模式