Forums

Sound generator IC

Started by Drew August 1, 2003
Is there such a thing as a simple sound generator IC with an SPI or I2C interface?
In the days before microcontrollers these were pretty common, but I guess
they're dinosaurs now.

Heres what I need to do:

1. Be able to generate a continous tone while varying the frequency and
amplitude under software (BX24) control.

2. The tone has to be generated without interruption as the BX24 runs 3
concurrent tasks which include serial I/O, A/D measurement and timed I/O.
Becuase of this requirement, I ruled out the use of the built-in sound generating
functions of the BX24.

Here's how I'm doing it now:

1. I have a simple 555 timer oscillator driving the (+) side of a small 8-ohm
speaker through a low pass filter (series capacitor).

2. The variable resistance that varies the oscilation freq of the 555 is a
Microchip MCP42050 digital potentiometer chip. By writing to the 8 bit registers
I can set 256 different frequencies. This is connected to the BX24 via 3-wire
SPI. I have to shift-in 16-bits every time I want to change the frequency (8
control bits and 8 register bits).

3. I control the volume by using an Allegro UCN5841A 8-bit serial
latch/transistor driver. The 8 output transisitors ground the (-) side of the
speakers via a simple resistance network. Depending on the configuration of the
output latches, the current through the speaker is limited and volume control is
attained. The '5841A also is controlled by SPI, although it can be cascaded from
the '42050, I am using discrete I/O lines instead.

4. I can stop the oscillator by either pulling the /SHDN line on the '42050 low,
which opens the timing resistance circuit or pulling the 555's /RESET line low.

I'm not really satisfied with the circuit. It works fine, but requires 3 ICs and a lot
of passive components to do what a common LSI chip used to be able to do
10-years ago. I'm looking for suggestions for an alternative. My goals are to
lower circuit complexity and (hopefully) also reduce component costs.

Thanks!