SPI interfiriendo con la muestra ADC

Estoy intentando grabar audio de 8 bits/8 kbps en una tarjeta SD usando el microcontrolador samd21g18a . Tengo un problema en el que el valor de muestra del ADC cae cada vez que se escribe en la tarjeta SD. Esto da como resultado un ruido de "tic-tac" durante la reproducción.

El "tictac" ocurre en un intervalo de ~60 ms, lo que es consistente con la escritura de la tarjeta SD después de almacenar en búfer 512 bytes (512 * (1/8000) = 0,064 segundos). He acortado todos los cables a sus longitudes mínimas, lo que ha reducido significativamente la amplitud del "tictac", pero aún existe débilmente. ¿Alguien tiene alguna sugerencia para proteger el micrófono/ADC del ruido de las líneas SPI?

Aquí hay una captura de pantalla del archivo de audio en Audacity que muestra el sonido de "tictac". Esto fue antes de que acortara los cables para que ya no sea tan grave:

ingrese la descripción de la imagen aquí

Para el micrófono, estoy usando este desglose de Adafruit construido alrededor del MAX4466, que parece captar y amplificar el ruido de las líneas SPI.

¡Gracias!

@JRE Aquí hay un diagrama de la configuración. Nuevamente, las líneas se mantienen lo más cortas posible con ambas conexiones a tierra de la placa de conexión directamente al pin de conexión a tierra Feather M0.

Configuración de grabación de audio con Feather M0

@John Birckhead Inicialmente pensé que la potencia del micrófono podría estar cayendo mientras la tarjeta SD está escribiendo debido a las mayores demandas de corriente. Aquí hay una captura de pantalla de VCC (CH1) y la salida de micrófono (CH2) mientras se registra en la tarjeta SD. El voltaje de entrada parece muy estable incluso al acercar el zoom.

Captura de pantalla de alcance de VCC y salida de micrófono

Aquí hay una captura de pantalla del pin del reloj del escudo SD (CH1) y la salida del micrófono (CH2). La resolución no es excelente, pero puede ver que la salida del micrófono cae y luego se recupera cuando ocurre la escritura SD.

Captura de pantalla de alcance de SD CLK y salida de micrófono

¿Puedes mostrar un diagrama de toda tu configuración? Me suena más a que tienes problemas con el suministro de energía.
Probablemente una tierra pobre o diafonía. El desacoplamiento y la conexión a tierra adecuados probablemente resolverán este problema.
Si bien la interferencia eléctrica es ciertamente posible, ¿está seguro de que no se trata de una irregularidad en el muestreo del ADC como resultado de un retraso en la escritura? Por lo general, debe tener cuidado con el acoplamiento de ruido y asegurarse de que su muestreo esté completamente desacoplado por búferes y permanezca perfectamente consistente independientemente de que el receptor de datos se detenga momentáneamente. En cuanto a la interferencia, puede que en realidad no sea el SPI, sino un bolo de corriente necesario para la siguiente operación de escritura.
¿Está utilizando par blindado en todas partes (o cable STP)? ¿Hay un e-cap de ESR bajo en Vdd en el lugar correcto?
La configuración utiliza actualmente tres placas Adafruit listas para usar (1. Feather m0 Bluefruit , 2. MAX4466 breakout , 3. MicroSD breakout ). Todos los tableros están conectados usando las líneas más cortas posibles. Acabo de comprobar el voltaje de entrada y no se hunde en absoluto cuando la tarjeta SD está escribiendo. El ap2112 puede suministrar 600 mA, por lo que no está sobrecargado, pero debería ser suficiente.
Verifiqué irregularidades en el muestreo ADC usando el mismo código para grabar primero una muestra corta en la RAM y luego escribir en la tarjeta SD. La grabación de audio de esta manera no genera "tictac", sin embargo, la RAM limitada significa que solo puede almacenar unos pocos segundos.
Usted mencionó usar un suministro separado para la tarjeta SD. ¿Qué suministro usaste? Debido a que esta caída se ve exactamente como la carga de una tapa después de un evento de alta corriente y la hoja de datos de la tarjeta SD vinculada en la página de la placa de la tarjeta SD menciona picos de corriente cortos de hasta 100 mA y más. ¿Intentaste agregar tapas de desacoplamiento también?

Respuestas (1)

demasiadas palabras para un comentario:

Lo más probable es que vea una ligera caída en el suministro de energía a la placa del micrófono en el momento en que se produce la escritura. Esta placa está diseñada para experimentadores y amplifican la señal de audio referenciada a VCC/2 de la placa de conexión MAX 4466. Incluso una pequeña caída en la fuente de alimentación sujeta a la ganancia de esta placa será algo que podrá escuchar, y la corriente para impulsar la tarjeta MicroSD será suficiente para hacerlo.

Primero, asegúrese de que las líneas de su fuente de alimentación vayan primero al procesador, y que la alimentación y la conexión a tierra de su tarjeta de audio provengan de la placa del procesador y no vayan a ningún otro lado. De esta manera, ninguna de las corrientes requeridas para hacer funcionar su tarjeta microSD se está ejecutando en las líneas entre el audio y el procesador. Luego, podría intentar alimentar la placa de audio desde un regulador o referencia lineal LDO en lugar de directamente desde la misma potencia que el procesador.

Gran ilustración. Esto es lo que estoy tratando de decir: la corriente a la placa SD aumentará cada vez que se produzca una escritura. Cuando esto sucede, causará una caída de voltaje a través del cable de tierra debido a la inductancia y resistencia del cable, de modo que la conexión a tierra de la tarjeta SD tenga un voltaje ligeramente más alto que la conexión a tierra del procesador. Debido a que está conectando a tierra el amplificador de su micrófono desde un punto a lo largo de este cable portador de corriente, su tierra se mueve ligeramente cada vez que ocurre una escritura, y dado que la referencia del amplificador es VCC/2, este cambio también se amplifica. Esto puede ser difícil de medir con un osciloscopio porque importa dónde está conectado a tierra el osciloscopio en su circuito.

Una situación ideal sería que la alimentación del micrófono viniera directamente de la referencia del ADC del procesador y los pines de tierra en cables separados. Dado que esta línea esencialmente no tendría corriente, no habría diferencia en el voltaje de los picos de corriente. El uso del pin en la placa significa que la ruta actual aún se comparte para la tarjeta SD y enciende los rastros, incluso si usa cables separados.

En general, no es una buena idea usar VCC/2 como referencia para señales de audio debido a este problema, especialmente en un caso como este donde se introduce el VCC/2 antes de la amplificación. No puedo abrir el esquema de su placa de audio, pero consideraría usar una referencia de voltaje para sesgar el micrófono en lugar de un divisor de resistencia de la fuente de alimentación. Una vez que amplifique la señal de audio, los pequeños cambios no harán una gran diferencia.

¡Buena suerte!

¡Gracias por tu sugerencia! No parece que el voltaje de entrada a la placa del micrófono sea el problema. Agregué algunas capturas de pantalla al OP que creo que mostrarán esto. Al principio, traté de proporcionar alimentación separada para el micrófono y las placas de conexión SD. Si bien pareció reducir ligeramente la amplitud del "tictac", el problema aún persistía.
Gran ilustración. Edité mi respuesta porque me he quedado sin aliento otra vez.