GPIO Matrix & IO Mux

发布时间 2023-07-14 15:46:35作者: sky啊哈

何为GPIO?

GPIO只是一个CPU内提供的一种功能外设,CPU外部的I/O引脚会被赋予一种功能(GPIO、UART、I2C、SPI等);该功能由CPU内外设提供,具体是什么功能由IOMUX单元(I/O复用选择器)控制。

GPIO(General Purpose Input/Output)是芯片内的外设功能模块 ,每个GPIO外设连接到了外部的I/O引脚上,和GPIO外设相连的I/O引脚(I/O引脚相较于GPIO更加远离CPU) 起着通用输入输出的功能,所以被称为 GPIO 引脚。
但是,I/O引脚不仅和GPIO外设相连,还可以和芯片内部其它外设相连,比如和UART、IIC、SPI等外设相连作为通信外设的接口引脚,和定时器相连作为PWM输出引脚,等等。

https://blog.csdn.net/qq_42611237/article/details/126374623

每个GPIO有8中输入输出模式。

嵌入式接口技术(一)GPIO_gpio状态高阻态_InfiniteYuan的博客-CSDN博客

何为GPIO Matrix?

低速外设可以通过GPIO Matrix路由到不同的GPIO引脚上进行输入和输出。高速外设需要有专门的IO引脚。

 

  1. O_MUX 中每个 GPIO pad 有一组寄存器。每个 pad 可以配置成 GPIO 功能(连接 GPIO 交换矩阵)或者直连功能(旁路 GPIO 交换矩阵,快速信号如以太网、SDIO、SPI、JTAG、UART 等会旁路 GPIO 交换矩阵以实现更好的高频数字特性。所以高速信号会直接通过 IO_MUX 输入和输出。)
  2. GPIO 交换矩阵是外设输入和输出信号和 pad 之间的全交换矩阵。

            • 芯片输入方向:162 个外设输入信号都可以选择任意一个 GPIO pad 的输入信号。
            • 芯片输出方向:每个 GPIO pad 的输出信号可来自 176 个外设输出信号中的任意一个。

        3. RTC IO_MUX 用于控制 GPIO pad 的低功耗和模拟功能。只有部分 GPIO pad 具有这些功能。

GPIO Matrix and Pin Mux — Arduino-ESP32 2.0.6 documentation (espressif.com)

https://blog.csdn.net/qq_40078905/article/details/107435351

 

 ESP32 学习笔记(二)GPIO & RTC GPIO_esp32d2wd结构图_InfiniteYuan的博客-CSDN博客

何为IO_Mux?

它是CPU内部的控制器,负责给PAD赋予不同功能,使得PAD在外部展现出不同的功能;而PAD的外部就是IO引脚;因此实现IO复用

IO_Mux复用选择器:芯片的每个PAD通过IOMUXC中的MUX寄存器和PAD寄存器设置,可以支持多种功能(如GPIO、IIC、USART…)。每一个PAD的功能都需要由IO_Mux决定;被设置完功能的PAD就体现为外部IO引脚。

GPIO外设:GPIO模块是每个PAD都具有的外设,但不一定每一个PAD都会使用。当需要赋予PAD引脚GPIO功能时,就要在通过IOMUX沛公功能后,再配置GPIO外设中的各个寄存器(DR、GDIR、PSR…)。

外部IO = 内部PAD + 外设

 

GPIO,UART,I2C,SPI这些都是外设,PAD具体的功能是通过IO_Mux来选择的,每个 pad 都可用作一个通用 IO,或连接一个内部的外设信号。可以将一些外设配置到任何 GPIO 引脚