pdm audio codec

I would like to replace my analog microphone with a digital mic. Seems like the digital mics use I2S or PDM. I realize I2S is not available on the arduino, but does anyone know if it is possible (or if there is a library) that can use the PDM (and Delta Sigma Modulation) and convert to PCM format?. Also - on the hookup part - is it possible to use the SPI to do the sampling of the data?

At the data rates involved you'll need a Due I think. It has a synchronous serial unit which is, according to the datasheet,
capable of interfacing I2S (but cannot act as 12.288MHz clock source).

For PDM it depends on the bit rate. Which devices are you looking at?


I have an Adafruit PDM MEMS microphone and I want to get voice signal thru Arduino Mega or Arduino Due. Do you have any idea of how to connect them and if there is any library that can help me with the programming part? I already made some research without any luck :frowning:

Thank you!

Mega - no chance.

Due - read the SAM processor datasheet section on the synchronous serial unit (several times, with
caffeine to hand!) - but only if you can't find a library (I've never tried this, I just noted it should be
capable of doing it). The SAM processor is a complex beast, loads and loads and loads of registers
for even the simplest thing, so its slow work without an example (though no doubt extremely flexible).

And then there's the issue of generating a clock of the right frequency, I2S is a (power of two) multiple of 48kHz
normally, and 84MHz is not such a multiple...