INMP441 输出的是 I2S 格式数据,我用的是颗 PDM 数字 mic,和标准 I2S 不太一样。 :(
我现在按照 IDF 文档里的说明在处理了:
无论原始 PDM 格式还是 PCM 格式,PDM 模式下的一个数据单元总是 16 比特的位宽。例如,用原始 PDM 格式发送数据,那么您数组中的数据应该像这样排列:CH0 0x1234,CH1 0x5678,CH0 0x9abc,CH1 0xdef0。RX 方向同理。
即只取奇数位 u16 的数据做处理。
只是之前测试的时候发现,我硬件上只接了一个通道的 PDM MIC,但不论取奇数位,还是偶数位的 u16,好像都有效果 ...
Search found 3 matches
- Tue Apr 07, 2026 1:42 am
- Forum: ESP-IDF 中文讨论版
- Topic: ESP32C3 读取 Raw PDM 数据问题
- Replies: 4
- Views: 644
- Tue Mar 24, 2026 2:31 pm
- Forum: ESP-IDF 中文讨论版
- Topic: ESP32C3 读取 Raw PDM 数据问题
- Replies: 4
- Views: 644
Re: ESP32C3 读取 Raw PDM 数据问题
哥们,感谢讨论。你这个还能解释的通。
我用的 ESP32C3 没有内置的 PDM2PCM 模块,然后项目上用的又是个 PDM MIC。
从数据量和采样时长上解释不通,看原始数据,也看不出 left, right 数据到底是怎么样分布的
我用的 ESP32C3 没有内置的 PDM2PCM 模块,然后项目上用的又是个 PDM MIC。
从数据量和采样时长上解释不通,看原始数据,也看不出 left, right 数据到底是怎么样分布的
- Thu Mar 19, 2026 9:40 am
- Forum: ESP-IDF 中文讨论版
- Topic: ESP32C3 读取 Raw PDM 数据问题
- Replies: 4
- Views: 644
ESP32C3 读取 Raw PDM 数据问题
使用的是 esp-idf v5.5.3
.clk_cfg = I2S_PDM_RX_CLK_DEFAULT_CONFIG(1024000),
.slot_cfg = I2S_PDM_RX_SLOT_RAW_FMT_DEFAULT_CONFIG(I2S_DATA_BIT_WIDTH_16BIT, I2S_SLOT_MODE_MONO),
基于这样的配置,我想通过 i2s_channel_read 连续采样 20ms 的 PDM 数据。
是不是需要的 buffer 大小为:
1024000 * 20 / 1000 = 20480 bits = 2560 bytes
但是我通过 esp ...
.clk_cfg = I2S_PDM_RX_CLK_DEFAULT_CONFIG(1024000),
.slot_cfg = I2S_PDM_RX_SLOT_RAW_FMT_DEFAULT_CONFIG(I2S_DATA_BIT_WIDTH_16BIT, I2S_SLOT_MODE_MONO),
基于这样的配置,我想通过 i2s_channel_read 连续采样 20ms 的 PDM 数据。
是不是需要的 buffer 大小为:
1024000 * 20 / 1000 = 20480 bits = 2560 bytes
但是我通过 esp ...