[DAY 7] _GPIO口的八种模式

接续昨天说完暂存器的看法,再来讲一下GPIO口的八种模式,两大类分成输出跟输入细分有以下8种

1.开漏输出 (Output open-drain)

2.推挽输出 (Output push-pull)

3.复用开漏输出(Alternate function open-drain)

4.复用推挽输出(Alternate function push-pull)

5.类比输入 (Input Analog)

6.浮空输入 (Input floating)

7.下拉输入 (Input pull-down)

8.上拉输入 (Input pull-up)

刚学嵌入式的新手,这些观念必须要搞清楚,最常接触的就是推挽输出跟开漏输出。

1.开漏输出(Output open-drain)

Open,输出是开路的,所以使用的话就要加上拉电阻,主要的结构NMOS或NPN的BJT,STM的内部是用MOSFET,Drain为输出,这输出模式主要用来做电位的转换,IO口的电位是由外部的上拉电组VCC来做决定的(5Vor3.3V),下面这张图为开漏输出的图:
https://ithelp.ithome.com.tw/upload/images/20210920/20141979hVBGd1eHNY.png
可以看到这张Reference manual里面的图,我红框起来的PMOS,使用开漏输出的话只会用到下面的NMOS,注意这边NMOS跟PMOS的Gate脚是分开的前面接了一个 Output control(输出控制),开漏只会用下面的MOS,推挽的话两个Gate脚会接在一起。
先提一下上拉电阻的问题,电阻值不是随便决定的後面会在教学怎麽去算上拉电阻,这跟拉LOW拉HIGH的速度有关,这速度不管的话很多Snesor会抓取不到正确的数位数值,这在I2C有很重要的地位。

2.推挽输出(Output push-pull)

如字面上的意思,推跟拉的输出,MCU内的推挽输出的结构是利用CMOS(互补式金属氧化物半导体),输出上端PMOS下端为NNOS,那怎麽做到推拉?
https://ithelp.ithome.com.tw/upload/images/20210920/20141979OHPMS0Hpq2.png
可以看到我红框的部分,可以当作PMOS跟NMOS的Gate脚是接在一起的,他的预作原理当输出控制给VDD时PMOS不导通NMOS是导通这样输出会接地拉电流,想反的输出控制给GND时PMOS导通NMOS不导通,输出会接VDD灌电流到输出类似於推的动作。其实这工作就是CMOS的反向器,这样可以做很快速的切换。

3和4复用功能

简单来说,在STM有些IO口有对应的功能来开启,我前几天说的脚位定义那里都有清楚的表示,例如UART、I2C、SPI、ADC,就根据你要开启的硬体上的功能来复用。

5.类比输入(Input Analog)

这没甚麽好解释的,MCU内部有ADC开启类比输入模式来读取类比值转换成数位值。

6.浮空输入(Input floating)

通常用作按键的状态检测,可以看到我DAY2的电路图,Reset的部分按钮并联个电容在上拉个电阻,没按下的状态是上拉3.3V,按下时是GND,这样电路也可以应用在浮空输入,至於最後的上拉跟下拉输入意思也一样,看你是要用内部的上下拉还是外部的,就自己决定瞜~

今天大致是这样,明天我来分享如何用标准库来开发吧,我还是先以STM32F103这颗常见的MCU来做解释好了。


<<:  Day 15:完了,我的Coroutine漏出去了.Coroutine的Leak与结构化

>>:  IOS、Python自学心得30天 Day-17 learning rate

Day 27 Explore monitoring and reporting

Monitor applications and services Azure Monitor An...

Day 3 Odoo模组开发

Odoo模组开发实战 目录 开发Odoo应用程序 1.建立addons资料夹 2.建构模块 3.创建...

Day 20:Dijkstra演算法

先前我们利用广度优先搜寻,找到图中两节点之间的最短路径,其中所谓「最短」是指「经过最少的边」。可是这...

轻松为您的企业创建徽标

使用量身定制的品牌徽标制作工具 Visual Paradigm Online,您只需单击几下即可设计...

popcat 如何使用 python 搭配 selenium 在浏览器上自动点击

popcat 有监於台湾在popcat中被泰国抢下金牌,无聊的我写了这一个咚咚 这次是使用 Pyth...