WM8741 in Dual differential mode and 2-wire control mode

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

I would like to use WM8741 in dual differential mode in software control mode and I have a couple of questions how to do this.

Datasheet of WM8741 under "Pin description, software control mode" says:
-> DIFFHW (pin 6): 0 = normal operation, 1 = differential mono mode
-> MODE/LRSEL (pin 24): 0 = hardware mode, 1 = 3-wire software mode and Z = 2-wire software mode
-> CSB/SADDR/I²S (pin 28): 3-wire mode: serial control interface latch, 2-wire mode: device address select

So, I would like to use WM8741 in software mode (2-wire) and dual differential, so I should configure them like this:

-> DIFFHW = 0, so normal mode
-> MODE/LRSEL = Z, so 2-wire mode
-> CSB/SADDR/I²S = 0 at first WM8741 and 1 at second WM8741

To switch the WM8741 into dual differential mode, I've to write 0x05e0 to register M2. Then, write 0x0c30 to register M4 for right channel and 0x0c10 to register M4 for left channel.

Is it correct?

How can I set the input format? I would like to use I²S and 32bit word length.

Thanks and kind regards,
Heinrich
 
I would like to set 32-bit I²S, so I have to write 00001011 (0x0B) into register 5.

Then into register 8:
for LEFT-DAC: 0000110 (0x06)
for RIGHT-DAC: 0001110 (0x0E)

Then into register 7: 01000100 (0x44) for 128fs (24,576MHz Master Clock) and 192kHz.

After that it should be okay or what is your opinion?

It's my owm implementation with VS1063 as decoder, then SRC8421 and after that 2xWM8741. The data is comming from a solid state disc and streamed by LPC1769 into VS1063.

Thanks and kind regards,
Heinrich
 
A couple of things I did when I programmed the WM8741 with Arduino:

use the following addresses for the chip addresses:
0011010 (or 0x1A) I2S switch=0
0011011 (or 0x1B) I2S switch=1
Arduino adds the 8 bit for write or read depending on whether you are writing or reading.

Also the register address are 7 bit so you need to add a 1 (write) to complete the 8 bit address

So you don't add the write bit on the chip address but you need to add the write bit to the register address.

I'll have to read the datasheet to confirm the values...

VS1063? Nice. I have a 1053 from Seeedstudio and is waiting to be used... WM8741 can interface directly to the chip because it has a 16 bit mode
 
Hi,

thank you for the detailed information about WM8741.

I²C addresses are always 7-bit addresses, because the fist bit (bit 0) is the direction, so reading or writing to the device. But, you know this already. :)

Yes, you are correct, it is possible to connect WM8741 and VS1063 directly, but it is "just" 16-bit interface. And, if I design the whole schema by myself, I want to use the best components. Sure, CS8421 is not really necessary, but hey, why not?

Thanks for the codes for WM8741.

Kind regards,
Heinrich
 
Ah, okay, I see.

But this kind of statement is always to take with a pitch of salt, you know. My opinion in this case is "just try it". It is possible to bypass CS8421 by taking a pin low or high, so this should be a problem to check this out.

Than I have the next question, the analog part:
-> on VMIDR and VMIDL pins I'm using 100nF and 10uF capacitors in parallel, so on the both pins. I think, I'll use Nichicon Muse XL caps or can I use something "normal", like Panasonic smd caps in this case?

-> which OpAmps did you use in your board? Wolfson used OPA2227 on his evaluation board. Or I use THT OpAmps in sockels, so I'm able to change them easily.

-> for VS1063 I'm using a fox xpresso oscillator (12,288MHz), then CS8421 has got its own oscillator with 24,576MHz. It is better to route clock from CS8421 (Master Clock Output) to the both WM8741 or should each WM8741 get his own oscillator as near as possible to the chip?

Thanks & kind regards,
Heinrich
 
Last edited:
Yes, experimenting is good :)

I used the WM8741 in the OPUS board without an output stage. Being a voltage out DAC, I used it straight to the balanced input of a Hypex ucd180 amp module.

Regarding the oscillator, I had planned to use a 11.2896 Mhz part for the VS chip in order to get native 44.1KHz output and avoid any kind of resampling in the VS chip. I also though of feeding the same signal as Master clock to the WM8741 and thus eliminate any intermediate clock recovery/generation. (This was just a head exercise, no implementation yet)
 
Just my two cents, its generally better to have everything run off the same clock, or at least directly derived form said clock (div 2/4 etc..). Despite the fact many codecs/DAC's/ADC's/SPDIF chips have on-board PLL's, this is just another source of error and another band of frequencies in your ground return paths. The effect is arguably very small, but easily avoided, plus... less components!
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.