24 bit audio boards

An update since it's been about a month since I've looked at any of this stuff.

I looked back at some of the single-ended vs differential IO discussion, and I think that I'm going to setup a second version of the CS4272 board that uses the same input and output buffer setup as the eval board. I had found this opamp earlier before I had decided to go with the fully differential amps. It was the best audio spec'd amp that I could find that would work with a single +5V rail.

I should be able to get the schematic set up for this new board within the next few days, then I'll start laying everything out. The layout may take a little while depending on how much free time I can scrounge up to work on this stuff and if I run into any difficulties getting everything routed.
 
Glad to hear you're looking at this again. I'd really like to build one of your boards and use it to test/debug 24/32 bit versions of the I2S objects.

Early in this thread, you mentioned choosing the CS4272 because it's hobbyist friendly to solder. I just looked at the datasheet and I could only find a 0.65 mm pitch package. Is that what you intended?
 
I'm glad you're interested, now I just hope that I can get the layout done rather quickly :)

Regarding the pin pitch, I did see that it was only 0.65mm, but all the other fairly high performance ICs that I looked at had ground pads underneath. I know that the tight pitch will likely put some people off, but I'd always rather have visible pins for hand soldering than a hidden ground pad.
 
Would it be possible to put a hole in the board to allow the ground pad to be hand soldered from the back side of the board?
 
@WMXZ,
I'm working on the layout now. I've placed most of the parts so far, and will start routing pretty soon. I've been busy catching up at work since I got back from vacation, so things haven't been proceeding as quickly as I would have liked, but it's definitely still moving.

@pictographer,
That's a really interesting idea. At this stage, I don't want to go back to looking at different components, but it's definitely something to keep in mind for the next one.
 
I keep seeing this thread linked from other threads, so here's a quick update:

I'm still working on the layout, but I hope to have it done pretty soon, and maybe off to fab in less than a week.

Here's what it's looking like so far:
Audio_board_so_far.png
 
WMXZ, I hadn't even thought of ultrasonic applications, and it looks like you are correct wrt to the limited bandwidth of the codec. It looks like the DAC bandwidth continues to extend with FS, but the ADC appears to be limited to ~45kHz, although the plots in the CS4272 datasheet appendix show that the quad speed (192kHz) filters only rolloff around 10dB at 0.5Fs, so you could feasibly use it up to pretty high frequencies without too much degradation. If you wanted really flat analog input and output >100kHz, you'd probably start needing separate ADC/DAC ICs that aren't purpose built for audio bands.

Fine with me. At that time I only wanted to put attention to the fact that while 96 kHz sampling gives 48 kHz bandwidth, 192 kHz does NOT give 96 kHz bandwidth but only 48kHz (or so). I had this 'discovered' some 10 years ago, when I was confronted with a Cirrus ADC. There is also the problem of bit-noise, that some ADCs have in the higher band to give lower nose in the audio-band of interest.

At the moment I have a 6-chan CS5366 (ADC only) in prototype production for frequencies up to say 60 kHz, but would be interested in a two-channel CS4272 board as it gives me also DAC, so I look forward for your board.

For 100kHz+ applications I have some AD7982 (18 bit 1MSPS SAR) boards, with all the anti-aliasing circuitry.
All my boards are dedicated acquisition frontends, and not general purpose audio cards, so I'm not struggling with isolation, differential input/output etc., but analog design challenges are the same.
 
I can see how that would be annoying if you were used to normal ADCs which usually have analog BW up to nyquist, or greater. Most of the converters we use here at work have really wide analog BW so that you can use them in the second or third nyquist zones, and you have to do all the hard work to filter, etc, for your requirements.

These delta sigmas are great for low frequencies, as long as you don't mind giving up the BW :)
 
Thanks for catching that, Paul. I hadn't thought of that at all. I'll probably turn around the Teensy so that the USB cable is at the edge of the board.
 
Really looking forward to this project, but I do have one question, and maybe it's obvious, but does it send/receive digital audio signals over the Teensy USB, or will it be similar to the current audio board where it uses an SD card? IE, would I be able to connect this to my computer and use it as a high quality external DAC/ADC to send audio to my speakers, while receiving audio from a microphone? I have been looking for a device like this for a long time, but all the high end audio equipment you can buy either doesn't have the ADC functionality, or it costs upwards of $500 on the low end, so a DIY device would be amazing.
 
