Evaluación A / D y D / A convertidor

0

Si necesito leer y escribir datos a través de TRRS hacia y desde los auriculares (es decir, leo el micrófono de auriculares estándar (iphone / galaxy) y escribo en auriculares de auriculares estándar).

Este es un esquema de lo que quiero lograr:

La idea es pasar los datos (sin ninguna manipulación) del micrófono del auricular a través del ADC al BluePill (STM32F103C8) y transferirlos directamente al DAC y desde allí a la computadora.

La ruta inversa es desde la computadora al ADC y desde allí al BluePill, que nuevamente hace todo, excepto transferirlo directamente al DAC que lo transfiere a los auriculares.

Necesito ADC y DAC adecuados para leer y escribir las ondas analógicas (correcto = ADC que sabrá cómo leer todo el rango del micrófono del auricular y DAC que sabrá cómo escribir todo el rango para el auricular).

ADC

Revisé ADS111x (específicamente ADS1115). En sus hojas de datos, dice input ranges from ±256 mV to ±6.144 V , ahora sé que el voltaje de nivel de línea de los auriculares estándar es de 1 mW a una carga de 600 ohmios, ¿esto significa que este ADC es el adecuado para mí?

DAC

Revisé MCP4725. En sus hojas de datos dice que 'VOUT es un voltaje de salida analógica del dispositivo DAC.

El amplificador de salida DAC controla este pin con un rango de VSS a VDD ', por lo que puedo colocar VDD (voltaje en) 5 V de bluepill, pero la conexión a tierra (VSS) será 0 V (creo que es BluePill Ground) Probablemente necesito una escala diferente (no 0 V < x < 5 V, probablemente algo más como -2.5 V < x < 2.5 V), ¿Cómo puedo superar este problema?

p.s. Esto es muy extraño, pero aunque estaba buscando un poco, no hay una ruptura normal para la píldora Arduino / Blue que aplica la conexión TRRS para insertar y eliminar información fácilmente (usando un micrófono y auriculares). Sólo un pensamiento.

    
pregunta dog scotter

1 respuesta

0

Primero una advertencia:

Arduino no es el entorno en el que desea desarrollar esto.

Esto es relativamente fácil para lograrlo si solo puede interactuar con el hardware DMA, configurar los temporizadores y controlar directamente lo que sucede en las rutinas de servicio de interrupción.

Arduino abstrae todo eso, y de una manera inconveniente para los desarrolladores que necesitan esas funcionalidades.

Entonces, elimine el entorno Arduino y vaya directamente a uno de los muchos sistemas operativos en tiempo real que pueden ejecutarse en ese STM32. Muchas personas usan FreeRTOS, mbed tiene una beca cada vez más grande, y personalmente me gusta ChibiOS.

ADC

No necesita un ADC adicional, su microcontrolador viene con un ADC multicanal que es lo suficientemente rápido para conversiones de audio.

Solo asegúrate de activar tu conversión desde un temporizador, para que obtengas una frecuencia de muestreo regular; de lo contrario, será imposible realizar correctamente cualquier procesamiento.

Luego, programe el controlador DMA para que tome automáticamente los valores de ADC y muévalos a donde deben estar, por ejemplo, el búfer TXDATA del puerto SPI, si desea enviarlos a un DAC conectado a SPI, o a algún búfer, en caso de que quiera que su firmware lo procese primero.

Independientemente del ADC que elija, no olvide que debe acondicionar su señal: los filtros analógicos antialias son obligatorios, de lo contrario obtendrá un alias y su señal digital se romperá.

DAC

Nuevamente, podría usar las unidades PWM de su STM32 seguidas de un filtro de paso bajo y no usar un DAC externo.

    
respondido por el Marcus Müller

Lea otras preguntas en las etiquetas