Author Topic: old PCM1725 DAC with Arduino UNO?  (Read 3258 times)

0 Members and 1 Guest are viewing this topic.

Offline dentakuTopic starter

  • Frequent Contributor
  • **
  • Posts: 881
  • Country: ca
old PCM1725 DAC with Arduino UNO?
« on: September 22, 2015, 10:53:03 pm »
Just as an experiment I soldered an old SOIC BB PCM1725 16bit DAC to an adapter because I've never soldered anything like that before and it turned out quite well.
I was wondering, is this DAC useful to someone with a simple Arduino UNO.
It doesn't seem like anyone is using anything slower than a Teensy or a DUE with PCM I2S DACs like this.
I'm not finding much about what it's like to use this kind of DAC with any kind of Arduino in fact.

I'm not building anything in particular, just curious about how it works.
Would this 16bit DAC be usable with an UNO maybe at slower speeds than normal for outputting simple waveforms with the samples stored in an array?
I just did this experiment with a 12bit DAC over SPI and it works.
It seems to support both I2S and what the TI datasheet calls “Normal” Data Input Timing which is right justified data opposed to left justified for I2S.

Page #6 of the datasheet shows it quite well
http://www.ti.com/lit/ds/sbas067/sbas067.pdf
and it certainly looks simpler than something like the SPI MCP4922 12bit DAC I've ben messing with lately.
« Last Edit: September 22, 2015, 11:04:33 pm by dentaku »
 

Offline obiwanjacobi

  • Frequent Contributor
  • **
  • Posts: 988
  • Country: nl
  • What's this yippee-yayoh pin you talk about!?
    • Marctronix Blog
Re: old PCM1725 DAC with Arduino UNO?
« Reply #1 on: September 23, 2015, 08:02:37 am »
I am sure you can get it to work. The only problem I see is in the amount of memory you may need to feed a 96kHz bit stream - if you want to play 'samples'. If you could generate the digital stream fast enough (simple sine (table) and block wave forms?) it will certainly fly. Of-course you can always feed it at slower than 96kHz rates...

[2c]
Arduino Template Library | Zalt Z80 Computer
Wrong code should not compile!
 

Offline dentakuTopic starter

  • Frequent Contributor
  • **
  • Posts: 881
  • Country: ca
Re: old PCM1725 DAC with Arduino UNO?
« Reply #2 on: September 23, 2015, 11:01:47 pm »
I am sure you can get it to work. The only problem I see is in the amount of memory you may need to feed a 96kHz bit stream - if you want to play 'samples'. If you could generate the digital stream fast enough (simple sine (table) and block wave forms?) it will certainly fly. Of-course you can always feed it at slower than 96kHz rates...

[2c]

Yup, I'm not trying to play back samples, just single cycles of a waveform over and over.
I've searched around and I doesn't look like anyone has any instructions of using I2S with a regular Arduino.

I guess I'll just have to experiment a bit.
 

Offline obiwanjacobi

  • Frequent Contributor
  • **
  • Posts: 988
  • Country: nl
  • What's this yippee-yayoh pin you talk about!?
    • Marctronix Blog
Re: old PCM1725 DAC with Arduino UNO?
« Reply #3 on: September 24, 2015, 04:04:48 am »
Go to bed with the datasheet.  :o

I mean get to know it intimately - spent time with it. That always helps for me. Once you really understand how that chip works, interfacing to it should be fairly easy.

Good luck!
Arduino Template Library | Zalt Z80 Computer
Wrong code should not compile!
 

Offline dentakuTopic starter

  • Frequent Contributor
  • **
  • Posts: 881
  • Country: ca
Re: old PCM1725 DAC with Arduino UNO?
« Reply #4 on: September 25, 2015, 06:12:45 pm »
Go to bed with the datasheet.  :o

I mean get to know it intimately - spent time with it. That always helps for me. Once you really understand how that chip works, interfacing to it should be fairly easy.

Good luck!

The funny thing about this old DAC is that the “Normal” Data Input Timing diagram on page 6 looks so simple compared to some SPI devices I've been using lately :)

What I'm wondering about this DAC is that obviously its intended purpose is audio using either what they call "normal" or I2S, where getting the timing right is important (I'm assuming the clock frequency has to be right to match the sampled data you're giving it) but can a DAC like this be used for other things other than audio? I don't care about the speed at the moment, it's just an experiment

Can I use this DAC quite slowly and inefficiently using nothing but setting the LRCIN pin high, then two shiftOut commands to send 16 bits (such as two of these to equal 16 bits... shiftOut(dataPin, bckPin, MSBFIRST, B10010101); ) then set LRCIN low and have shiftOut generate the clock signal like it always does? or are these much trickier to use than the diagrams on the datasheet make it seem to be?

