Combinando las salidas de múltiples dispositivos SPI

3

Tengo un proyecto que tiene una gran variedad de micrófonos digitales cuya salida me gustaría realizar un procesamiento de señales sofisticado con un microprocesador ARM de alta potencia.

Me gusta la idea de usar micrófonos digitales porque no tengo que andar con preamplificadores. De todos modos, cada micrófono digital está conectado a un microcontrolador dedicado que convierte la salida de PDM a PCM.

Necesito poder obtener los datos de cada micrófono en mi microprocesador ARM. Supongamos en este punto que todo está sincronizado para dar la apariencia de una muestra concurrente de canal N y mantener el ADC. Mi opinión actual es que cada microcontrolador conectado a un micrófono almacenaría sus datos en cierta medida y los vaciaría sobre SPI cuando el maestro manipula su selección de esclavos. El maestro simplemente hablaría con cada esclavo a su vez.

Mi pregunta es, ¿existe una forma más elegante de implementar esto?

Probablemente este sea un trabajo perfecto para un FPGA pero está un poco más allá de mi nivel de habilidad en este momento.

    
pregunta Sam Delaney

1 respuesta

1

Los esclavos con entradas de selección de chips no son una mala idea. De esta manera, costará muchos puertos de su MCU, pero si tiene estos recursos, le recomiendo que se mantenga con esta idea. Si está familiarizado con RTOS (freertos.org es una buena opción gratuita) puede implementar algún código como un controlador SPI para compartir y cambiar la comunicación a través de todos los esclavos. Hice esto en algunos de mis proyectos. Llamé a mi controlador "SPIShared".

Al utilizar un mutex RTOS, protegerá a cada esclavo para que realice una transacción completa con su maestro. Después de eso, se lanza el mutex para permitir una nueva comunicación.

Observación: puedes crear un SPI compartido aunque cada uno tenga un estándar esclavo diferente. Antes de cada transacción, deberá reinicializar su periférico SPI con el estándar de comunicación esclavo.

    

Lea otras preguntas en las etiquetas