ESP32目前支持SPI串行接口、6800、8080并口的LCD。
【软件应用例程】
SPI0:被Flash占用,内置Flash端口与芯片管脚对应关系如下,一般是GPIO6~GPIO1且这几个管脚不可用于其他功能。但不同型号的模组默认的Flash接口可能不同,可使用esptool工具通过espefuspysummary命令来查询默认的配置。
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-LCDKit开发板,开发板预留屏幕接口类型:SPI串行接口、8位和16位并行接口,可用于测试。对应原理请参见“esp-dev-kits/docs/zh_CN/esp32/esp32-lcdkit/hw/schematics/SCH_ESP32-LCDKit_V1_2019021pdf”ESP-WROVER-KIT开发板贴装一款2寸的SPILCD显示器,分辨率为320*240。请见ESP-WROVER-KITV1原理。
ESP32-CESP32都支持SPI传输AT指令,但由于ESP32的硬件条件的限制,我们更推荐使用ESP32的SDIOSPI方式传输AT指令,吞吐率参见“Readme”说明。
ESP32SPI1~SPI3可以作为SPI主机与其他从机通信。ESP32SPI作主机使用时,每个SPI控制器可以使用多个片选信号(CS0~CS来连接多个SPI从机设备。每个ESP32SPI主机默认最多可以接3个从机。在非DMA模式下,一次最多可以接收/发送64byte的数据,收发数据长度以字节为单位。详细说明建议阅读《ESP32技术参考手册》的“7SPI控制器”章节和“SPIMasterDriver”编程指南。参考例程:esp-idf/examples/peripherals/spi_master
ESP32的SPILCD的HMI示例程序参考esp-iot-solution/tree/master/examples/hmi适配的LCD的驱动库可参见esp-iot-solution/components/display/screen/controller_driver;默认使用的是ILI9341LCD。ESP32的8080并口的例程可参见esp-iot-solution/examples/screen例程。对于8080协议的LCD接口,我们使用的是I2S接口软件方式实现,但此方式只支持“写”,不支持“读”。ESP32SPI驱动墨水屏的例程可参考esp-idf/examples/peripherals/spi_master/lcd例程
ESP-Hosted无线网卡方案
SPI传输AT指令
“乐鑫ESP-LCD多媒体智能控制方案”视频介绍乐鑫ESP-LCD多媒体智能控制方案优势
ESP-Hosted无线网卡(Wirelessnetworkinterfacecontroller,WNI方案,可参见“乐鑫ESP-WNIC无线网卡方案”介绍。ESP32SPI接口支持如下特性:
ESP32系列的模组,目前默认最大支持16MB的Flash。ESP32系列的模组,除ESP32-WROVER模组为8VFlash以外,其他型号的模组均为3VFlash。带有内置Flash的芯片型号需要注意上电时的MTDI电平。例如ESP32-U4WDH的内置Flash的工作电压是3V,上电时需要将MTDI拉低。请参见《ESP32技术规格书》关于”Strapping管脚“的说明。目前ESP适配过的Flash型号可参见“Flash特性支持情况”SPIFLASH和PSRAM共用一组SPI,通过不同的CS线实现控制。GPIO16~GPIO17一般是用于Flash和PSRAM的共用接口,且这2个管脚不可用于其他功能。PSRAM的接口除了CS不能与Flash共用外,CLK接口,其他都可以与Flash的接口共用;目前最大支持使用外接8MBPSRAM。当使用VDD_SDIO的8V模式给Flash/PSRAM等外设供电时,需要在VDD_SDIO上接个对地2kΩ的电阻,参考《ESP32-WROVER技术规格书》中原理。SPIFlash/PSRAM硬件原理可参见《ESP32硬件设计指南》SPIFlash编程指南参见'SPIFlashAPI''SPIFlash加密'和'ESP32-SecureBoot安全方案'
【Flash&PSRAM常见应用问题】
ESP32适配的LCD参数
外接SPIPSRAM存储外部数据
最大分辨率:854*480
SDSPI
SPILCD方案介绍
Flash常见应用问题PSRAM常见应用问题
对自带的Flash设置特定的分区,作为操作SPIFFS文件系统的分区。可参见例程:esp-idf/examples/storage/spiffs对自带的Flash设置特定的分区,构建SPIFFS像生成示例:esp-idf/examples/storage/spiffsgen对自带的Flash设置特定的分区存储音频文件并播放存在Flash中的MP3文件示例:esp-adf/examples/player/pipeline_flash_tone对自带的Flash设置特定的分区构建SPIFFS文件系统来存储MP3文件,并播放存在SPIFFS文件系统中的MP3文件示例:esp-adf/examples/player/pipeline_spiffs_mp3
SPILCD软件应用
SPI接口
外接SPIFlash存储外部数据
SDSPIHostDriver说明SDSPI例程参见:esp-idf/examples/storage/sd_card/sdspi,包含硬件接线及上拉要求;支持SD卡。
SPI通信
SPI2和SPI3可以作为从机。SPI有时也称为HSPI;SPI有时也称为VSPI。详细说明建议阅读《ESP32技术参考手册》的“7SPI控制器”章节和“SPISlaveDriver”编程指南。参考例程:esp-idf/examples/peripherals/spi_slave
硬件条件的限制是指:SPISlave支持的SPIClock为10MHz,最理想的情况下大约1MB/s,但是实际要损失很多。SPISlave需要在挂载好Buffer之后才允许Master收发数据。请参见”SCLKFrequencyRequirements“说明。
可查阅”ESP-FAQ外设“章节。
应用分类
ESP32共有4个SPI控制器SPI0、SPISPISPI用于连接支持SPI协议的设备。SPI0控制器作为cache访问外部存储单元接口使用;SPI1作为主机使用;SPI2和SPI3控制器既可作为主机使用又可作为从机使用。作主机使用时,每个SPI控制器可以使用多个片选信号(CS0~CS来连接多个SPI从机设备。SPI1~SPI3控制器共享两个DMA通道。作为通用SPI支持以下特性:4种模式的SPI传输格式,模式取决于SPI时钟的极性(CPO和相位(CPH;最高支持到80MHz;最高支持64byte的FIFO;所有SPI接口都可以连接外部flash/SRAM和LCD。每一个SPI控制器都可连接到DMA通道。编程指南说明:SPIFeatures-SPIMaster-SPIBusLockSDSPIHostDriverSPIMasterDriverSPISlaveDriver
最大分辨率:480*320最大帧率:80MHz的频率大概是12帧
硬件上支持使用SPI2或SPI3接口外接PSRAM芯片,但是SPI2和SPI3不支持Cache,且目前软件上无SPISPI3的PSRAM的驱动,所以目前使用SPI2SPI3外接PSRAM是可不用的。
SPI使用注意事项
可使用通用SPI,支持任意GPIO管脚进行映射。使用任意GPIO进行映射时,需要注意对时序产生的影响,可参考“TimingConsiderations”说明。目前只支持外接SPINORFlash芯片,以W25Q32型号的SPINORFlash芯片为例,可参见例程esp-idf/examples/storage/ext_flash_fatfs
SPILCD硬件设计参考
080/6800接口协议
SPI外接LCD
ESP32的SPI在专用IO_MUXSPI引脚上的速度可达80MHz,在GPIOmatrix引脚上的速度可达40MHz,但在GPIOmatrix上的全双工传输只支持高达26MHz的速度。请阅读“SPIMasterDriver”编程指南。
文章为作者独立观点,不代表股票交易接口观点