Library to handle the X-NUCLEO-CCA02M1 MEMS Microphones Expansion Board.

Dependencies:   ST_I2S ST_FREQUENCY_DIVIDER USBDEVICE

Dependents:   HelloWorld_CCA02M1 HelloWorld_CCA02M1_mbedOS HelloWorld_CCA02M1 Karaoke_CCA01M1_CCA02M1_mbedOS

Fork of X_NUCLEO_CCA02M1 by ST Expansion SW Team

MEMS Microphones Library

Library to handle the X-NUCLEO-CCA02M1 MEMS Microphones Expansion Board. A single board allows to record a standard 2-channel stereo signal as an array of PCM samples (16 bit/sample); in principle, it could make use of six additional MEMS microphones to realize a 8-channel audio system.


Microphones configuration

Currently the configurations supported are the following:

  • Stereo@48KHz
  • Stereo@44.1KHz (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.
  • The library is compatible both with mbed OS 5.x and mbed classic 2.x (to work with mbed classic, the main application has to import the "events" library, which is not included into the "mbed" library).


I2S Peripheral Usage

By default this board makes use of the I2S peripheral available on Nucleo boards.


Acquiring through the USB

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.

Committer:
davide.aliprandi@st.com
Date:
Tue Feb 28 11:20:53 2017 +0100
Revision:
0:d5552d432108
Library to handle the X-NUCLEO-CCA02M1 MEMS Microphones Expansion Board.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
davide.aliprandi@st.com 0:d5552d432108 1 /**
davide.aliprandi@st.com 0:d5552d432108 2 ******************************************************************************
davide.aliprandi@st.com 0:d5552d432108 3 * @file component.h
davide.aliprandi@st.com 0:d5552d432108 4 * @author AST
davide.aliprandi@st.com 0:d5552d432108 5 * @version V1.0.0
davide.aliprandi@st.com 0:d5552d432108 6 * @date 1 April 2015
davide.aliprandi@st.com 0:d5552d432108 7 * @brief Generic header file containing a generic component's definitions
davide.aliprandi@st.com 0:d5552d432108 8 * and I/O functions.
davide.aliprandi@st.com 0:d5552d432108 9 ******************************************************************************
davide.aliprandi@st.com 0:d5552d432108 10 * @attention
davide.aliprandi@st.com 0:d5552d432108 11 *
davide.aliprandi@st.com 0:d5552d432108 12 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
davide.aliprandi@st.com 0:d5552d432108 13 *
davide.aliprandi@st.com 0:d5552d432108 14 * Redistribution and use in source and binary forms, with or without modification,
davide.aliprandi@st.com 0:d5552d432108 15 * are permitted provided that the following conditions are met:
davide.aliprandi@st.com 0:d5552d432108 16 * 1. Redistributions of source code must retain the above copyright notice,
davide.aliprandi@st.com 0:d5552d432108 17 * this list of conditions and the following disclaimer.
davide.aliprandi@st.com 0:d5552d432108 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
davide.aliprandi@st.com 0:d5552d432108 19 * this list of conditions and the following disclaimer in the documentation
davide.aliprandi@st.com 0:d5552d432108 20 * and/or other materials provided with the distribution.
davide.aliprandi@st.com 0:d5552d432108 21 * 3. Neither the name of STMicroelectronics nor the names of its contributors
davide.aliprandi@st.com 0:d5552d432108 22 * may be used to endorse or promote products derived from this software
davide.aliprandi@st.com 0:d5552d432108 23 * without specific prior written permission.
davide.aliprandi@st.com 0:d5552d432108 24 *
davide.aliprandi@st.com 0:d5552d432108 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
davide.aliprandi@st.com 0:d5552d432108 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
davide.aliprandi@st.com 0:d5552d432108 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
davide.aliprandi@st.com 0:d5552d432108 28 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
davide.aliprandi@st.com 0:d5552d432108 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
davide.aliprandi@st.com 0:d5552d432108 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
davide.aliprandi@st.com 0:d5552d432108 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
davide.aliprandi@st.com 0:d5552d432108 32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
davide.aliprandi@st.com 0:d5552d432108 33 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
davide.aliprandi@st.com 0:d5552d432108 34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
davide.aliprandi@st.com 0:d5552d432108 35 *
davide.aliprandi@st.com 0:d5552d432108 36 ******************************************************************************
davide.aliprandi@st.com 0:d5552d432108 37 */
davide.aliprandi@st.com 0:d5552d432108 38
davide.aliprandi@st.com 0:d5552d432108 39
davide.aliprandi@st.com 0:d5552d432108 40 /* Define to prevent recursive inclusion -------------------------------------*/
davide.aliprandi@st.com 0:d5552d432108 41
davide.aliprandi@st.com 0:d5552d432108 42 #ifndef __COMPONENT_H
davide.aliprandi@st.com 0:d5552d432108 43 #define __COMPONENT_H
davide.aliprandi@st.com 0:d5552d432108 44
davide.aliprandi@st.com 0:d5552d432108 45
davide.aliprandi@st.com 0:d5552d432108 46 /* Types ---------------------------------------------------------------------*/
davide.aliprandi@st.com 0:d5552d432108 47
davide.aliprandi@st.com 0:d5552d432108 48 /**
davide.aliprandi@st.com 0:d5552d432108 49 * @brief Component's Context structure definition.
davide.aliprandi@st.com 0:d5552d432108 50 */
davide.aliprandi@st.com 0:d5552d432108 51 typedef struct
davide.aliprandi@st.com 0:d5552d432108 52 {
davide.aliprandi@st.com 0:d5552d432108 53 /* Identity. */
davide.aliprandi@st.com 0:d5552d432108 54 uint8_t who_am_i;
davide.aliprandi@st.com 0:d5552d432108 55
davide.aliprandi@st.com 0:d5552d432108 56 /* ACTION ----------------------------------------------------------------*/
davide.aliprandi@st.com 0:d5552d432108 57 /* There should be only a unique identifier for each component, which */
davide.aliprandi@st.com 0:d5552d432108 58 /* should be the "who_am_i" parameter, hence this parameter is optional. */
davide.aliprandi@st.com 0:d5552d432108 59 /* -----------------------------------------------------------------------*/
davide.aliprandi@st.com 0:d5552d432108 60 /* Type. */
davide.aliprandi@st.com 0:d5552d432108 61 uint8_t type;
davide.aliprandi@st.com 0:d5552d432108 62
davide.aliprandi@st.com 0:d5552d432108 63 /* Configuration. */
davide.aliprandi@st.com 0:d5552d432108 64 uint8_t address;
davide.aliprandi@st.com 0:d5552d432108 65
davide.aliprandi@st.com 0:d5552d432108 66 /* Pointer to the Data. */
davide.aliprandi@st.com 0:d5552d432108 67 void *pData;
davide.aliprandi@st.com 0:d5552d432108 68
davide.aliprandi@st.com 0:d5552d432108 69 /* Pointer to the Virtual Table. */
davide.aliprandi@st.com 0:d5552d432108 70 void *pVTable;
davide.aliprandi@st.com 0:d5552d432108 71
davide.aliprandi@st.com 0:d5552d432108 72 /* ACTION ----------------------------------------------------------------*/
davide.aliprandi@st.com 0:d5552d432108 73 /* There should be only a unique virtual table for each component, which */
davide.aliprandi@st.com 0:d5552d432108 74 /* should be the "pVTable" parameter, hence this parameter is optional. */
davide.aliprandi@st.com 0:d5552d432108 75 /* -----------------------------------------------------------------------*/
davide.aliprandi@st.com 0:d5552d432108 76 /* Pointer to the Extended Virtual Table. */
davide.aliprandi@st.com 0:d5552d432108 77 void *pExtVTable;
davide.aliprandi@st.com 0:d5552d432108 78 } Handle_t;
davide.aliprandi@st.com 0:d5552d432108 79
davide.aliprandi@st.com 0:d5552d432108 80 /**
davide.aliprandi@st.com 0:d5552d432108 81 * @brief Component's Status enumerator definition.
davide.aliprandi@st.com 0:d5552d432108 82 */
davide.aliprandi@st.com 0:d5552d432108 83 typedef enum
davide.aliprandi@st.com 0:d5552d432108 84 {
davide.aliprandi@st.com 0:d5552d432108 85 COMPONENT_OK = 0,
davide.aliprandi@st.com 0:d5552d432108 86 COMPONENT_ERROR,
davide.aliprandi@st.com 0:d5552d432108 87 COMPONENT_TIMEOUT,
davide.aliprandi@st.com 0:d5552d432108 88 COMPONENT_NOT_IMPLEMENTED
davide.aliprandi@st.com 0:d5552d432108 89 } Status_t;
davide.aliprandi@st.com 0:d5552d432108 90
davide.aliprandi@st.com 0:d5552d432108 91 #endif /* __COMPONENT_H */
davide.aliprandi@st.com 0:d5552d432108 92
davide.aliprandi@st.com 0:d5552d432108 93 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/