Usando un UART de MCU como DAC

2

Muchas MCU simples no proporcionan DAC a pesar de tener salida PWM. Para frecuencias de reloj bajas como 8MHz, PWM proporciona una calidad muy pobre si se usa para propósitos de audio. Por ejemplo, TI menciona en las notas de la aplicación que la PWM de 32 kHz con una resolución de tiempo de 8 bits resultaría en una calidad de señal analógica en comparación con la resolución DAC de 4-5 bits.

Me pregunto si sería mejor utilizar UART TX a la velocidad de transmisión más alta posible, por ejemplo. algunas MCU podrían expulsar hasta 400kBit / s a 16MHz.

En comparación con el método PWM con su base de tiempo de 8 o 16 MHz, solo tenemos una resolución de temporización de 400 kHz para cada bit, pero por otro lado, podemos hacer muchos más cambios de nivel en un intervalo determinado.

  • La PWM de 32 kHz realiza 64k interruptores por segundo con una resolución de tiempo de 16 MHz.

  • 400kBaud UART permite 400k switches por segundo con una resolución de tiempo de 400k.

Si convertimos 50k muestras por segundo a 50k patrones de interpolación de 8 bits, ¿qué calidad de señal de audio se puede esperar?

    
pregunta dronus

2 respuestas

4

Esto es un poco confuso, pero intentaré responder lo mejor posible.

Creo que estás confundiendo el número de combinaciones discretas de bits, con el nivel medio .

Comencemos con tu última pregunta:

  

Si convertimos 50k muestras por segundo a 50,000 patrones de tramado de 8 bits

Si hacemos esto, tendríamos que ser capaces de generar 2 8 = 256 niveles de voltaje diferentes después del filtrado. Para hacer esto, debemos tener espacio para 256 bits, lo que significa que debe generar un flujo de bits de 50k * 256 = 12.8 Mbps. Mucho más que tus 400 kbps.

Esto se debe a que, con 8 bits, hay 256 combinaciones diferentes, pero debido a que está realizando un muestreo excesivo y está filtrando, lo único que cuenta es el número de bits , y será de 0 a 8. 0xAA tiene el mismo nivel promedio que 0x55 y 0xF0 etc.

Un PWM con una velocidad más alta siempre generará una señal "mejor". Es la tasa de bits en bruto lo que cuenta. Su tasa de bits PWM sin procesar para una señal PWM de 32 kHz con una resolución de tiempo de 8 bits es más cercana a 8 Mbps.

    
respondido por el pipe
6

Si bien los bits de inicio y parada de valor fijo en la salida del UART impondrán algunas limitaciones menores en lo que puede lograr, ciertamente sería posible utilizar un modulador delta-sigma de software para producir el resto de los bits de datos del valor analógico que desea convertir. Incluso podría escribir el modulador para que contabilice los bits fijos y optimice el resto de los datos a su alrededor.

Sin embargo, 400 kHz todavía no es una gran tasa de muestreo para este tipo de aplicación, y estará cambiando la resolución por ancho de banda. Por ejemplo, si desea audio de "grado telefónico" a una frecuencia de muestreo efectiva de 8 kHz, eso es solo 50 bits de salida por muestra, o aproximadamente 5-6 bits de resolución efectiva.

Si desea un audio de "calidad de CD", debería estar operando el UART a varios MHz para obtener tanto el ancho de banda como la resolución que necesita. Por ejemplo, una relación de sobremuestreo de 256x y una frecuencia de muestreo de 44.1 kHz (valores típicos para DAC de grado de audio) funcionaría a 11.2896 MHz.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas