Simple test application for the STMicroelectronics X-NUCLEO-CCA02M1 MEMS Microphones Expansion Board, built against mbed classic.

Dependencies:   X_NUCLEO_CCA02M1 mbed ST_Events-old

Fork of HelloWorld_CCA02M1_mbedOS by ST

Recording audio with the X-NUCLEO-CCA02M1 Expansion Board

This application provides a simple example of usage of the X-NUCLEO-CCA02M1 MEMS Microphones Expansion Board, built against mbed classic 2.x.

It shows how to record a 2-channel stereo signal as an array of PCM samples (16 bit/sample) that can be acquired through an audio SW like Audacity, for example.

Microphones configuration

Currently the configurations supported are the following:

  • Stereo@48KHz
  • Stereo@44.1KHz (default, CD audio quality)
  • Stereo@32KHz
  • Stereo@16KHz
  • Stereo@8KHz
  • Mono@48KHz
  • Mono@44.1KHz
  • Mono@32KHz
  • Mono@16KHz
  • Mono@8KHz

Mono configurations need a Jumper connecting PB_5 and PB_13 on the Morpho connector to properly work.


Platform compatibility

  • This board can be currently used with the Nucleo F4 Family only, please see the ST_I2S library compatibility for further information.
  • Please note that the main application makes use of the "events" library (i.e. the "ST_Events" library imported as "events" library), which is not included into the "mbed" library.
  • The application built against mbed OS can be found here.


Acquiring through the USB on Windows

In order to acquire the recorded PCM audio channel with an audio SW on a PC, please connect the expansion board to a USB port of the PC, and the Nucleo board to a USB power supply.
On Windows, click on the speaker icon on the bottom bar, select "Recording devices", "Microphone", "Properties", then click on the "Advanced" panel, and select "1/2 channels, 16 bit, 16/32KHz" according to board configuration.
Open your preferred audio SW, like "Audacity" for example, configure it to acquire a 2-channel stereo at 16KHz (for default configuration), and record.

Revision:
17:97dffa2e68f7
Parent:
12:203c08553f4d
--- a/main.cpp	Wed Jul 12 13:57:40 2017 +0000
+++ b/main.cpp	Fri Jul 14 16:37:55 2017 +0000
@@ -41,7 +41,6 @@
 
 /* mbed specific header files. */
 #include "mbed.h"
-#include "rtos.h"
 
 
 #if DEVICE_I2S
@@ -63,9 +62,6 @@
     2       /* Default number of channels. */
 };
 
-/* Thread to manage I2S peripherals. */
-static rtos::Thread i2s_bh_daemon;
-
 
 /* Functions -----------------------------------------------------------------*/
 
@@ -86,10 +82,6 @@
         exit(EXIT_FAILURE);
     }
 
-    /* Starting a thread to manage I2S peripherals. */
-    Callback<void()> i2s_bh_task(&I2S::i2s_bh_queue, &events::EventQueue::dispatch_forever);
-    i2s_bh_daemon.start(i2s_bh_task);
-
     /* Enabling transmission via USB. */
     microphones->enable_usb();
 
@@ -102,6 +94,9 @@
     /* Printing to the console. */
     printf("--> Recording...\r\n");
     microphones->record();
+
+    /* Dispatching forever the I2S queue. */
+    I2S::i2s_bh_queue.dispatch_forever();
 }
 
 #else // DEVICE_I2S