Where to find a 4channel Audio ADC  - Page 1
Forum section: electronics / general

author: Electric Ocean
author_rank: Newbie
timestamp: September 02, 2022, 08:11:26 am
content: Heya,I'm new to this forum, so hello y'all!Recently I started to work on a project where I want to record eight audio channels simultaneously (4 stereo channels) with a teensy 4.1. Since the Teensy has 3 I2C Ports, I'm searching for a ADC (analogue-digital-coverter) that is able to support 44.1khz, 16bit, on four channels with an I2C connection. But so far I haven't found an adc that meets all my requirements.Does anyone know where I can find such an adc?Summary of my requirements:- ADC- 44.1kHz- 16bit- 4 channels- I2C portBest regards,Electric Ocean

author: RoGeorge
author_rank: Super Contributor
timestamp: September 02, 2022, 08:20:57 am
content: Welcome. You may want to consider looking for audio CODEC, too, not only for ADC. For example, first search result for 4 channels CODEC returned this one:https://www.ti.com/lit/ds/symlink/tlv320aic34.pdf, other CODEC chips might be better, or even have 8 or more channels on a single chip. Also, a CODEC has DAC channels, too, volume control, audio routing (analog switches to select between multiple audio sources), etc.Usually the data stream in a CODEC is I2S, which is the proper way to transfer digital audio data.

author: mariush
author_rank: Super Contributor
timestamp: September 02, 2022, 08:39:42 am
content: What's your budget?Like RoGeorge says, look at CODECS ... for example see Digikey's selection here (put filter to show only results with 4 ADC or more) :https://www.digikey.com/short/09hrn9tnFor example AK4619VN is there at $4.3 each and it's 8 kHz to 192 kHz 24 bit 4 ch adc , 4 ch dac with i2c and i2s support :https://www.akm.com/content/dam/documents/products/audio/audio-codec/ak4619vn/ak4619vn-en-datasheet.pdfthere's more expensive things like for example PCM3168A with 6 adc, 8 dac but they're 11$ on digikey :https://www.ti.com/lit/ds/symlink/pcm3168a.pdf

author: hans
author_rank: Super Contributor
timestamp: September 02, 2022, 09:45:54 am
content: I2C or I2S?A codec may have I2C to configure some registers like gain etc. The audio stream will typically go often over I2S, which is a very different protocol.Some micro's may combine I2S with SPI peripherals, as they look similar (a master clock, serial bit clock, serial data, and a left-right channel select which is often mapped to some dedicated I2S master clock output pin, and SPI's SCK, MOSI, and CS, respectively)However some ADCs or DACs don't have I2C at all, e.g. no gain control, mute control, left/right swap (maybe these last 2 via input pins), etc.I2C bus itself is not fast enough to transfer any representative audio formats. Even if you would be happy with 8kHz @ 16-bit stereo, that's 256kbit/s, which is close to maxing out a typical 400kbit/s I2C bus.

author: SiliconWizard
author_rank: Super Contributor
timestamp: September 02, 2022, 07:13:17 pm
content: The OP probably meant I2S. I2C would just be for controlling some ADC parameters.I have a hard time figuring out how they could not find a 4-channel audio ADC. They are literally everywhere. Unless maybe they strictly looked for a 16-bit ADC and nothing else. Yeah, these days 16-bit audio ADCs are becoming less common. Just look for a 24-bit, entry-level one. You don't need to use the 8 extra bits if you don't want to, just discard them.For instance:https://www.ti.com/product/TLV320ADC3140Yeah, it appears way beyond your requirements in terms of specs, but it's cheap, has very good performance, and can absolutely be used at 44.1 kHz, 16-bit (configurable through the control interface, which is I2C btw, in case the OP really meant an *I2C* control interface, but it of course supports I2S for the audio streaming.)

author: mariush
author_rank: Super Contributor
timestamp: September 02, 2022, 09:00:16 pm
content: A bit sideways, but depending on requirements another option could probably using 4 VLSI VS1063 chips, which have built in hardware mp3 and ogg vorbis encoders.They're expensive though, at 22$ each (7$ each if you buy 500) :https://www.tme.eu/en/details/vs1063a-l/drivers-integrated-circuits/vlsi/If you configure them to hardware encode at 128-160 kbps, you could probably use one or two hardware uart or i2c to download chunks of encoded audio and dump to storage.

