cathy的头像

随着智能时代的到来,各种人工智能应用的产品如:车载导航系统、可穿带设备、智能家居等目不暇接,而在这中间,微控制器的应用范围越来越广泛。微控制器(Microcontroller)俗称单片机(Single-chip Microcomputer),也称为微处理器(Microprocessor)。它是把微型计算机的主要部件都集成在一块芯片上的单芯片微型计算机。那么在学习选用MCU和其他逻辑器件的时候我们常别人说这款芯片是推挽输出驱动能力强,这个引脚是开漏输出需要加上拉电阻。有时候会感觉一头雾水,今天就详解一下各IO口的类型与应用。

IO口分为GPIO口和专用IO口。

GPIO的八种工作模式详解:浮空输入、带上拉输入、带下拉输入、模拟输入、开漏输出、推挽输出、开漏复用输出。

1、浮空输入_IN_FLOATING

“浮空输入”
浮空输入

顾名思义,浮空就是 浮在空中.也就是没有什么把他拉下来,也没有什么把它拉上去。

特点:电压的不确定性,它可能是0V,也可能是VCC,还可能是介于两者之间的某个值(最有可能).。

浮空一般用来做ADC输入用、可以做KEY识别、RX,这样可以减少上下拉电阻对结果的影响。

2、带上拉输入_IPU

“带上拉输入”
带上拉输入

上拉就是把电位拉高,比如拉到Vcc。上拉就是将不确定的信号通过一个电阻嵌位在高电平,电阻同时起限流作用!

3、带下拉输入_IPD

“下拉输入”
下拉输入

特点就是把电压拉低,拉到GND。与上拉原理相似。

对于要加上拉或下拉电阻:

1.当作单片机作为输入时,假设我们直接在IO端口接一个按键到地(或电源)。

因为按键按,于不按管脚都是悬空的。单片机就很难检测按键是否按下。

所以人为的接一个上拉(或下拉)。以确定未按下的时候IO输入电平的状态

2.可以提高芯片的抗干扰能

3.当单片机的IO口作输出时,如果不接上拉电阻只能提供灌电流。无法输出电流驱动外接设备。这时也需要考虑上拉电阻。这样才可以使IO输出高电平

4、模拟输入_AIN

“模拟输入”
模拟输入

应用ADC模拟输入,或者低功耗下省电

信号从左边编号为1 的端口进从右边编号为2的一端直接进入MCU的AD模块。

5、开漏输出_OUT_OD

“开漏输出”
开漏输出

上图是GPIO开漏输出模式的工作原理图

当CPU 在编号1 端通过“位设置/ 清除寄存器”或“输出数据寄存器”写入数据后,该数据位将通过编号2的输出控制电路传送到编号4 的I/O端口。

如果CPU 写入的是逻辑“1 ”,则编号3 的N-MOS管将处于关闭状态,此时I/O 端口的电平将由外部的上拉电阻决定。

如果CPU写入的是逻辑“0”,则编号3的N-MOS管将处于开启状态,此时I/O端口的电平被编号3的N-MOS管拉了“地”的零电位。

在图中的上半部,施密特触发器处于开启状态,这意味着CPU可以在“输入数据寄存器”的另一端,随时可以监控I/O端口的状态,通过这个特性,还可以实现了虚拟的I/O端口双向通信:假如CPU 输出逻辑“1 ”,由于编号3 的N-MOS管处于关闭状态,I/O 端口的电平将完全由外部电路决定,因此,CPU 可以在“输入数据寄存器”读到外部电路的信号,而不是它自己输出的逻辑“1 ”。

GPIO口的输出模式下,有3 种输出速度可选(2MHz 、10MHz和50MHz) 这个速度是指GPIO口驱动电路的响应速度,而不是输出信号的速度,输出信号的速度与程序有关(芯片内部在I/O口的输出部分安排了多个响应速度不同的输出电路用户可以根据自己的需要选择合适的驱动电路)。

通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。

高频的驱动电路,噪声很高 当我们的项目不需要比较高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI 性能。

当然如果我们的项目要求输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到比较失真的输出信号

6、推挽输出_OUT_PP

“推挽输出”
推挽输出

GPIO的推挽输出模式是在开漏输出模式的基础上,在“输出控制电路”之后,增加了一个P-MOS管

当CPU输出逻辑“1 ”时,编号3 处的P-MOS管导通,而下方的N-MOS管截止,达到输出高电平的目的

当CPU输出逻辑“0 ”时,编号3 处的P-MOS管截止,而下方的N-MOS管导通,达到输出低电平的目的

在这个模式下,CPU 仍然可以从“输入数据寄存器”读到该IO端口电压变化的信号。

优点:可以吸收电流也可以灌电流。

缺点:一条总线上,只能有一个推挽输出器件。

7、开漏复用输出_AF_OD

“开漏复用输出”
开漏复用输出

GPIO的开漏复用输出模式与开漏输出模式的工作原理基本相同

不同的是编号为2 的输入的源不同,它是和复用功能的输出端相连

此时的“输出数据寄存器”被输出通道给断开了。

从上面的这个图,我们还可以看到CPU同样可以从“输入数据寄存器”读取到外部IO端口变化的电平信号。

8、推挽复用输出_AF_PP

“推挽复用输出”
推挽复用输出

最后介绍一下GPIO推挽复用输出模式的工作原理

编号2“输出控制电路” 输入是与复用功能的输出端相连

此时“输出数据寄存器”被从输出通道断开了,片上外设的输出信号直接与“输出控制电路”的输入端想连接。

我们将GPIO配置成复用输出功能后,假如相应的外设模块没有被激活,那么此时IO端口的输出将不确定。

其它部分原理与前面叙述的模式一样,包括对“输入数据寄存器”的读取方式也是一样的。

最后,着重说明一下,MCU外设输入输出的配置情况;

1、外设对应管脚为输出:可根据外围电路的配置选择对应管脚为复用功能的推完输出或者复用功能的开漏输出。

2、外设对应管脚为输入:可根据外围电路的配置选择对应管脚为浮空输入或者带上拉输入或者带下拉输入。

3、ADC对应的管脚:配置管脚为模拟输入

如果把端口配置成复用输出功能后,如过外设没有被激活,那么它的输出将不确定。

本文转载自:今日头条-何雪涛硬件设计
声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有,如涉及侵权,请联系小编邮箱:cathy@eetrend.com 进行处理。

点击这里,获取更多关于应用和技术的有关信息
点击这里,获取更多工程师博客的有关信息