Advice needed on adding external codec

I’m currently trying to add a WM8731 as an additional external codec - the purpose is to create a board for my development kit: Daisy Seed Development Kit - #7 by pauldee. I’m copying the V5 schematic for the Seed:

I’m connecting to the external pinouts of the seed, so where it uses SAI1, I use SAI2, so I assume I replace:

SAI1_SD_A with SAI2_SD_A
SAI1_SD_B with SAI2_SD_B

But then some of the others are more confusing, I assume I replace:

SAI1_FS_A with SAI2_FS

The for the I2C, I assume I can use the I2C available on the pinout and replace:

I2C2_SDA with I2C1_SDA
I2C2_SCL with I2C1_SCL

Then I think I can use the shared ground?

Here is the schematic:

I absolutely welcome anyone marking my homework and pointing out and possible errors I have made copying the schematic!

Hi Paul!

That’s an awesome idea to add an external codec module for your dev kit project!

Referencing the Daisy Patch schematic could be helpful as it has external audio codec (though it’s not the WM8731 in this schematic) connected to the Seed for the adding 2 more audio I/Os

I hope you find this helpful. Keep us posted with any update to your schematic!

Yes, there was a time when I was going to refer to that, but that was before the infamous warehouse fire that destroyed the world’s supply of AK4556 codecs! This is why Electrosmith changed it. They’re still available but they cost about £50! It’s a shame because that implementation looked a lot simpler. It would be really useful if Electrosmith published the Seed v5 scematic.

I was just thinking that schematic could help in figuring out how an additional audio codec like the WM8731 can be connected to the Seed in general. If the two audio codecs are pretty different, then I can send your schematic to the team for a review. Let me know what works, thanks!

I do wonder if we have an updated schematic of the Daisy Patch with WM8731 as the additional audio codec.
I can ask on Monday and get back to you when I hear back. Thank you for the wait!

1 Like

Wow, that would be awesome, thanks. Both for the review and the latest scematic. Regarding the review, there’s the scematic I posted above, but it’s a bit simplified. Would a Kicad file be ok?

I’m wonder, why use WM8731, rather than pcm3060?
Is this just because of not having schematic for Seed Rev 7?

Pretty much that! I’m not really a hardware expert but I can follow a schematic. Have they started using the PCM3060 now then? I’d be interested in seeing that schematic. I have some PCM3060s lying around I could do an alternative codec module.

pcm3060 is used on Seed Rev 7, Seed 2 DFM, and patch Submodule, if I’m not mistaken.

pcm3060 doesn’t need I2C configuration, it can be hardware configured using 3 pins. PCM3060 datasheet has reference designs for analog in and out.

The Rev 7 schematic would be handy, or at least the section relating to pcm3060 and associated analog.
(my guess is that E-S haven’t gotten around to editing the Rev 7 schematic to make it less easily cloned)

The fact that it’s simpler is definitely appealing to me! Yes I hope they release that scematic.

Even without the schematic, it should be easy to breadboard something that works.

On further thought, these are high speed serial lines, and might be a bit sensitive to wire length, connectors, etc.

Hi Paul!

I’m sorry it’s taking long. I wanted to provide you with an update.
I was able to bring this up to the team, and they told me that we should be able to provide a schematic and/or resource on how to connect WM8731 to the Daisy Seed.

I greatly appreciate the wait. I’ll post here again with what you need soon!

No worries, I appreciate your help!

So here it is so far, and mostly successful!

Here is the diagram:

And here is the code for it:

Here are some examples of the output. Here is the code for outputting a tone:

And here is a video of the result:

Someone mentioned about the long wires to the SAI causing a problem. As you can see, as I move the wires, it causes interreference. I wasn’t expecting this kind of interreference with digital signals, but I guess it is the ground side?

Here is the code for just sending a signal received by one codec and sending it to the output of the other:

Here is a video of the internal codec receiving a signal and sending it out of the external one:

This sounds OK.

Here is the external codec receiving the signal and sending out of the internal one. It is much noisier:

So I’m hoping if I do this all on one board with short traces then it will not have the noise issues? Is there anything else I can do to reduce noise issues? Choice of resistors or capacitors? separating analogue and digital ground? moving some components around? As I’ve mentioned before, I’m not an electronic engineer, just someone who can follow a schematic.

1 Like