author: Simon
author_rank: Unknown
timestamp: September 10, 2022, 05:45:15 pm
content: I'm no analogue expert, my small searches for external ADC's turned up 10 bit ADC's that cost more than a full blown microcontroller. is a microcontroller out of the question? For example the SAMC has 2 ADC's capable of 1MS/s, so that is 250kS/s across 4 channels each in 12 bit, this is not fast enough to do the required oversampling for 16 bit which it can do in hardware, so more than one micro?16 bit will be costly and still those last few bits will be unreliable so you will want to average some samples anyway.

author: peter-h
author_rank: Super Contributor
timestamp: September 11, 2022, 07:03:29 am
content: ADC inside micros tend to be incredibly noisy, and you can't do much about it because there is a CPU right next to itA 10 bit ADC is probably 8 bits and 2 bits of noise.It is ok if you can take 100 readings, add them up and divide by 10. That gets you ~ 3 bits of noise improvement - assuming the noise is random. A lot of the time one can do that. But I would think probably not with audio.

author: JPortici
author_rank: Super Contributor
timestamp: September 11, 2022, 07:58:04 am
content: Quote from: Simon on September 10, 2022, 05:45:15 pmaudio codecs are reeeeeeeally cheap, compared to a regular ADC. but they are "audio", i.e.: crap DC performance and just enough bandwidth for audio

author: Simon
author_rank: Unknown
timestamp: September 11, 2022, 08:01:05 am
content: Yes MCU ADC's will have noise from the digital stuff, but as for "audio" uh, 44 kHz per channel and whatever resolution you want with minimum noise, what is the difference for any other ADC?

author: peter-h
author_rank: Super Contributor
timestamp: September 11, 2022, 02:41:28 pm
content: Well, the 32F417 "12 bit" ADC will convert in something like 1us if fed from a low-Z source, so for 50kHz sampling you could take 20 samples and average them. You could configure a DMA+timer to shove the values into a circular buffer with no software involved other than to add up the buffer when you want a reading.I have done a vast amount of hifi design, before valves, gold plated phono leads and gold plated mains plugs caused the bottom to fall out of the market - because the CD with its 16 bit linear sampling objectively utterly destroyed the quest for fidelity. I used to build 2x400W or 1x800W power amps with 0.01% THD at max power (10x2N5239 output stages, LM318 on input)). And pre-amps with passive RIAA equalisation (MAT100 input stage) and noise so low you had to stick your ear inside the cone of a speaker with the 400W amp wired to it, volume on max. And I reckon nobody could tell the difference, in a blind experiment, between you doing the above, and using a fancy audio ADC

author: Simon
author_rank: Unknown
timestamp: September 11, 2022, 04:47:42 pm
content: How accurate is the human ear in the first place?

author: nctnico
author_rank: Super Contributor
timestamp: September 11, 2022, 09:02:08 pm
content: I second the suggestion to use an audio coded. But I doubt the I2S interface is useful; this typically is only stereo. What is needed is a DSP-style serial data transfer interface. On some microcontrollers the SPI interface supports a continous clocked mode with some form of framing. On the codec side you can simply daisy chain the codecs. Many codecs support daisy chaining. The only limit is the maximum clock rate of the SPI peripheral.Forget about using I2C. Way too slow for this purpose.

