2018-01-15 06:06 AM
Hi, I'm prototyping something that processes digital mono audio from a mems mic, transferring the data over i2s into an stm32f373. The only issue I have is that the DMA transfer is designed for stereo so twice as much data is transferred than necessary, with the second channel being zeros.
I'm wondering if there is a more efficient design, perhaps with a different mcu, communication type, etc.., so that only the single audio channel is transferred. As far as I can tell i2s will always give a stereo feed to the DMA.
Can anyone think of a mono optimised design?
Thanks, Joe
2018-01-15 06:20 AM
What mic? Any codec?
JW
2018-01-15 04:27 PM
So far I've used Invensense ICS-43432 or Knowles SPH0641LM4H-1 which work but as they use i2s the DMA controller on the STM32F373 includes the blank data for the non-existing channel. I'm not using a codec.
2018-01-16 02:37 AM
SAI can selectively throw away portions of received data, or at least that follows from the RM, I haven't tried personally. I also believe the 24-bits could be handled better with SAI.
SAI is to be found in some 'F4, 'F7 and 'L4; AFAIK no 'F3 has SAI.
If you have intrinsic reasons for the 'F373, I could envisage some timer-based scheme to trigger DMA picking the data more 'selectively', instead of 'natively' triggered DMA; maybe some pins would need to be interconnected externally. This would need to be experimented.
JW
2018-01-16 05:44 AM
Thanks, SAI looks good. I'll have a play with one of the supporting F4's.