【Nations MCU 】GPIO 口的工作方式

一、 简介

                 4种输入模式: 

                              浮空输入_IN_FLOATING
                              带上拉输入_IPU
                              带下拉输入_IPD
                              模拟输入_AIN
                4 种输出模式
                              开漏输出_OUT_OD (带上拉或者下拉)
                              推挽输出_OUT_PP (带上拉或者下拉)
                              开漏复用输出_AF_OD (带上拉或者下拉)
                              推挽复用输出_AF_PP (带上拉或者下拉)
                4 种最大输出速度:
                              -2MHz
                              -25MHz
                              -50MHz
                              -100MHz
                        这个速度是指 GPIO 口驱动电路的响应速度,而不是输出信号的速度,输出信号的速度与程序有关(芯片内部在 I/O 口的输出部分安排了多个响应速度不同的输出驱动电路用户可以根据自己的需要选择合适的驱动电路)。通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。高频的驱动电路,噪声很高。

二、  GPIO 浮空输入_IN_FLOATING 模式工作原理

                 电平从 I/O 引脚输入,此时 TTL 施密特触发器会打开,电平存入输入数据寄存器, CPU 可通过内部的数据总线随时读出 I/O 端口的电平变化的状态。

三、 GPIO 带上拉输入_IPU 模式工作原理


                          与前面介绍的浮空输入模式相比,仅仅是在数据通道上面,接入了一个上拉电阻,根据 N32G457 的数据手册,这个上拉电阻阻值介于 30K~90K 欧姆。同样, CPU 可以随时在“输入数据寄存器”的另一端,通过内部的数据总线读出 I/O 端口的电平变化的状态。

四、 GPIO 带下拉输入_IPD 模式工作原理


                           与前面介绍的浮空输入模式相比,仅仅是在数据通道上面,接入了一个下拉电阻,同样, CPU 可以随时在“输入数据寄存器”的另一端,通过内部的数据总线读出 I/O端口的电平变化的状态。

五、 GPIO 模拟输入_AIN 模式工作原理


                          如果把 N32G45X 配置为模拟输入模式时,工作原理就比较简单了,信号从左边的 I/O 端口进从右边的 AD 模块。弱上拉和下拉电阻、输出缓存器、施密特触发输入被禁止,读取输入数据寄存器时数值为‘ 0 ’,输出值被强置为‘ 0 ’(实现了每个模拟 I/O 引脚上的零消耗)。 所以 CPU 不能通过“输入数据寄存器”读到 IO 端口变化的数据了。

六、 GPIO 开漏输出_OUT_OD 模式工作原理


                          从 ① 输入逻辑‘ 1 ’, N-MOS 关闭, I/O 端的电平将由外部的上拉电阻决定,所以 CPU 读取到的数据不一定是‘ 1 ’ 。

                         从 ① 输入逻辑‘ 0 ’ , N-MOS 开启,电平被接入到地的零电位, I/O 端的电平是‘ 0 ’, CPU 读取的数据一定是‘ 0 ’ 。

七、  GPIO 开漏复用输出_AF_OD 模式工作原理


                           GPIO 的开漏复用输出模式与开漏输出模式的工作原理基本相同,不同的是,通过外设输入和输出,输出控制电路的输入的源和复用功能的输出端相连。

                           CPU 同样可以从“输入数据寄存器”读取到外部 IO 端口变化的电平信号。

八、 GPIO 推挽输出_OUT_PP 模式工作原理


                           当 CPU 输出逻辑“ 1 ”时, ③ 的 P-MOS 管导通,而下方的 N-MOS  管截止, I/O 端输出的是‘ 1 ’ ,达到输出高电平的目的;

                           当 CPU 输出逻辑“ 0 ”时, ③ 的 P-MOS 管截止,而下方的 N-MOS  管导通, I/O 端输出的是‘ 0 ’,达到输出低电平的目的;  

                            CPU 可以从“输入数据寄存器”读到该 IO 端口电压变化的信号。

九、 GPIO 推挽复用输出_AF_PP 模式工作原理


               与推挽输出不同的是,通过外设输入和输出,输出控制电路的输入的源和复用功能的输出端相连。如果相应的外设模块没有被激活,那么此时 IO 端口的输出将不确定。

十、总结

               以 N32G457 为例,支持最多 97 个 GPIO ,共被分为7组(GPIOA/GPIOB/GPIOC/GPIOD/GPIOE/GPIOF/GPIOG ),每组 16 个端口( F 组共 10 个, G 组共 7 个)。每个 GPIO 引脚都可以由软件配置成输出(推挽或开漏)、 输入(带或不带上拉或下拉)或复用的外设功能端口,多数 GPIO 引脚都与数字或模拟的复用外设共用,有的 I/O 引脚还与时钟引脚复用;
               除了具有模拟输入功能的端口,所有的 GPIO 引脚都有大电流通过能力。复位期间和刚复位后,复用功能未开启,除 BOOT0 和 BOOT1 外( BOOT0 、和 BOOT1 为输入下拉), I/O 端口被配置成模拟输入模式。

十一、Reference

                   [1] CSDN-「LzChang」https://blog.csdn.net/qq_36276422/article/details/108052588

                   [2] DS_N32G457系列数据手册V1.2.1

                   [3] ST 学习资料_探索者 F4 视频盘( B 盘)_ 第12讲 STM32 GPIO 工作原理

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论