Hello! This is a repo documenting my experimentations with making a WM8758 breakout board.
A friend of mine had a few dead iPod classic 5Gs, and we took out the DAC chip from their mainboards, the venerable WM8758. I really enjoyed the sound of the iPod classic 5G, and undertook this project to capture that sound.
Design and fabricate a breakout board that takes in audio data via the I2S protocol, and outputs audio. Mic functionality is unnecessary.
Here is the recommended external components by Cirrus Logic [1], page 87
Since mic functionality is not required, Pins 1, 2, 4 and 5 can be left floating. As a consequence, the microphone input stage can be fully omitted.
GPIO 2 and 3 are unneeded, hence can also be left floating. (Page 70 of [1]. Jack detection is not required.)
Pins 21, 22, 23,25 were left floating (I only used CH 1 of the audio output)
Pin 32 can was left floating. (pin 32 is MICBIAS, and unneeded, as mic input was unused)
L1 and L2 are optional; I omitted them.
Pin 20 was left floating. (LINE_COM unused, only HP_COM used)
Everything else was required.
From [1], page 52, the recommended headphone output configuration for common mode rejection of ground noise for CH1 is as belows: If you want, C1 and C2 can be increased, if you want a lower frequency HPF.
MCLK requires a 12.288MHz clock signal. (If you don't have that, you can always program the PLL in the chip) The easiest way to get a 12.288MHz signal is to use a crystal oscillator. I got a 3.3V HCMOS oscillator: the ASFL1-12.288MHZ-EC-T from Abracon. [2] A 0.01uF decoupling capacitor was added for the crystal oscillator.
Quick note: 4.7uF decoupling caps were recommended, but I also found that 1uF caps are also acceptable.
Note: Pinout naming for 'SPI' is slightly incorrect. It should be 'I2C/SPI' as the WM8758 also accepts I2C as a control interface (with MODE pin grounded)
Here is another more compact PCB, meant to be used as a raspberry pi pico HAT.
Pages 78 to 79 of [1] has the entire register map of the WM8758. I won't elaborate on how to program it; if you would like more info on the programming, feel free to contact me.
The WM8758 board was tested on a raspberry pi pico; You can contact me if you want the files.
[1] Cirrus Logic, “Stereo CODEC with Headphone Driver and Line Out” WM8758B datasheet, Dec. 2011 [Revised Jan. 2012].
[2] Abracon LLC, “3.3V HCMOS / TTL COMPATIBLE SMD CRYSTAL CLOCK OSCILLATOR” ASFL-1 datasheet, Apr. 2011.