Arduino Uno作SPI主机用ESP32DMASPI库编译报spi_master.h缺失
报错根本原因
hideakitai/ESP32DMASPI是仅支持ESP32平台的专用SPI库,库内部依赖的driver/spi_master.h是ESP32官方ESP-IDF开发框架自带的底层硬件驱动头文件,AVR架构的Arduino Uno不存在该文件。将ESP32专用库直接放到Uno的工程中编译,必然触发头文件缺失的报错,不存在可直接安装到Arduino AVR环境下的driver/spi_master.h移植包,不用浪费时间检索相关安装资源。
正确实现步骤
- 两端代码分开编写、分开编译烧录,不要把ESP32端的依赖库混到Uno的工程里:
- Arduino Uno作为SPI主机,不需要使用
ESP32DMASPI库,直接调用Arduino内置标准SPI.h库编写主机通信逻辑即可,Uno硬件本身不支持SPI DMA,用标准库实现SPI收发完全满足常规通信需求。 - ESP32作为SPI从机,单独保留
ESP32DMASPI从机模式的配置代码,编译时开发板选择对应ESP32型号即可正常通过编译。
- Arduino Uno作为SPI主机,不需要使用
- 硬件接线前提前对齐两端SPI配置参数:时钟极性(CPOL)、时钟相位(CPHA)、通信速率、数据位长度,避免接线正确但数据收发异常。
- 烧录验证时先烧录ESP32从机固件,再给Uno上电烧录主机固件,避免从机未就绪导致的初始通信失败。
内容的提问来源于stack exchange,提问作者Mohammed Aijaz
相关产品推荐
相关产品推荐