author: Nominal Animal
author_rank: Super Contributor
timestamp: September 12, 2022, 02:38:36 am
content: Actual analog audio electronics stuff is way outside my experience, but as I've played with various Teensies quite a bit, and lurk and occasionally participate at thePJRC forums, here is my understanding about the issue, with hopefully useful links and references.You can use one or two CS42448 codecs (use the automotive -DQZ versions, as the chips tend to get a bit hot; they're available at e.g. Mouser for under 17€ apiece) with Teensy 4.1 using I2S in TDM mode (i.e. SAI1 and SAI2, in the i.MX RT1062 documentation). Each CS42448 chip provides three stereo inputs and four stereo outputs (6ch in, 8ch out) at 16 bits at 44.1kHz sample rate (per channel) or better, so with two you should be able to get 12ch input (6 stereo inputs) and 16ch output (8 stereo outputs) simultaneously using Teensy Audio Library (which supports TDM). Since Teensy USB is High Speed/480Mbit/s, USB bandwidth is not a problem, either: a single 32-bit 96kHz audio channel is ~ 3 MBit/s, so ~ 30 channels is less than 100 Mbit/s, which Teensy 4.x can do even with USB Serial, so no problem with USB Audio (using isochronous transfers). USB Audio also means that if correctly configured on the Teensy end, the built-in USB audio drivers are used in your OS; it is a separate USB type in Teensyduino.Paul Stoffregen (author of Teensies) createdan example boardfor Teensy 3.5/3.6 in 2017, using a single I2S. He also has aHackaday.io project for dual interleaved CS42448. You do not need to interleave the two CS42448's on Teensy 4.1, though, because it has three I2S buses, two of which can be used for TDM.Essentially, on each CS42448, you connect MCLK to Teensy MCLKn (pin 23 or 33); ADC_SCLK and DAC_SCLK to Teensy BCLKn (pin 21 or 4); ADC_LRCK and DAC_LRCK to Teensy LRCLKn (pin 20 or 3); DAC_SDIN1 to Teensy OUT1A/OUT2 (pin 7 or 2); and ADC_SDOUT1 to Teensy INn (pin 8 or 5). If you set the I2C address bits different on each CS42448, you can connect both to the same I2C port (SCL and SDA on pins 19,18 or 16,17 or 24,25). Note that in this configuration, Teensy does generate both sets of clocks (deriving them from the same master clock), so they should not drift; but they're essentially completely separate I2S devices.(For exact sync, you could set the first I2S as asynchronous (generating the clocks), and the second I2S as asynchronous (using the clocks), connecting the MCLK, SCLK/BCLK, and LRCLK together, ensuring SAI2 uses the clocks generated by SAI1; and both CS42448s use the exact same clocks. But note that this is dangerous, because a software misconfiguration or even configuring SAI1/SAI2 in the wrong order, may cause Teensy to drive the two connected pins to different voltages at the same time, essentially shorting 3.3V to GND, which will burn one or both of those Teensy pins.)Note that the above boards do not include any kind of analog filtering or output amplification. TheCirrus Logic CS42448 datasheet (PDF)section 7.1 suggests analog input filters, and 7.2 output filters. See figures 2 and 3 for the safe analog output region; without any amplification, the load resistance must be at least 3 kOhm.(It is also possible to isolate the CS42448 chips, so that they and the analog filters operate with ground not tied to the Teensy or host computer ground, which helps avoid ground loops (but not between the different audio grounds, i.e. between the inputs and/or outputs). I don't know how useful it would be, but it might make it easier to get a better signal-to-noise ratio and audio frontend circuits, or something like that.)

author: legrady
author_rank: Contributor
timestamp: September 22, 2022, 07:44:04 pm
content: $532.76 Canadian a piece at Mouser, except they, like everyone else, have zero units in stock, so says Octopart.

author: Nominal Animal
author_rank: Super Contributor
timestamp: September 23, 2022, 02:14:05 am
content: Quote from: legrady on September 22, 2022, 07:44:04 pmEh? Mouser.fi saysCS42448-DQZ under 17€ in singles in LQFP-64 package with 874 shipping today, as of 2022-09-23 02:11:00 UTC.(This is the -40° to +105°C variant, which you want, because the chip runs hot. Mouser says they have 84 in stock of the -10°C to +70°C CS42448-CQZ variant for under 14€ in singles, but I would not use that unless you intend to put a heatsink on it and forced airflow.)

author: analityk
author_rank: Regular Contributor
timestamp: October 16, 2022, 10:47:08 am
content: Atmel and some other manufacturers put in uCs something like ssc - serial synchronous controller. With that you can build PCM time slot functionality and you can connect few codes into one system on one ssc source. I had been build this with two NAU8822 and same70q21 chip. Data source was from eth. Internally I have build two circular buffer with dma, so core overhead was small.PCM time slot have one clock signal, strobe/frame select, data in and data out. On start frame one clock fs is driven and next you have up to even 512 or more clock cycles for your data. Look at nau8822 datasheet, there are explained i2s, PCM a, PCM b and PCM time slot timings.