PDM example Mic works on Portenta Vision Shield

So I was in a zoom meeting with a bunch of Arduino Engineers today and someone mentioned that the Portenta Vision Shield microphone should work with the PDM example that comes with the Nano 33 Ble Sense. So I tried it and it does. The next obvious step is to try a sound impulse. Which also worked.

So that is my first program using Arduino C, Edge Impulse but running on the new Portenta Vision Shield.

P.S. For sound deployment, there is no OpenMV. Is that now possible? I believe OpenMV has working sound examples in micro-python now.

1 Like

Awesome @Rocksetta, newly supported boards without us having to do anything! We’re still working with OpenMV in getting Edge Impulse audio models to work there. A bit harder because it requires our DSP blocks to be integrated in their base library.

1 Like

So yes I can use the nano33BleSense microphone on the Portenta with the Portenta Vision Shield microphones for the outer M7 core but when I tried on the inner M4 core I get this error:

C:\Users\jeremy.ellis\AppData\Local\Arduino15\packages\arduino\hardware\mbed\1.3.1\libraries\PDM\src\stm32\PDM.cpp: In member function 'void uDMClass::IrqHandler(bool)':
C:\Users\jeremy.ellis\AppData\Local\Arduino15\packages\arduino\hardware\mbed\1.3.1\libraries\PDM\src\stm32\PDM.cpp:136:5: error: 'SCB_InvalidateDCache_by_Addr' was not declared in this scope
     SCB_InvalidateDCache_by_Addr((uint32_t *)&recordPDMBuf[start], AUDIO_IN_PDM_BUFFER_SIZE * 2);
C:\Users\jeremy.ellis\AppData\Local\Arduino15\packages\arduino\hardware\mbed\1.3.1\libraries\PDM\src\stm32\PDM.cpp:142:5: error: 'SCB_CleanDCache_by_Addr' was not declared in this scope
     SCB_CleanDCache_by_Addr((uint32_t*)_doubleBuffer.data(), AUDIO_IN_PDM_BUFFER_SIZE * 2);

I guess I should check that the microphones work from the M4 core without using an impulse.

1 Like