ESP32之軟件SPI驅動及SPI、HSPI和VSPI的理解

SPI系統框圖
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。
SPI信號與引腳信號功能映射關係

需要注意的是,HSPI和VSPI並不是網友們認爲的high-speed SPI 和Very High-speed SPI,這是SPI和HSPI、VSPI是一樣的,只不過是換個名字用於區分,SPI相當於SPI0或SPI1,HSPI相當於SPI2,VSPI相當於SPI3。

在這裏插入圖片描述
如果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速率,則可以做一下配置
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章