I'm still not sure what kind of data it expects. Is "normal" just any value between 0 and 65536 the same way an 8bit SPI digipot expects a value between 0 and 255?
 

Offline singapol

  • Frequent Contributor
  • **
  • Posts: 420
  • Country: sg
Re: old PCM1725 DAC with Arduino UNO?
« Reply #5 on: September 26, 2015, 04:36:58 am »
Go to bed with the datasheet.  :o

I mean get to know it intimately - spent time with it. That always helps for me. Once you really understand how that chip works, interfacing to it should be fairly easy.

Good luck!

The funny thing about this old DAC is that the “Normal” Data Input Timing diagram on page 6 looks so simple compared to some SPI devices I've been using lately :)

What I'm wondering about this DAC is that obviously its intended purpose is audio using either what they call "normal" or I2S, where getting the timing right is important (I'm assuming the clock frequency has to be right to match the sampled data you're giving it) but can a DAC like this be used for other things other than audio? I don't care about the speed at the moment, it's just an experiment

Can I use this DAC quite slowly and inefficiently using nothing but setting the LRCIN pin high, then two shiftOut commands to send 16 bits (such as two of these to equal 16 bits... shiftOut(dataPin, bckPin, MSBFIRST, B10010101); ) then set LRCIN low and have shiftOut generate the clock signal like it always does? or are these much trickier to use than the diagrams on the datasheet make it seem to be?

I'm still not sure what kind of data it expects. Is "normal" just any value between 0 and 65536 the same way an 8bit SPI digipot expects a value between 0 and 255?

PCM1725 are for audio only in the sense that it takes 2 channel audio data stream based on the Sony/Philips CD Red book standard. Yes you could use UNO to generate digital data that pcm 1725 can accept using the data clock specifications, normally it would take signals from the laser head/lens processor
ic. But that's for your learning...if pcm1725 is a stanalone use like external DAC it would need a digital reciever like CS8416 ( it's ancient by now) to do what you would do with a UNO. :) which is a lot more efficient since you want to minimise jitter since it's all hardware vs software. As for "normal" I think it means the Sony format of right justified vs Philips left justified I2S from the perspective of MSB and LSB data.

http://www.cirrus.com/en/products/cs8416.html

http://www.soundonsound.com/sos/jan98/articles/cdformats.htm



 

Offline dentakuTopic starter

  • Frequent Contributor
  • **
  • Posts: 881
  • Country: ca
Re: old PCM1725 DAC with Arduino UNO?
« Reply #6 on: September 26, 2015, 01:27:04 pm »
Go to bed with the datasheet.  :o

I mean get to know it intimately - spent time with it. That always helps for me. Once you really understand how that chip works, interfacing to it should be fairly easy.

Good luck!

The funny thing about this old DAC is that the “Normal” Data Input Timing diagram on page 6 looks so simple compared to some SPI devices I've been using lately :)

What I'm wondering about this DAC is that obviously its intended purpose is audio using either what they call "normal" or I2S, where getting the timing right is important (I'm assuming the clock frequency has to be right to match the sampled data you're giving it) but can a DAC like this be used for other things other than audio? I don't care about the speed at the moment, it's just an experiment

Can I use this DAC quite slowly and inefficiently using nothing but setting the LRCIN pin high, then two shiftOut commands to send 16 bits (such as two of these to equal 16 bits... shiftOut(dataPin, bckPin, MSBFIRST, B10010101); ) then set LRCIN low and have shiftOut generate the clock signal like it always does? or are these much trickier to use than the diagrams on the datasheet make it seem to be?

I'm still not sure what kind of data it expects. Is "normal" just any value between 0 and 65536 the same way an 8bit SPI digipot expects a value between 0 and 255?

PCM1725 are for audio only in the sense that it takes 2 channel audio data stream based on the Sony/Philips CD Red book standard. Yes you could use UNO to generate digital data that pcm 1725 can accept using the data clock specifications, normally it would take signals from the laser head/lens processor
ic. But that's for your learning...if pcm1725 is a stanalone use like external DAC it would need a digital reciever like CS8416 ( it's ancient by now) to do what you would do with a UNO. :) which is a lot more efficient since you want to minimise jitter since it's all hardware vs software. As for "normal" I think it means the Sony format of right justified vs Philips left justified I2S from the perspective of MSB and LSB data.

http://www.cirrus.com/en/products/cs8416.html

http://www.soundonsound.com/sos/jan98/articles/cdformats.htm

OK, so it pretty much useless for anything but audio.

I'll just stick with regular SPI DACs and digipots for now.
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf