本博文内容导读📕🎉🔥
ESP32系统的基础外设开发:IO_MUX和GPIO矩阵
IO_MUX和GPIO矩阵
ESP32的I/O组成了与外部世界交互的基础,ESP32芯片有34个物理GPIO引脚。每个引脚都可用作一个通用I/O,或者连接一个内部的外设信号。
数字引脚(控制信号:FUN_SEL、IE、OE、WPU、WDU等)、162个外设输入和176个外设输出信号(控制信号:SIG_IN_SEL、SIG_OUT_SEL、IE、OE等)、快速外设输入/输出信号(控制信号:IE、OE等)以及RTC IO_MUX之间的信号选择和连接关系,构成了ESP32的I/O复用和GPIO交换矩阵。
IO_MUX、RTC、IO_MUX和GPIO交换矩阵用于将信号从外设传输至GPIO引脚,这些模块共同组成了芯片的I/O控制。ESP32芯片的34个物理GPIO引脚编号为:0~19、21~23、25~27、32~39。其中,GPIO 34~39仅用作输入引脚,其他的既可以作为输入又可作为输出引脚。
1. IO_MUX中每个GPIO引脚有一组寄存器
可以配置成GPIO功能,连接GPIO交换矩阵。
也可以直连功能,旁路了GPIO交换矩阵,快速信号,如:以太网、SDIO、SPI、JTAG、UART等会旁路GPIO交换矩阵以实现更好的高频数字特性,所以高速信号会直接通过IO_MUX输入/输出。
2. GPIO交换矩阵是外设输入/输出信号和引脚之间的全交换矩阵
芯片输入方向:162个外设输入信号都可以选择任意一个GPIO引脚的输入信号。
芯片输出方向:每个GPIO引脚输出信号可为176个外设输出信号中的任意一个。
3. RTC IO_MUX用于控制GPIO引脚的低功耗和模拟功能
只有部分GPIO引脚具有这些功能,包括引脚0、2、4、12~15、25~27、32~39。
因此,输入和输出的方式有如下几种:通过GPIO交换矩阵的外设输入/输出、IO_MUX的直接I/O功能、RTC IO_MUX的I/O功能。
通过GPIO矩阵的外设输入
为实现通过GPIO交换矩阵接收外设输入信号,需要配置GPIO交换矩阵从34个GPIO(0~19、21~23、25~27、32~39)中获取外设输入信号的索引号(0~18、23~36、39~58、61~90、95~124、140~155、164~181、190~195、198~206)。输入信号通过IO_MUX从GPIO引