ESP32之软件SPI驱动及SPI、HSPI和VSPI的理解

ESP32之软件SPI驱动及SPI、HSPI和VSPI的理解_第1张图片
ESP32 共有 4 个 SPI 控制器,用于连接支持 SPI 协议的设备。 SPI0 控制器作为 cache 访问外部
存储单元接口使用, SPI1 作为主机使用, SPI2 和 SPI3 控制器既可作为主机使用又可作为从机使用。作主机使
用时,每个 SPI 控制器可以使用多个片选信号 (CS0~CS2) 来连接多个 SPI 从机设备。 SPI1 ~ SPI3 控制器共享
两个 DMA 通道。
SPI 控制器在 GP-SPI 模式下,支持标准的四线全双工通信(MOSI、 MISO、 CS、 CLK)和三线半双工通信(DATA、
CS、 CLK)。 SPI 控制器在 QSPI 模式下使用信号总线 D、 Q、 CS0~CS2、 CLK、 WP 和 HD 作为 4-bit 并行 SPI
总线来访问外部 Flash 或 SRAM。
ESP32之软件SPI驱动及SPI、HSPI和VSPI的理解_第2张图片

需要注意的是,HSPI和VSPI并不是网友们认为的high-speed SPI 和Very High-speed SPI,这是SPI和HSPI、VSPI是一样的,只不过是换个名字用于区分,SPI相当于SPI0或SPI1,HSPI相当于SPI2,VSPI相当于SPI3。

ESP32之软件SPI驱动及SPI、HSPI和VSPI的理解_第3张图片
如果SPI采用GPIO矩阵,则最大频率会限制在26.6MHz,如果采用IOMUX,最高频率会限制在80MHz;
一般情况下,如果你用esp-idf的例程spi_master配置频率超过26.6Mhz时,会出现以下LOG:

 * When work in full-duplex mode at frequency > 26.7MHz, device cannot read correct data.
 * Try to use IOMUX pins to increase the frequency limit, or use the half duplex mode.
 * Please note the SPI master can only work at divisors of 80MHz, and the driver always tries to find the closest frequency to your configuration.
 * Specify ``SPI_DEVICE_NO_DUMMY`` to ignore this checking. Then you can output data at higher speed, or read data at your own risk.

如果需要IOMUX提高SPI速率,则可以做一下配置
ESP32之软件SPI驱动及SPI、HSPI和VSPI的理解_第4张图片

你可能感兴趣的:(ESP系列学习,ESP32,SPI,HSPI,VSPI)