Really looking forward to this project, but I do have one question, and maybe it's obvious, but does it send/receive digital audio signals over the Teensy USB, or will it be similar to the current audio board where it uses an SD card? IE, would I be able to connect this to my computer and use it as a high quality external DAC/ADC to send audio to my speakers, while receiving audio from a microphone? I have been looking for a device like this for a long time, but all the high end audio equipment you can buy either doesn't have the ADC functionality, or it costs upwards of $500 on the low end, so a DIY device would be amazing.

I will let whollender give the authorative answer, but my understanding of the codec is that it gives a high quality audio card for the teensy. Send/receive are async and similar to the sgtl5000 of the pjrc audio card as they use I2S, but potentially better performing. Also cirrus chips are considered very good choice for this type of audio boards. (we will see the price tag whollender can achieve).
 
Eventually it may be able to do all that. But such a day is certainly in the future, since this board doesn't even exist yet, and when it is physically made, the I2S objects will need to be improved to support it, and even after that, Teensyduino would still need the USB audio feature... which is also planned but far from existing in a well tested form.

Edit: While it'll certainly be possible to build a board like this for well under $500, if you're able to solder the parts, there's no way this board will ever be in the same low-cost class as the $14 board we have now. There are many parts, including those isolator chips and high-end opamps, plus an external power supply for the audio side. If someone did decide to manufacture these, in small batches, odds are strong it'd end up with a fairly expensive retail price.
 
Last edited:
I didn't even think about USB audio needing to be supported in Teensyduino, I figured the answer would be obvious. That said, that it is even planned is great, even if it is in the distant future. Like many here, these projects are just for fun for me. My current setup works fine, it just uses separate devices for the DAC and ADC side. The ADC is garbage from China, but so is my current microphone, so it works for me.

Building a somewhat elegant, high quality all-in-one solution myself has basically just been a pipe dream, so that it might become a reality, even if it is far off, is exciting for me.

I would also be willing to help out with the testing of the USB audio features when the time comes, as well as any testing for this board. I am not great with coding, but am not completely terrible either, and I am willing and able to learn. Hardware side I am reasonably proficient at, though I learn more every day. So figured I would throw the offer out there, if I can be of use, great, if not, I'll leave it to the pros.

As to cost, I understand it will be nowhere near the $14 price point of the current board, but I wouldn't expect it to be anywhere near $500 either, likely somewhere in the middle. Hand soldering is also a non issue for me, I hand solder TQFP, QFN, and similar packages with 0.5mm and smaller pitch at work all the time, so you might say I am used to it (although QFN on a board without soldermask is quite the challenge still). About the only stuff I haven't personally done are BGA packages because I don't have the tools.

Knowing what I do now (overlooking the necessary USB audio support in Teensyduino), I am realizing the current 16 bit audio board could also likely support USB audio streaming in the future. I might have to pick one up to play with.

Big thanks to Paul, Whollender and everyone else who donates their time and effort for all of these wonderful products.
 
Regarding price, it does look like the unit cost for a bare board plus a kit of parts will be in the 100-150 dollar price range for a small run type situation (OSH park for the boards and retail for parts).

Ordering in bulk would certainly bring the cost down, but then there has to be enough demand to justify that sort of thing. And if there is that much demand, then you start thinking about getting the boards assembled, the assembly costs, testing for assembled units, etc.

Right now, I just want to get a couple boards built and tested and see if the design actually has the kind of performance that I'm expecting to see. Once I'm satisfied that everything works the way I want, I'm planning on open sourcing the design. If there's a lot of interest, I might look into selling bare or fully assembled boards, but that's a big can of worms.
 
Knowing what I do now (overlooking the necessary USB audio support in Teensyduino), I am realizing the current 16 bit audio board could also likely support USB audio streaming in the future.

Yes, these are separate projects, I2S support for Whollender's board and USB audio.

If you're not already familiar with the audio library, please take a look, especially at the GUI web design tool.

This system is much more than just passing USB to I2S. It's meant to allow building all sorts of audio processing, by connecting virtual audio components together. Of course, you could just do something as simple as a single USB and I2S object with a pair of connections between them. But so much more is possible. A third and fourth and even fifth input or output can be used simultaneously, and lots of things like mixers, effects, filters, can be connected between them in almost any way.

