Page 1 of 1

Audio PLL resolution (APLL)

Posted: Thu Mar 07, 2019 3:31 pm
by jerome
Hi
My project consists of recording audio from an external ADC to a wave file stored on an SD Card.
I allow multiple sampling frequencies among 44.1Khz, 48k and 96k.
The external codec is configured in SLAVE mode, so the ESP32 provides MCLK, Bit clock and word clocks.
I use APLL in order to achieve good accuracy, but the result is quite bad :

16Bits 44.1KHz
I2S: APLL: Req RATE: 44100, real rate: 43945.238, BITS: 16, CLKM: 1, BCK_M: 8, MCLK: 11249981.000, SCLK: 1406247.625000, diva: 1, divb: 0
-> Acceptable


16Bits 48KHz
I2S: APLL: Req RATE: 48000, real rate: 47999.961, BITS: 16, CLKM: 1, BCK_M: 8, MCLK: 12287990.000, SCLK: 1535998.750000, diva: 1, divb: 0
-> Ok


16Bits 96KHz
APLL: Req RATE: 96000, real rate: 87890.477, BITS: 16, CLKM: 1, BCK_M: 8, MCLK: 22499962.000, SCLK: 2812495.250000, diva: 1, divb: 0
-> NOT Acceptable


As you can see above, 16Bits 96KHz accuracy is very bad, thus reading the wave file (with header 24 bits 96 K) at normal speed results in a pitch issue.
I'd like to avoid adding a crystal to the external codec and configure it in MASTER mode to save hardware cost.

Any help would be greatly appreciated.
Thanks