Using WM8804 with 3-wire I2S (no mclk input)?

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
Hi all,

I'm working on a project where I'd like to convert an i2s output to S/PDIF (via TOSLINK) with the WM8804 transciever chip. Should be fairly straightforward I would think, but my source does not have a master clock output readily available, so I would like to generate the master clock onboard the WM8804 chip.

I believe this is possible, but after digging through the datasheet I don't see anything that specifically addresses using 3-wire i2s input. Anyone familiar with this chip and can help me out? I already have established software control of the chip with an Arduino and it seems to be working well, so I don't need any help on that front.
 
I'm almost certain of me not being the best person to answer the question, having limited experience with the wm8805, identical to mw8804 plus a mux. Yet from the datasheet, wm8805 is a clock slave when used at the receiving end of a digital audio interface. All MCLK, BCLK, and LRCK are a required clock input. wm8805 is not designed to come up with a MCLK from either of the other two clock signals. So, unfortunately, you may have to figure out a MCLK from the i2s source device.
 
Member
Joined 2017
Paid Member
I usually have an FPGA when I use a SPDIF transceiver. It matters little the missing of MCLK because most FPGA has PLL which can make various frequency you need. When an FPGA was not popular in early 90's, I used to use a clock synthesizer like ICS1523 which is still available. But you need hardware modification to have the chip on your PCB. I don't have a software solution to cope with missing MCLK.:eek:
 
Thanks for the feedback. I will definitely look into generating the clock seperately, but it would be great to forgo that option if possible, as I'd like to keep size and cost down for the board I'd like to build. The reason I believe it is possible is from doing a bit of reverse engineering on a WM8804 board made for a raspberry pi (this is the one: HIFI PIFI Sound Card I2S SPDIF Optical Fiber Module WM8804G for Raspberry pi | eBay) which is a clone of the popular HifiBerry Digi+.

The Raspberry Pi supposedly has no mclk output, and sure enough, the mclk input pin on the WM8804 is not connected to any GPIO pin on the header. It seems the chip is generating its own mclk signal with the onboard oscillator, a 27 mHz crystal. If I could just figure out how this is configured, I'd be all set.
 
Last edited:
The reason I believe it is possible is from doing a bit of reverse engineering on a WM8804 board made for a raspberry pi (this is the one: HIFI PIFI Sound Card I2S SPDIF Optical Fiber Module WM8804G for Raspberry pi | eBay) which is a clone of the popular HifiBerry Digi+.

The Raspberry Pi supposedly has no mclk output, and sure enough, the mclk input pin on the WM8804 is not connected to any GPIO pin on the header. It seems the chip is generating its own mclk signal with the onboard oscillator, a 27 mHz crystal. If I could just figure out how this is configured, I'd be all set.

I've been trying to do the same thing, and have been playing with one of these boards as well. I've realised the WM8804 on the board is running in master mode, i.e. supplying LRCLK and BCLK to the Pi (and generating MCLK, not that it goes anywhere). So that didn't really help much :(
I guess when running in slave mode, there isn't a way around needing to separately come up with MCLK if it's not available from the source.
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.