SPMA084 December 2021 TM4C1230C3PM , TM4C1230C3PM , TM4C1230D5PM , TM4C1230D5PM , TM4C1230E6PM , TM4C1230E6PM , TM4C1230H6PM , TM4C1230H6PM , TM4C1231C3PM , TM4C1231C3PM , TM4C1231D5PM , TM4C1231D5PM , TM4C1231D5PZ , TM4C1231D5PZ , TM4C1231E6PM , TM4C1231E6PM , TM4C1231E6PZ , TM4C1231E6PZ , TM4C1231H6PGE , TM4C1231H6PGE , TM4C1231H6PM , TM4C1231H6PM , TM4C1231H6PZ , TM4C1231H6PZ , TM4C1232C3PM , TM4C1232C3PM , TM4C1232D5PM , TM4C1232D5PM , TM4C1232E6PM , TM4C1232E6PM , TM4C1232H6PM , TM4C1232H6PM , TM4C1233C3PM , TM4C1233C3PM , TM4C1233D5PM , TM4C1233D5PM , TM4C1233D5PZ , TM4C1233D5PZ , TM4C1233E6PM , TM4C1233E6PM , TM4C1233E6PZ , TM4C1233E6PZ , TM4C1233H6PGE , TM4C1233H6PGE , TM4C1233H6PM , TM4C1233H6PM , TM4C1233H6PZ , TM4C1233H6PZ , TM4C1236D5PM , TM4C1236D5PM , TM4C1236E6PM , TM4C1236E6PM , TM4C1236H6PM , TM4C1236H6PM , TM4C1237D5PM , TM4C1237D5PM , TM4C1237D5PZ , TM4C1237D5PZ , TM4C1237E6PM , TM4C1237E6PM , TM4C1237E6PZ , TM4C1237E6PZ , TM4C1237H6PGE , TM4C1237H6PGE , TM4C1237H6PM , TM4C1237H6PM , TM4C1237H6PZ , TM4C1237H6PZ , TM4C123AE6PM , TM4C123AE6PM , TM4C123AH6PM , TM4C123AH6PM , TM4C123BE6PM , TM4C123BE6PM , TM4C123BE6PZ , TM4C123BE6PZ , TM4C123BH6PGE , TM4C123BH6PGE , TM4C123BH6PM , TM4C123BH6PM , TM4C123BH6PZ , TM4C123BH6PZ , TM4C123BH6ZRB , TM4C123BH6ZRB , TM4C123FE6PM , TM4C123FE6PM , TM4C123FH6PM , TM4C123FH6PM , TM4C123GE6PM , TM4C123GE6PM , TM4C123GE6PZ , TM4C123GE6PZ , TM4C123GH6PGE , TM4C123GH6PGE , TM4C123GH6PM , TM4C123GH6PM , TM4C123GH6PZ , TM4C123GH6PZ , TM4C123GH6ZRB , TM4C123GH6ZRB , TM4C1290NCPDT , TM4C1290NCPDT , TM4C1290NCZAD , TM4C1290NCZAD , TM4C1292NCPDT , TM4C1292NCPDT , TM4C1292NCZAD , TM4C1292NCZAD , TM4C1294KCPDT , TM4C1294KCPDT , TM4C1294NCPDT , TM4C1294NCPDT , TM4C1294NCZAD , TM4C1294NCZAD , TM4C1297NCZAD , TM4C1297NCZAD , TM4C1299KCZAD , TM4C1299KCZAD , TM4C1299NCZAD , TM4C1299NCZAD , TM4C129CNCPDT , TM4C129CNCPDT , TM4C129CNCZAD , TM4C129CNCZAD , TM4C129DNCPDT , TM4C129DNCPDT , TM4C129DNCZAD , TM4C129DNCZAD , TM4C129EKCPDT , TM4C129EKCPDT , TM4C129ENCPDT , TM4C129ENCPDT , TM4C129ENCZAD , TM4C129ENCZAD , TM4C129LNCZAD , TM4C129LNCZAD , TM4C129XKCZAD , TM4C129XKCZAD , TM4C129XNCZAD , TM4C129XNCZAD
Code Composer Studio is a trademark of Texas Instruments.
All trademarks are the property of their respective owners.
Digital audio is a representation of sound recorded in digital form. In a digital audio system, an analog signal representing the sound can be converted, with an analog-to-digital converter (ADC), into a digital signal using the pulse code modulation (PCM) method. In PCM, the amplitude of an analog signal is sampled regularly at uniform intervals and each sample is quantized into digital steps. The uniform interval is called the sampling rate and the number of discrete levels a signal can be quantized into is called the bit depth. For example, CD audio achieves a sampling rate of 44.1 kHz with a bit depth of 16 bits. What this means is that an analog audio signal is sampled 44100 times in a second and the amplitude of the signal is quantized into 216 or 65536 steps.
Once the audio signal is digitized, it can be stored digitally as a file and it can be edited, modified, and manipulated using digital machines such as a computer or MCU. To play the digital audio file on a speaker, a reverse process is performed. The analog audio signal is simply recreated by using a digital-to-analog converter (DAC) to convert the digital signal back into an analog signal. The analog signal is then typically sent through an audio amplifier to boost the signal before reaching the speaker.
Figure 1-1 illustrates a generic digital audio synthesis and playback system. The DAC shown in the figure can be: an integrated component to the MCU, or a discrete component external to the MCU, or emulated by using PWM signal. As TM4C12x MCUs do not have an integrated DAC, this applicable report will demostrate playing back digital audio using both PWM emulation of a DAC and an external discrete DAC.
This application report focuses more on how the TM4C12x MCU can be used to playback rather than recording the digital music stored in an audio file.
Not all microcontrollers have an integrate DAC on chip, but almost all have the capability to generate PWM signals either with a dedicated peripheral or with a timer module. PWM is a low-cost way to control analog devices (a speaker) with a digital output. PWM emulates an analog signal by means of controlling the duty cycle. Suppose a 100% duty cycle PWM is produced from a 3.3 V MCU, it is easily expected the PWM will produce a 3.3 V DC level signal. A 0% duty cycle PWM is expected to produce a 0 V DC signal as well. What about a 10% duty cycle periodic PWM? If a multimeter is used to measure the PWM output, it is not surprised the multimeter measures 3.3 V * 10% = 0.33 V. A 50% duty cycle PWM will measure 3.3 V * 50% = 1.65 V. This relationship between duty cycle and measured voltage is fairly intuitive. This can be concluded with a simple equation as shown in Equation 1:
Earlier in the Section 1, it was mentioned that each time an analog audio signal is sampled, the signal is recorded as a binary number and the length of the binary numbers is called the resolution. In another word, the resolution expresses the number of discrete steps an analog signal can be represented. If the length of binary numbers is 16, this is denoted as 16-bit resolution. A 16-bit binary value can produce 216 = 65536 discrete steps of a signal. Dividing 3.3 V by 65536 is equal to about 50 µV for each step.
Figure 2-1 shows an example analog signal that is digitized with 12 evenly spaced samples at 3-bit resolution. With only 3 bits of resolution, there are only 8 discrete steps. At this resolution, severe quantization error can result which is the difference between the analog signal and the closest available digital value at each sampling instant from the ADC. In Figure 2-1, samples 3, 4 and 5 are converted to the same digital value when they are different in its analog form at the respective sample points.
To recreate the analog signal in Figure 2-1 using PWM, the duty cycle is obtained by dividing the digital value at each sample point by the bit depth which is 23 = 8.
Figure 2-2 illustrates the reproduction of the analog signal based on the sampling rate and resolution shown in Figure 2-1. Although it resembles the original analog signal but it does not come close to true reproduction. Improvements can be made by increasing the sampling rate and resolution. Imagine the original analog signal was digitized at 8 kHz (8000 samples per second) and 8 bit (256 discrete steps) resolution or higher, the original analog signal will be reproduced by the PWM DAC method at much higher accuracy.
It is understood that a CD quality audio is digitized at a 44.1 kHz sampling rate with 16-bit resolution. The question to then ask is can an MCU achieve this sampling rate and resolution during playback using the PWM DAC method?
To achieve the audio sampling rate during playback, MCU can create a simple timer at the expected frequency. At each timer interrupt, a PWM is generated for the required duty cycle at the desired resolution. This is straight forward for most microcontrollers. Normally the desired sampling rate can be generated by dividing from the timer’s timebase. If the desired sampling rate is integer divisible by the timebase, then the sampling rate can be fully achieved. For sampling rates that are not fully integer divisible, MCU can still reach the desired sampling rate at very high accuracy. Table 3-1 column C shows the achieved sampling rates when the timer uses SYSCLK as the timebase operating at 120 Mhz. As can be seen, for sampling rates at 22.05 kHz and 44.1 kHz, the achieved sampling rates are within 0.00% of the expected. In another word, MCU will be playing back the audio at three decimal points faster than the expected playback speed. For a non-audiophile person, this is not discernible.
To achieve the desired resolution is a different story. For 16-bit resolution, it means there are 216 = 65536 discrete steps. In another word, to achieve 16-bit resolution, PWM must be able to vary its duty cycle at the granularity of 1/65536 of a PWM period in order to achieve a 16-bit DAC equivalent. This is evidently not possible as shown in the second column of Table 3-1 where there are only 2721 SYSCLK cycles in a 44.1 kHz PWM period.
The maximum achievable resolution at the respective sampling rate by MCU can be calculated by the equation as shown in Equation 2:
Fifth column shows the maximum achieved resolution at the respective sampling rate. For 44.1 kHz the achieved resolution is 11.41. Like most microcontrollers, TM4C12x MCUs cannot achieve 16-bit resolution using PWM DAC method, but 8-bit audio resolution is certainly achievable.
Sixth and Seventh columns show the minimum timebase frequency that is required to achieve either 16-bit or 8-bit resolution for different desired sample rates.
Table 3-2 shows the analysis for TM4C123x MCU operating at maximum 80 Mhz.
Desired Sample Rate | Number of System Clocks at 120 Mhz | Achieved Sample Rate | Error in Achieved Sample Rate | Achieved Resolution | Minimum SYSCLK (Mhz) Required to Achieve 16-Bit Resolution | Minimum SYSCLK (Mhz) Required to Achieve 8-Bit Resolution |
---|---|---|---|---|---|---|
8000 | 15000 | 8000.00 | 0.00% | 13.87 | 524.29 | 2.05 |
16000 | 7500 | 16000.00 | 0.00% | 12.87 | 1048.58 | 4.10 |
22050 |
5442 |
22050.72 |
0.00% | 12.41 |
1445.07 |
5.64 |
44100 |
2721 |
44101.43 |
0.00% | 11.41 |
2890.14 |
11.29 |
48000 | 2500 | 48000.00 | 0.00% | 11.29 | 3145.73 | 12.29 |
Desired Sample Rate | Number of System Clocks at 80 Mhz | Achieved Sample Rate | Error in Achieved Sample Rate | Achieved Resolution | Minimum SYSCLK (Mhz) Required to Achieve 16-Bit Resolution | Minimum SYSCLK (Mhz) Required to Achieve 8-Bit Resolution |
---|---|---|---|---|---|---|
8000 | 10000 | 8000.00 | 0.00% | 13.29 | 524.29 | 2.05 |
16000 | 5000 | 16000.00 | 0.00% | 12.29 | 1048.58 | 4.10 |
22050 |
3628 |
22050.75 |
0.00% | 11.82 |
1445.07 |
5.64 |
44100 |
1814 |
44101.43 |
0.00% | 10.82 |
2890.14 |
11.29 |
48000 | 1666 | 48019.21 | 0.04% | 10.70 | 3145.73 | 12.29 |
Although it is not possible to achieve 16-bit resolution, it is still possible to generate the equivalent duty cycle ratio at the maximum achievable resolution for MCU by scaling. For example, if the audio file digitizes a sample point with a value of 0x1234 as a 16-bit value at 44.1 kHz sampling rate, the duty cycle ratio is equal to 0x1234 / 0xFFFF = 7.1%. The TM4C129x PWM counter would be configured with 2721 to generate a PWM period that is equal to 44.1 kHz and the match value would be configured to 7.1% x 2721 = 193 to generate the high phase of the duty cycle.
The PWM method is a low-cost way to emulate digital-to-analog conversion for most microcontrollers. For audio applications requiring only 8-bit resolution, PWM DAC method is certainly a viable option. For high quality audio applications, some loss of fidelity is expected.