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:
Fri Apr 21 10:33:08 2017 +0200
Revision:
2:9f389fd8fb2e
Aligned to ARM mbed codinmg style; OpenPDM2PCM middleware added.

Who changed what in which revision?

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