FYI, I grafted the ST Micro PDM library that Ronan Paixão found into
my Codec2 Cortex-M4 test code.

The library seems to consume about 28uS or 33uS of CPU for every 1mS
of audio input, for 64x or 80x decimation respectively.  So, it adds
about 0.5 to 0.7 mS per 20mS audio frame, or about 10% extra above the
256-element length FFT Codec2 routine.

The clarity is better than my previous makeshift PDM to LPCM
conversion routine, but the microphone still has lots of wideband
noise.  This really dilutes the Codec2 results.  Some sort of DNR
might help.

Just for posterity (or for someone else attempting to use ST's PDM library):

The ST PDM library operates on 1 mS worth of audio, and decimates the
PDM stream by either by 64 or 80 times.

What this means is that the minimum possible LPCM rate out is 16kHz
(twice the Codec2 rate).  This is forced by the MP45DT02 datasheet,
which indicates a minimum clock rate of 1 MHz is required.

However, since the library has a configurable low-pass frequency, one
can then down-sample to 8kHz before routing the audio to the codec.

There is a MicGain (or Volume... the ST documentation waffles)
parameter.  0 appears to be mute.  The higher the value, the louder
the audio, but the louder the noise too.

Although the parameter can go up to 64 in principle, I found anything
more than 3-4 just made the codec results very distorted.  At 1-4, one
has to speak very loudly directly into the microphone; the results
seem intelligible, but still nowhere near as clear as the HTS samples.

Also, note that although the AN3998 documentation indicates on page 7
that PDMFilter_InitStruct only has an Out_MicChannels member, it
actually has both an In_MicChannels and Out_MicChannels member.  Both
need to be set to valid values for the library to work.

2011/11/7 Ronan Paixão <[email protected]>:
> For the record, there is an Application Note about PDM in ST's STM32F4 page:
> AN3998: PDM audio software decoding on STM32 microcontrollers (pdf)
> This is exactly about the MEMs mic on the STM32F4 Discovery board and how to
> convert it to 16-bit PCM. From the introduction:

------------------------------------------------------------------------------
RSA(R) Conference 2012
Save $700 by Nov 18
Register now
http://p.sf.net/sfu/rsa-sfdev2dev1
_______________________________________________
Freetel-codec2 mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freetel-codec2

Reply via email to