A ideia do projeto é reduzir drasticamente os custos de um projeto já feito anteriormente com o myRIO da National Instruments, de forma a viabilizar a produção de aparelhos que identifiquem sinais impulsivos em tempo real (disparos de armas de fogo, gritos etc).
Mais informações do projeto realizado em LabVIEW que inspirou essa adaptação ao STM32F4 Discovery para redução de custos pode ser visto no relatório anexado na pasta "assets":
Inicialmente pretendemos utilizar a biblioteca de Processamento Digital de Sinais para adquirir e interpretar os dados pelo microfone da STM32F4 Discovery. Depois, vamos implementar o processamento do sinal adquirido pelo método GCC-PHAT (Generalized Cross Correlation Phase Transform).
Não entraremos em um valor ótimo de treshold para identificarmos corretamente o sinal. Somente faremos a aquisição e processamento com um sinal de referência armazenado em um array.
Com esse sinal de referência, aplicamos o GCC e pegamos o pico de correlação com o sinal de entrada. Se este valor extrapolar um limite setado, consideraremos o sinal de entrada semelhante (do mesmo tipo) do sinal de referência.
Uma apresentação breve do projeto realizado em LabVIEW pode ser observado nos assets deste repositório, com link abaixo.
Link: https://github.com/Microcontroladores-2020/Shiraga_ProcessamentoSom/blob/master/assets/IME%20GDS.pdf
Para a realização do projeto foi utilizado um microcontrolador STM32F429 do Discovery kit, a qual já possui um microfone.

Uma imagem mais detalhada mostrando o microfone pode ser observada abaixo:
STM32Cube IDE foi a interface de desenvolvimento escolhida.
- Biblioteca de processamento digital de sinais (DSP) stm32f4 discovery: http://stm32f4-discovery.net/tag/dsp/;
- Tutorial I2C Audio Codec: https://www.youtube.com/watch?v=QIPQOnVablY&pp=qAMBugMGCgJwdBAB;
- Tutorial de algoritmos DSP com stm32f4 discovery: https://www.embarcados.com.br/algoritmos-dsp-stm32f4discovery-parte1/;
- Drive/bizu com alguns projetos de DSP: https://drive.google.com/file/d/0ByfGO_ITCy2tc0lmOFNaNko1YXM/edit.
Também seguindo os tutoriais encontrados, usamos o seguinte Diagrama e Tabela de Pinagem:

Com as seguintes funcionalidades (tabela de pinagem):
| Pinos | Função |
|---|---|
| PH0 | RCC_OSC_IN |
| PH1 | RCC_OSC_OUT |
| PD12 | GPIO_Output |
| PD13 | GPIO_Output |
| PD14 | GPIO_Output |
| PD15 | GPIO_Output |
| PC7 | I253_MCK |
| PC10 | I253_CK |
| PC12 | I253_SD |
| PB6 | I2C1_SCL |
| PB9 | I2C1_SDA |
| PA4 | I253_W |
Seguindo a referência encontrada nos tutoriais, utilizamos o fluxo descrito, que mostra tanto o funcionamento do Firmware do projeto (à esquerda), quanto do funcionamento da parte eletrônica (à direita)
