He conectado un micrófono digital I2S al controlador PIC32MZ. Puedo leer la salida digital del micrófono a través de la transferencia I2S-DMA.
Los siguientes son los detalles de mi configuración: -
- Controlador: - PIC32MZ1024EFE064
- Sensor de audio: - SPH0645LM4H-B
- MPLAB Harmony Configurator (MHC) v2.0.6.0
Cuando reproduzco un tono cerca del micrófono, obtengo algo de estos valores: -
- 0xFA8C8000
- 0xFA8AC000
- 0xFA6EC000
- 0xFA6C8000
- 0xFA600000
- 0xFA544000
- 0xFA6E0000
- 0xFA6AC000
Intenté cubrir el micrófono con pegamento y cinta (para que no detecte ninguna señal de audio) y obtuve los siguientes valores: -
- 0xF9DD0000
- 0xF9DD0000
- 0xF9D9C000
- 0xF9D80000
- 0xF9D6C000
- 0xF9D5C000
- 0xF9D4C000
- 0xF9D3C000
- 0xF9D30000
- 0xF9D24000
En la respuesta a la publicación Micrófono digital: salida de datos I2S , se menciona que el I2S tiene un desplazamiento de un reloj bastante extraño en comparación con los otros formatos comunes, y si se equivoca, siempre verá un 1 en el MSB de la muestra recuperada, lo que hace que todo aparezca. negativo si se interpreta como un valor firmado.
En mi configuración, el MSB siempre es 1 (o 0xF), sin importar qué entrada le dé a mi micrófono. Estoy planeando usar mis datos para calcular la media, el promedio y los valores pico a pico. Entonces, el bit de signo es importante para mí.
Ahora, he usado MPLAB Harmony para configurar mi I2S.
Mis preguntas son,
- Si el desplazamiento de un reloj del reloj I2S hace que el MSB de mis datos sea siempre 1, ¿qué configuración / código debo modificar en MPLAB para resolver este problema?
- Aparte del problema del reloj I2S, ¿cuáles pueden ser los problemas que debo resolver para leer los datos correctos desde mi micrófono?
Gracias de antemano