默认的SDK还没有支持I2S,需要联系原厂打补丁。
另外没有ADF的支持,只能直接基于IDF实现MP3播放。
步骤如下:
1.打上I2S补丁
git am ESP_IDF_0001-support-I2s-for-ESP32c3-from-6be10fab098e2b6984388b2c4e5099bbf600e29d-v4.3-branch.patch
2.基于I2C从ADF移植ES8311驱动
主要是修改I2C操作的接口
3.由于ESP32C3管脚非常稀缺,SPI即使是内置,但仍然无法使用这些管脚,因此需要尽量节省管脚。修改ES8311驱动时钟为BCLK,无需配置MCLK脚,且时钟为1M以上:(来自顺芯FAE彭老板的建议)。
4.另外:读取数据时,需要自己处理左右声道的移位操作,播放时也需要响应的移位。
5.MP3解码库:参考stm32播放mp3的例子所用的库。
6.注意一个MP3文件数据中,有许多TAG,包含了歌词等元素,需要剔除才能正常播放。这里用到ffmpeg指令进行剔除。并且ffmpeg可以控制转换比特率和声道等。
7.性能完全没有问题。