EFM32 Zero Gecko Software Documentation  efm32zg-doc-5.1.2
MEMS Microphone Functions

Detailed Description

MEMS microphone driver and support functions.

DO_NOT_INCLUDE_WITH_DOXYGEN

Functions

void MIC_deInit (void)
 Powers down the MEMS microphone stops the ADC and frees up the DMA channel. More...
 
float MIC_getMean (void)
 Calculates the average value of the samples in the buffer. More...
 
uint16_t * MIC_getSampleBuffer (void)
 Gets the sample buffer. More...
 
float MIC_getSoundLevel (float *var)
 Calculates the sound level. More...
 
uint32_t MIC_init (uint32_t fs, uint16_t *buffer, size_t len)
 Initializes MEMS microphone and sets up the DMA, ADC and clocking. More...
 
bool MIC_isBusy (void)
 Checks if the microphone is in use. More...
 
void MIC_start (uint32_t nSamples)
 Starts taking samples using DMA from the microphone. More...
 

Function Documentation

void MIC_deInit ( void  )

Powers down the MEMS microphone stops the ADC and frees up the DMA channel.

Returns
None

Definition at line 186 of file mic.c.

References BOARD_micEnable(), DMADRV_FreeChannel(), and PRS_SourceAsyncSignalSet().

float MIC_getMean ( void  )

Calculates the average value of the samples in the buffer.

Returns
The mean value of the samples in the buffer

Definition at line 267 of file mic.c.

Referenced by MIC_getSoundLevel().

uint16_t * MIC_getSampleBuffer ( void  )

Gets the sample buffer.

Returns
Returns a pointer to the sample buffer

Definition at line 253 of file mic.c.

float MIC_getSoundLevel ( float *  var)

Calculates the sound level.

Parameters
[out]varThe variance of the samples
Returns
The sound level in dB

Definition at line 294 of file mic.c.

References MIC_getMean().

uint32_t MIC_init ( uint32_t  fs,
uint16_t *  buffer,
size_t  len 
)

Initializes MEMS microphone and sets up the DMA, ADC and clocking.

DO_NOT_INCLUDE_WITH_DOXYGEN

Parameters
[in]fsThe desired sample rate in Hz
[in]bufferPointer to the sample buffer to store the ADC data
[in]lenThe size of the sample buffer
Returns
Returns zero on OK, non-zero otherwise

Definition at line 87 of file mic.c.

References ADC0, ADC_Init(), ADC_INIT_DEFAULT, ADC_InitScan(), ADC_INITSCAN_DEFAULT, ADC_PrescaleCalc(), ADC_TimebaseCalc(), adcInit(), adcRef2V5, BOARD_micEnable(), CMU, CMU_ClockEnable(), CMU_ClockFreqGet(), CMU_ClockSelectSet(), CMU_CTRL_CLKOUTSEL1_LFXOQ, cmuClock_ADC0, cmuClock_AUX, cmuClock_LFA, cmuClock_PRS, cmuSelect_LFXO, DMADRV_AllocateChannel(), DMADRV_Init(), ECODE_EMDRV_DMADRV_OK, MIC_ADC_CLOCK_FREQ, ADC_Init_TypeDef::prescale, PRS_SourceAsyncSignalSet(), ADC_InitScan_TypeDef::prsEnable, ADC_InitScan_TypeDef::prsSel, ADC_InitScan_TypeDef::reference, and ADC_Init_TypeDef::timebase.

bool MIC_isBusy ( void  )

Checks if the microphone is in use.

Returns
Returns true if the DMA is busy taking microphone samples

Definition at line 336 of file mic.c.

void MIC_start ( uint32_t  nSamples)

Starts taking samples using DMA from the microphone.

Parameters
[in]nSamplesThe number of the samples to take
Returns
None

Definition at line 214 of file mic.c.

References ADC0, DMADRV_PeripheralMemory(), dmadrvDataSize2, and dmadrvPeripheralSignal_ADC0_SCAN.