This commit is contained in:
ChuckMash 2024-04-17 10:22:33 -07:00 committed by GitHub
commit 4b55d5fa10
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 15 additions and 0 deletions

View File

@ -33,6 +33,7 @@ AudioOutputI2S::AudioOutputI2S(int port, int output_mode, int dma_buf_count, int
{
this->portNo = port;
this->i2sOn = false;
this->i2sRateSet = false;
this->dma_buf_count = dma_buf_count;
if (output_mode != EXTERNAL_I2S && output_mode != INTERNAL_DAC && output_mode != INTERNAL_PDM) {
output_mode = EXTERNAL_I2S;
@ -56,6 +57,7 @@ AudioOutputI2S::AudioOutputI2S(int port, int output_mode, int dma_buf_count, int
#elif defined(ARDUINO_ARCH_RP2040)
AudioOutputI2S::AudioOutputI2S(long sampleRate, pin_size_t sck, pin_size_t data) {
i2sOn = false;
i2sRateSet = false;
mono = false;
bps = 16;
channels = 2;
@ -129,7 +131,13 @@ bool AudioOutputI2S::SetPinout(int bclk, int wclk, int dout, int mclk)
bool AudioOutputI2S::SetRate(int hz)
{
// TODO - have a list of allowable rates from constructor, check them
if(this->hertz == hz && this->i2sRateSet){ // hz already set to this
return true;
}
this->hertz = hz;
if (i2sOn)
{
#ifdef ESP32
@ -140,6 +148,10 @@ bool AudioOutputI2S::SetRate(int hz)
i2s.setFrequency(hz);
#endif
}
if(!this->i2sRateSet){
this->i2sRateSet = true;
}
return true;
}
@ -401,5 +413,6 @@ bool AudioOutputI2S::stop()
i2s.end();
#endif
i2sOn = false;
i2sRateSet = false;
return true;
}

View File

@ -62,10 +62,12 @@ class AudioOutputI2S : public AudioOutput
bool mono;
int lsb_justified;
bool i2sOn;
bool i2sRateSet;
int dma_buf_count;
int use_apll;
bool use_mclk;
bool swap_clocks;
// We can restore the old values and free up these pins when in NoDAC mode
uint32_t orig_bck;
uint32_t orig_ws;