1 votos

Ayuda con el proyecto

[Ecuación de diferencia]:

$$LPF_D=\frac{0.1441z^2+0.2881z+0.1441}{z^2-0.6777z+0.254}$$ Con una muestra de \$T_s = \$ 8e-6 segundos, en científico Notación E .

La ecuación de la diferencia:

\$Y\$ = Salida

\$U\$ = Entrada

$$Y_i =0.1441U_{i}+0.2281U_{i-1}+0.1441U_{i-2}+0.6777Y_{i-1}-0.254Y_{i-2}$$

La primera vez que vine aquí fue con un Atmel Atmega328p preguntando si puedo muestrear una señal de audio mientras implemento un filtro digital que he creado.

Conseguí el muestreo de audio pero pronto me di cuenta de que la potencia de procesamiento no estaba ahí para el Atmel Atmega. Ustedes me mostraron una nueva forma de muestrear desde el ADC que es el DMA. Dicen que es mucho más rápido. Tuve un ADC muestreando a 36 KHz mientras eso iba quería implementar una ecuación de diferencia. Aprendí que la ecuación de diferencia no podía ser ejecutada dentro del tiempo de muestreo de 36 KHz. Tomé sus sugerencias y compré un STM32L43KC .

Una actualización masiva. DMA, DSP, 80 MHz. Durante el fin de semana me puse donde lo dejé con el Atmel Atmega.

Tengo el ADC funcionando con DMA en el chip STM32, pero me di cuenta de algo. Necesitaría tener una interrupción en el DMA (Interrupción de Transferencia Completa) cuando las muestras del ADC estén listas. Si estoy muestreando el ADC a 36 KHz y la interrupción está habilitada en el DMA ¿significa que la CPU va a ser interrumpida cada 36 KHz? ¿Lo que me deja sin espacio para implementar el filtro digital?

A menos que esta vez el MCU que estoy usando tenga un DSP y que pueda ejecutar mi ecuación de diferencia dentro de 27.7 us, de lo contrario me estoy viendo en la misma situación. ¿Cómo la gente realmente muestra y hacer DSP al mismo tiempo?

La única forma que se me ocurre es utilizar dos MCU. Que una haga la interrupción de muestreo y la envíe por SPI, UART y luego la segunda MCU interrumpa cuando la reciba y haga el DSP.

¿Alguna idea sobre esto, chicos?

Todo lo que quiero hacer es muestrear una señal de audio a una frecuencia lo suficientemente buena como para evitar el aliasing, luego implementar un filtro digital en el que he trabajado y meterlo en un DAC y escucharlo.

0voto

Justme Puntos 201

Si no se puede resolver con una MCU, tampoco se puede resolver con dos MCU. Si envías los datos del ADC a otra MCU, ésta necesita recibirlos (quizás a través de interrupciones, o DMA) y sigues con el mismo problema de que tienes datos entrando desde algún sitio a cierta velocidad y necesitas procesarlos, ¿entonces qué, una tercera MCU?

La cuestión es que usted procesa los datos del ADC en bloques de muchas muestras, por ejemplo, 1000 bloques de muestras. Configura la memoria para 2000 muestras y configura el DMA en modo de doble buffer o ring-buffer y haz que genere interrupciones cada 1000 muestras cuando un bloque esté completo. Después de procesar un bloque configura un DMA a DAC para reproducir los datos procesados.

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