An alternative to the obsolescent CS42448: the PCM3168

Thanks for that. I've been going through your schematics and the 3168a datasheet and it has been very educational.
I have one remaining question: What was the motivation for 12v into the op-amps? Was that to improve the SNR?
If I went with a slightly lower power opamp, like the OPA2134, would I reasonably be able to stick with 5v?
 
No, it was because the NE5532 can only get to within about 2V of its supply rails, and that was the single simplest change I could make! Just a -5V supply to ANA_VMM might do it. I used the NE5532 because it was on the data sheet examples and JLCPCB had it in stock.

A quick glance at the OPA2134 suggests it’s similarly not rail-to-rail. Op-amp selection is tricky…
 
If two PCM3168As were connected to TDM and TDM2 of a Teensy 4.1, will it be able to receive a total of 12 audio inputs?

When using two CS42448, which were connected to TDM and TDM2 of a Teensy 4.1.
TDM was "7:OUT1A, 8:IN1, 18:SDA, 19:SCL, 20:LRCLK1, 21:BCLK1, 23:MCLK1".
TDM2 was "2:OUT2, 3:LRCLK2, 4:BCLK2, 5:IN2, 18:SDA, 19:SCL, 33:MCLK2".
 
Yes, that’s right, you can use both TDM channels at once. Can’t claim to have checked the pin numbers you gave though :) Doesn’t matter whether they’re CS42448 or PCM3168.

There’s also this thread and linked pull request which suggests that it should be possible to squeeze another chip on to the spare SAI1 pins, so you could have 18i24o. I’ve started testing it and unfortunately (a) it’s not working for me and (b) the author hasn’t responded my reports of this, either on that thread or the PR conversation.
 
How to set 96kHz sampling rate on PCM3168?

former CS42448 was set via
<AudioStream.h>
#define AUDIO_SAMPLE_RATE_EXACT 96000.0f

But, PCM3168 doesn't work with above sampling rate. even though same MCLK 24.576MHz.

When I looked at the data sheet, it said that 96kHz should be set to Dual rate mode, but I wasn't sure what that meant exactly. how to connect it with Teensy 4.1 for sampling rate 96kHz?
I wondered if I could pull up MD1 (pin. 44) and MD0 (pin. 45), but that didn't work either.

Could you give me an idea?
 
Hmmm ... I've not tried 96kHz. As you say, the data sheet requires Dual rate mode for 96kHz, which needs an extra DIN and DOUT pin to be used, and will require some fairly deep diving into the TDM hardware drivers to enable those and route the audio data appropriately. It looks as if the PCM3168 can't cope with 8 channels at 96kHz on one data pin, so uses half the bit clock rate on two data pins. There's a high-speed mode, but only for the DACs; and an I²S mode which needs 7 data pins (Teensy has 5); so essentially those modes are useless for us.

This may relate in some way to this thread, but unfortunately @caleb seems to have disappeared since 19th January, leaving a non-working PR (as far as I can tell ... I could easily be wrong!).

I'll put it on my list of stuff to think about, but it's a long list...
 
I've just tested my revision to the TDM library with a PCM3168 at 96kHz, and it seems to be working :)

You need to wire two data pins in each direction (OUT1A and OUT1B out, IN1 and OUT1D in), and use the AudioInputTDMAB and AudioOutputTDMAB objects. My test topology is thus:
1723397259337.png
 
Back
Top