STM32 从 I2S DMA 读取麦克风值(MP34DT05-A)

STM32 Read mic value (MP34DT05-A) from I2S DMA

我想从 STM32F107 板上读取 MEMS 麦克风 (MP34DT05-A) 值(ASCII 格式)。我正在使用 I2S 与麦克风通信。

我做了什么:

HAL_I2S_Receive_DMA(&hi2s3, pdm_buff, 16);
PDM_Filter(&cbuff[0], &pcm_buff[0], &PDM1_filter_handler);

结果仍然是随机字符 (d⸮⸮l⸮巳⸮N#⸮&6⸮4q٣⸮#⸮d⸮ɻ&⸮}⸮)。

我需要对数据进行转换吗?还是我做错了什么?

PDM 麦克风不输出 ASCII!

PDM 麦克风输出一个 1 位值序列。

函数PDM_Filter将其转换为PCM,这是一个16位值的序列,仍然是二进制。

要将 16 位序列打印为文本,您需要执行如下操作:

printf("%hi,", pcm_buff[0]);
printf("%hi,", pcm_buff[1]);
...

但显然你可以使用循环。