The signal from MSP430 PWM pin isn't quite ready to drive a speaker or amplifier. First, we can clean up the signal a bit by running it through a low pass filter
. This clips the sharp edges from the PWM waveform to make it sound a bit more natural.
You can calculate the ideal low pass filter for a given frequency with a calculator like this
. I used an 8000Hz frequency because I eventually plan to play and record about 8000 samples-per-second with the digital voice recorder. Note that this is just a fraction of the 48000 samples-per-second used by CD players and PCs. At 8000Hz my ideal low-pass filter has a 0.01uF capacitor (C1) and a2K ohms resistor (R1).
Finally, it's proper form to block any DC voltage from the signal path using an electrolytic capacitor (POL-C1). The capacitor allows only the AC waveform to pass out of the circuit. A value between 4.7uF and 47uF seems to work fine. I didn't notice a difference among the range of values that I tried for the quality of audio produced. This capacitor is usually not necessary, as most amplifiers have a similar capacitor at the audio input connection.
Generating an audio signal in software
Now that the signal is conditioned, we can connect it to an audio amplifier. A cheap set of powered PC speakers work great.
Test program 1 (test1 in the project archive) creates a 50% 'on' signal with the PWM. This generates a continuous tone from the speakers. See it in this short video clip.