You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arduino Nano ESP32使用ESP32-audioI2S库编译报错:找不到span文件

问题:Arduino Nano ESP32使用ESP32-audioI2S库编译失败
  • 使用官方Arduino Nano ESP32板型编译时,报错找不到<span>文件,错误指向库中的psram_unique_ptr.hpp文件
  • 切换到板管理器中的Espressif ESP32板型后,编译可通过,但程序体积超出板载空间,验证失败

测试代码

#include <ESP_I2S.h>
#include <Audio.h>
#include <FS.h>
#include <SD.h>
#include <SPI.h>

//create audio object
Audio audio;

//defining pins for the SD card interface
int SD_CS = 10;
int SPI_CLK =  13;
int SPI_MOSI = 11;
int SPI_MISO = 12;

//defining pins for 98357A MAX connection interface
int I2S_LRC = 8;
int I2S_BLCK = 7;
int I2S_DATA = 9;

void setup() {
  pinMode(SD_CS, OUTPUT);
  digitalWrite(SD_CS, HIGH);
  SD.begin(SD_CS);
  
  audio.setPinout(I2S_BLCK, I2S_LRC, I2S_DATA);
  audio.setVolume(15);
  
  audio.connecttoFS(SD,"/14 bonus.mp3");
}

void loop() {
  // put your main code here, to run repeatedly:
  audio.loop();
}

对应报错信息

选择Espressif Nano32板型时的报错

Global variables use 60028 bytes (18%) of dynamic memory, leaving 267652 bytes for local variables. Maximum is 327680 bytes.
Sketch too big; see https://support.arduino.cc/hc/en-us/articles/360013825179 for tips on reducing it.
text section exceeds available space in board
Error compiling for board Nano32.

选择Arduino Nano ESP32板型时的报错

In file included from C:\Users\Amir\Documents\Arduino\libraries\ESP32-audioI2S-master\src/audiolib_structs.hpp:2,
                 from C:\Users\Amir\Documents\Arduino\libraries\ESP32-audioI2S-master\src/Audio.h:8,
                 from C:\Users\Amir\Documents\Arduino\Senior_design_testing\Senior_design_testing.ino:3:
C:\Users\Amir\Documents\Arduino\libraries\ESP32-audioI2S-master\src/psram_unique_ptr.hpp:8:10: fatal error: span: No such file or directory
 #include <span>
          ^~~~~~
compilation terminated.
Using library I2S at version 1.0 in folder: C:\Users\Amir\AppData\Local\Arduino15\packages\arduino\hardware\esp32\2.0.18-arduino.5\libraries\I2S 
Using library ESP32-audioI2S-master at version 3.4.6 in folder: C:\Users\Amir\Documents\Arduino\libraries\ESP32-audioI2S-master 
exit status 1
Error compiling for board Arduino Nano ESP32.

解决方案建议

解决<span>文件缺失问题

  • 升级ESP32核心版本:当前使用的核心版本(2.0.18-arduino.5)对C17标准支持不足,<span>是C17的标准库组件。在Arduino IDE的板管理器中,找到ESP32核心并升级到最新稳定版。
  • 强制开启C++17支持:如果暂时不想升级核心,可在项目目录下新建platform.local.txt文件,添加内容:compiler.cpp.extra_flags=-std=c++17,强制编译器使用C++17标准。
  • 降级ESP32-audioI2S库:尝试使用3.4.0版本之前的库,旧版本未依赖C++17的<span>组件,可避免该错误。

解决程序体积过大问题

  • 开启编译优化:在Arduino IDE的「工具」菜单中,找到「编译优化级别」,选择「Os(优化空间)」,减少编译后的程序体积。
  • 裁剪库功能:修改ESP32-audioI2S库的配置文件,关闭不需要的音频格式支持(如FLAC、WAV等,仅保留MP3),减少冗余代码。
  • 移除重复库依赖:代码中包含的<ESP_I2S.h>与ESP32-audioI2S库的I2S功能重复,尝试删除该头文件引用,避免重复编译。

内容的提问来源于stack exchange,提问作者AmiCaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.02 00:34:53