Overclock to 153.6 MHz (instead of 147.6 MHz) for I²S 48 kHz sample rate (#2708)

This commit is contained in:
Markus Gyger 2024-12-21 22:36:57 +07:00 committed by GitHub
parent 4d03edc7d5
commit 7961d2943d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 4 additions and 6 deletions

View file

@ -71,7 +71,7 @@ sample rate on-the-fly.
bool setSysClk(int samplerate) bool setSysClk(int samplerate)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Changes the PICO system clock to optimise for the desired samplerate. Changes the PICO system clock to optimise for the desired samplerate.
The clock changes to 147.6 MHz for samplerates that are a multiple of 8 kHz, and 135.6 MHz for multiples of 11.025 kHz. The clock changes to 153.6 MHz for samplerates that are a multiple of 8 kHz, and 135.6 MHz for multiples of 11.025 kHz.
Note that using ``setSysClk()`` may affect the timing of other sysclk-dependent functions. Note that using ``setSysClk()`` may affect the timing of other sysclk-dependent functions.
Should be called before any I2S functions and any other sysclk dependent initialisations. Should be called before any I2S functions and any other sysclk dependent initialisations.

View file

@ -123,12 +123,10 @@ bool I2S::setFrequency(int newFreq) {
bool I2S::setSysClk(int samplerate) { // optimise sys_clk for desired samplerate bool I2S::setSysClk(int samplerate) { // optimise sys_clk for desired samplerate
if (samplerate % 11025 == 0) { if (samplerate % 11025 == 0) {
set_sys_clock_khz(I2SSYSCLK_44_1, false); // 147.6 unsuccessful - no I2S no USB return set_sys_clock_khz(I2SSYSCLK_44_1, false);
return true;
} }
if (samplerate % 8000 == 0) { if (samplerate % 8000 == 0) {
set_sys_clock_khz(I2SSYSCLK_8, false); return set_sys_clock_khz(I2SSYSCLK_8, false);
return true;
} }
return false; return false;
} }

View file

@ -163,5 +163,5 @@ private:
int _sm, _smMCLK; int _sm, _smMCLK;
static const int I2SSYSCLK_44_1 = 135600; // 44.1, 88.2 kHz sample rates static const int I2SSYSCLK_44_1 = 135600; // 44.1, 88.2 kHz sample rates
static const int I2SSYSCLK_8 = 147600; // 8k, 16, 32, 48, 96, 192 kHz static const int I2SSYSCLK_8 = 153600; // 8k, 16, 32, 48, 96, 192 kHz
}; };