2 votos

Uso de la UART de la MCU como DAC

Muchos MCUs simples no proporcionan DACs a pesar de tener salida PWM. Para frecuencias de reloj bajas, como 8MHz, el PWM proporciona una calidad muy pobre si se utiliza para fines de audio. Por ejemplo, TI menciona en sus notas de aplicación que un PWM de 32kHz con una resolución de tiempo de 8 bits resultaría en una calidad de señal analógica comparada con un DAC de 4-5 bits de resolución.

Me pregunto si no sería mejor utilizar la UART TX a la mayor velocidad de transmisión posible, por ejemplo, algunos MCUs pueden llegar a 400kBit/s a 16MHz.

En comparación con el método PWM con su base de tiempo de 8 o 16 MHz, sólo tenemos una resolución de tiempo de 400kHz para cada bit, pero por otro lado, podemos hacer muchas más conmutaciones de nivel en algún intervalo dado.

  • El PWM de 32kHz realiza 64k conmutaciones por segundo con una resolución de tiempo de 16Mhz.

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

Si convertimos 50k muestras por segundo en 50k patrones de dithering de 8 bits, ¿qué calidad de señal de audio efectiva cabe esperar?

6voto

GSerg Puntos 33571

Aunque los bits de inicio y parada de valor fijo a la salida de la UART impondrán algunas limitaciones menores en lo que puedes lograr, ciertamente sería posible usar un modulador delta-sigma por software para producir el resto de los bits de datos a partir del valor analógico que quieres convertir. Incluso podrías escribir el modulador para que tenga en cuenta los bits fijos y optimice el resto de los datos en torno a ellos.

Sin embargo, 400 kHz sigue sin ser una gran velocidad de muestreo para este tipo de aplicaciones, y estarás cambiando la resolución por el ancho de banda. Por ejemplo, si quieres un audio de calidad telefónica con una frecuencia de muestreo efectiva de 8 kHz, esto supone sólo 50 bits de salida por muestra, o unos 5-6 bits de resolución efectiva.

Si quieres un audio con calidad de CD, tendrás que utilizar la UART a varios MHz para conseguir el ancho de banda y la resolución que necesitas. Por ejemplo, una relación de sobremuestreo de 256x y una frecuencia de muestreo de 44,1 kHz (valores típicos de los DAC de calidad de audio) equivaldrían a 11,2896 MHz.

4voto

pipe Puntos 314

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 .

Empecemos por su última pregunta:

Si convertimos 50k muestras por segundo en 50.000 patrones de dithering de 8 bits

Si hacemos esto, tendríamos que ser capaces de generar 2 8 \=256 niveles de tensión diferentes tras el filtrado. Para ello, debemos tener espacio para 256 bits, lo que significa que hay que 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 como se está sobremuestreando y filtrando, sólo es el número de bits que cuenta, y que será de 0 a 8. 0xAA tiene el mismo nivel medio que 0x55 y 0xF0 etc.

Un PWM con una tasa más rápida siempre generará una señal "mejor". Lo que cuenta es la tasa de bits bruta. Tu tasa de bits PWM bruta para una señal PWM de 32 kHz con una resolución de temporización de 8 bits está más cerca de los 8 Mbps.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X