This commit is contained in:
2021-11-26 11:12:56 +01:00
parent 179bba0829
commit cd47e00a7d
3 changed files with 15 additions and 8 deletions

View File

@@ -24,7 +24,7 @@
//#ifndef ESP32 // No LittleFS there, yet //#ifndef ESP32 // No LittleFS there, yet
#include <Arduino.h> #include <Arduino.h>
#include <LITTLEFS.h> #include <LittleFS.h>
#include "AudioFileSource.h" #include "AudioFileSource.h"
#include "AudioFileSourceFS.h" #include "AudioFileSourceFS.h"
@@ -32,8 +32,8 @@
class AudioFileSourceLittleFS : public AudioFileSourceFS class AudioFileSourceLittleFS : public AudioFileSourceFS
{ {
public: public:
AudioFileSourceLittleFS() : AudioFileSourceFS(LITTLEFS) { }; AudioFileSourceLittleFS() : AudioFileSourceFS(LittleFS) { };
AudioFileSourceLittleFS(const char *filename) : AudioFileSourceFS(LITTLEFS, filename) {}; AudioFileSourceLittleFS(const char *filename) : AudioFileSourceFS(LittleFS, filename) {};
// Others are inherited from base // Others are inherited from base
}; };

View File

@@ -21,6 +21,7 @@
#include <Arduino.h> #include <Arduino.h>
#ifdef ESP32 #ifdef ESP32
#include "driver/i2s.h" #include "driver/i2s.h"
#include "soc/soc_caps.h"
#elif defined(ARDUINO_ARCH_RP2040) || defined(ESP8266) #elif defined(ARDUINO_ARCH_RP2040) || defined(ESP8266)
#include <i2s.h> #include <i2s.h>
#endif #endif
@@ -166,17 +167,21 @@ bool AudioOutputI2S::begin(bool txDAC)
i2s_mode_t mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX); i2s_mode_t mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX);
if (output_mode == INTERNAL_DAC) if (output_mode == INTERNAL_DAC)
{ {
mode = (i2s_mode_t)(mode | I2S_MODE_DAC_BUILT_IN); #if SOC_I2S_SUPPORTS_DAC
mode = (i2s_mode_t)(mode | I2S_MODE_DAC_BUILT_IN);
#endif
} }
else if (output_mode == INTERNAL_PDM) else if (output_mode == INTERNAL_PDM)
{ {
mode = (i2s_mode_t)(mode | I2S_MODE_PDM); mode = (i2s_mode_t)(mode | I2S_MODE_PDM);
} }
i2s_comm_format_t comm_fmt = (i2s_comm_format_t)(I2S_COMM_FORMAT_I2S | I2S_COMM_FORMAT_I2S_MSB); i2s_comm_format_t comm_fmt = (i2s_comm_format_t)(I2S_COMM_FORMAT_STAND_I2S);
if (output_mode == INTERNAL_DAC) if (output_mode == INTERNAL_DAC)
{ {
#if SOC_I2S_SUPPORTS_DAC
comm_fmt = (i2s_comm_format_t)I2S_COMM_FORMAT_I2S_MSB; comm_fmt = (i2s_comm_format_t)I2S_COMM_FORMAT_I2S_MSB;
#endif
} }
i2s_config_t i2s_config_dac = { i2s_config_t i2s_config_dac = {
@@ -197,8 +202,10 @@ bool AudioOutputI2S::begin(bool txDAC)
} }
if (output_mode == INTERNAL_DAC || output_mode == INTERNAL_PDM) if (output_mode == INTERNAL_DAC || output_mode == INTERNAL_PDM)
{ {
i2s_set_pin((i2s_port_t)portNo, NULL); #if SOC_I2S_SUPPORTS_DAC
i2s_set_dac_mode(I2S_DAC_CHANNEL_BOTH_EN); i2s_set_pin((i2s_port_t)portNo, NULL);
i2s_set_dac_mode(I2S_DAC_CHANNEL_BOTH_EN);
#endif
} }
else else
{ {

View File

@@ -94,7 +94,7 @@ AudioOutputSPDIF::AudioOutputSPDIF(int dout_pin, int port, int dma_buf_count)
.sample_rate = 88200, // 2 x sampling_rate .sample_rate = 88200, // 2 x sampling_rate
.bits_per_sample = I2S_BITS_PER_SAMPLE_32BIT, // 32bit words .bits_per_sample = I2S_BITS_PER_SAMPLE_32BIT, // 32bit words
.channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT, // Right than left .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT, // Right than left
.communication_format = (i2s_comm_format_t)(I2S_COMM_FORMAT_I2S | I2S_COMM_FORMAT_I2S_MSB), .communication_format = (i2s_comm_format_t)(I2S_COMM_FORMAT_STAND_I2S),
.intr_alloc_flags = ESP_INTR_FLAG_LEVEL1, // lowest interrupt priority .intr_alloc_flags = ESP_INTR_FLAG_LEVEL1, // lowest interrupt priority
.dma_buf_count = dma_buf_count, .dma_buf_count = dma_buf_count,
.dma_buf_len = DMA_BUF_SIZE_DEFAULT, // bigger buffers, reduces interrupts .dma_buf_len = DMA_BUF_SIZE_DEFAULT, // bigger buffers, reduces interrupts