So each of these projects basically will add another item or two onto the left-side toolbar in the design tool.
 
I finished double checking everything last night and submitted the board to oshpark, so hopefully I'll have a proto board in hand by mid-march.
 
Any chance to see how it turned out? Or a share on OSH Park?

Really, I can understand how you'd want to keep it under wraps until it's tested. That's what I normally do.

But if you're willing so show, I'm curious to see it. ;)
 
I don't really want to share it yet on oshpark, but here are the images that they generate automatically:

Top:
back.jpg

Bottom:
front.jpg

The two inner layers aren't that interesting anyway, they're just the ground plane (continuous except for isolated area under the Teensy and cutout underneath the crystal) and the "power" plane (not continuous, with a few signals to keep it interesting).

I just got all the parts on Friday to double check the footprints, and a bunch of new soldering equipment today, so I'm eager to actually start work on it, and waiting the 2-3 weeks for the boards to get back is going to be pretty difficult :)
 
Looks like no solder mask between the fine pitch SMT pins. That's going to make soldering those more... interesting.

OSH Park solder mask cuts only need to be about 5 mil oversized from the pads. I know that might seem like not allowing much tolerance, but OSH Park uses very good USA fabs that hold tight tolerances. If you make more, I'd recommend adjusting the settings so you get a thin strip of solder mask between those pins. I've made many boards with 0.5 mm pitch pads where OSH Park was very capable of this.
 
It's good to know that OSH park can handle those kinds of spacings. I've used advanced circuits in the past, so I used their freedfm.com check as a sanity check, but it sounds like they can't handle the same solder mask tolerances.

I'm also relatively new to KiCad, so I may have inadvertently doubled the actual soldermask relief from the freedfm recommendations (6 mils instead of 3).

Edit: Apparently I did misinterpret KiCAD's soldermask clearance setting (freedfm passed with the clearance halved from my previous setting). Hopefully OSH park will let me update the gerbers (the panel is scheduled for the 28th).

Thanks Paul!
 
Last edited:
I have worked on something that might be of interest to those developing 24/32bit I2S or the topic of sending audio over USB:
https://github.com/nodae/teensy_i2s_experimental

This is a forked variant of the library created by hpyle in 2013.
In short, I developed experimental support for the INMP441 microphone, for which I2S RX sampling at 32bit / sample is necessary.
As you are aware, the sophisticated I2S library by Paul is not intended to support such hardware, as the DSP works in 16bit samples only.

To make it possible to capture and analyze more than a few milliseconds of that sound data, I used the fast USB serial to push the captured data over to a PC - live, without special buffers, at 48000Hz stereo, 24bit (32bit also seemed to work fine).
The impressive part of this: it is strictly done with interrupts and Serial.write(), without the use of DMA, which I avoided because some remarks in the code suggested that it was somewhat broken for RX (which I haven't verified).

As noted in the repository readme: this is strictly an experimental fork and several library features (including DMA) were deliberately removed in the process. Maybe this proof-of-concept code will be of use to somebody.
It at least proves that the teensy 3.1 is up to the task to handle serious amounts of 32bit I2S data without breaking into too much of a sweat.

The "stereo INMP441 out via USB" code can be found here:
https://github.com/nodae/teensy_i2s...ster/examples/INMP441_noDMA/INMP441_noDMA.ino
 
Last edited:
hex, did you see a lot of noise in the mic data with the USB serial going the whole time? I've noticed that I get much better performance out of the current audio board if the USB serial isn't active during the recording, but I'm only working with very short recorded samples (< 1/20th of a second) so I can store everything until I'm done with the capture.

I'd guess that the digital microphones are much better at rejecting power supply noise than the cheap spark fun electret mic breakout board that I have (even with extra filtering on the supplies.

On another note, I received a set of boards back from OSH Park, and am starting to assemble it. The 0.635mm pitch on the smt parts is a good challenge for my rusty SMT soldering skills (especially without the flux that I forgot to order). Hopefully the rest of the fine pitch ICs will go better once the flux gets here.

The switching regulator seems to be working ok in spite of my ugly soldering job!

IMAG1196.jpgIMAG1197.jpgIMAG1200.jpg
 
Back
Top