ESP32 SPI接口的强大应用
总体介绍
1. ESP32 共有 4 个 SPI 控制器 SPI0、SPI1、SPI2、SPI3,用于连接支持 SPI 协议的设备。
SPI0 控制器作为 cache 访问外部存储单元接口使用; SPI1 作为主机使用; SPI2 和 SPI3 控制器既可作为主机使用又可作为从机使用。作主机使用时,每个 SPI 控制器可以使用多个片选信号 (CS0 ~ CS2) 来连接多个 SPI 从机设备。 SPI1 ~ SPI3 控制器共享两个 DMA 通道。 2. 作为通用 SPI 支持以下特性:
4 种模式的 SPI 传输格式,模式取决于 SPI 时钟的极性 (CPOL) 和相位 (CPHA); 最高支持到 80 MHz(实际可支持频率还受限于所用 pad、PCB 走线、外接器件规格等); 最高支持 64 byte 的 FIFO ; 所有 SPI 接口都可以连接外部 flash/SRAM 和 LCD。每一个 SPI 控制器都可连接到 DMA 通道。 3. 编程指南说明:
SPI Features – SPI Master – SPI Bus Lock SD SPI Host Driver SPI Master Driver SPI Slave Driver
应用分类
1 SPI Flash/PSRAM
1.1 内置 SPI Flash/PSRAM
espefuse.py summary
命令来查询默认的配置。SPI_PAD_CONFIG_CLK (BLOCK0): Override SD_CLK pad (GPIO6/SPICLK) = 0 R/W (0b00000)
SPI_PAD_CONFIG_Q (BLOCK0): Override SD_DATA_0 pad (GPIO7/SPIQ) = 0 R/W (0b00000)
SPI_PAD_CONFIG_D (BLOCK0): Override SD_DATA_1 pad (GPIO8/SPID) = 0 R/W (0b00000)
SPI_PAD_CONFIG_HD (BLOCK0): Override SD_DATA_2 pad (GPIO9/SPIHD) = 0 R/W (0b00000)
SPI_PAD_CONFIG_CS0 (BLOCK0): Override SD_CMD pad (GPIO11/SPICS0) = 0 R/W (0b00000)
ESP32 系列的模组,目前默认最大支持 16MB 的 Flash 。
ESP32 系列的模组,除 ESP32-WROVER 模组为 1.8V Flash 以外,其他型号的模组均为 3.3V Flash。
带有内置 Flash 的芯片型号需要注意上电时的 MTDI(GPIO12) 电平。例如 ESP32-U4WDH 的内置 Flash 的工作电压是 3.3V,上电时需要将 MTDI(GPIO12) 拉低。请参见《ESP32 技术规格书》关于”Strapping 管脚“ 的说明。
目前 ESP 适配过的 Flash 型号可参见 “Flash 特性支持情况”
SPI1:FLASH 和 PSRAM 共用一组 SPI,通过不同的 CS 线实现控制。GPIO16 ~ GPIO17
一般是用于 Flash 和 PSRAM 的共用接口,且这 2 个管脚不可用于其他功能。PSRAM 的接口除了 CS(任意 GPIO)不能与 Flash 共用外,CLK 接口(建议参考模组使用的时钟脚),其他都可以与 Flash 的接口共用;目前最大支持使用外接 8MB PSRAM。
当使用 VDD_SDIO 的 1.8 V 模式给 Flash/PSRAM 等外设供电时,需要在 VDD_SDIO 上接个对地 2 kΩ 的
电阻,参考《ESP32-WROVER 技术规格书》 中原理图。
SPI Flash/PSRAM 硬件原理图可参见《ESP32 硬件设计指南》
SPI Flash 编程指南参见 "SPI Flash API"
【软件应用例程】
【Flash & PSRAM 常见应用问题】
1.2 外接 SPI Flash 存储外部数据
1.3 外接 SPI PSRAM 存储外部数据
2 SD SPI(可使用 SPI 接口或 SDIO 接口)
3 SPI 外接 LCD
ESP32 目前支持 SPI 串行接口、6800、8080 并口的 LCD。
3.1 ESP32 适配的 LCD 参数
1. SPI 接口
2. 8080/6800 接口协议
3.2 SPI LCD 硬件设计参考
3.3 SPI LCD 软件应用
3.4 SPI LCD 方案介绍
“乐鑫 ESP-LCD 多媒体智能控制方案” 视频介绍 乐鑫 ESP-LCD 多媒体智能控制方案优势
4 SPI 通信
4.1 SPI Master
一次最多可以接收/发送 64 byte 的数据
,收发数据长度以字节为单位。4.2 SPI Slave
4.3 SPI 传输 AT 指令
硬件条件的限制是指:
SPI Slave 支持的 SPI Clock 为10MHz, 最理想的情况下大约 1MB/s , 但是实际要损失很多。 SPI Slave 需要在挂载好 Buffer 之后才允许 Master 收发数据。 请参见 ”SCLK Frequency Requirements“ 说明。
5 ESP-Hosted 无线网卡方案
ESP-Hosted 无线网卡 (Wireless network interface controller, WNIC) 方案,可参见 “乐鑫 ESP-WNIC 无线网卡方案” 介绍。 ESP32 SPI 接口支持如下特性:
SPI 使用注意事项
SPI 常见应用问题
可查阅 ”ESP-FAQ 外设“ 章节。