Yahoo Groups archive

Lpc2000

Index last updated: 2026-04-28 23:31 UTC

Message

Re: [lpc2100] Audio DAC

2004-02-11 by Alaric B Snell

Robert Buadu wrote:

> One can do away with interrupts and code counting the cycle time of the 
> instructions. With this you will more or less have a dedicated parallell 
> to I2S converter. One probably can't do very much more with the processor.
> 
> A few audio DAC's have a block mode, which does not need a precise 
> clock. This allows you to bit-bang the interface. In this case it is 
> quite feasible. You only need an interrupt every sample, that is every 
> 1280 cycles. You then send out a stream of data with the minimum allowed 
> clock cycle for block mode. Now, I've not actually tried this so it 
> might not work. There was very little info about this mode in the 
> datasheet I was reading.

I'm looking at the MAS3587F MP3 codec. You control it with I2C, then 
feed data in and out via an 8-bit parallel interface with 5 control 
bits. I'm thinking that would be quite easy; MP3 data rates are in the 
realms of 128KBit/sec (16KBytes/sec). I can manage to output a byte via 
GPIO every 16,000ths of a second, no problems :-)

There's also the STA013 which, at a pinch, can apparently be fed its MP3 
stream via SPI, but that's a decoder only. Which is probably fine for 
you. Unlike the MAS3587F, though, it generates a serial audio signal 
which needs to be fed into a DAC.

http://www.open-research.org.uk/ARMuC/index.cgi?STA013

Of course, this is no use to you if your source data just inexorably is 
in uncompressed form... If so, have you considered just combining a RAM 
or ROM or whatever your original data source is with the DAC via some 
glue logic in a PLD on its own clock? Perhaps you could make an audio 
buffer device with some RAM, that exposed an SPI interface to the 
LPC21xx for loading up in big chunks?

> 
> /RB
> 

ABS

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.