ESP32C3 读取 Raw PDM 数据问题

zhou_xingxing1
Posts: 2
Joined: Thu Mar 19, 2026 9:30 am

ESP32C3 读取 Raw PDM 数据问题

Postby zhou_xingxing1 » Thu Mar 19, 2026 9:40 am

使用的是 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_timer_get_time() 计算 i2s_channel_read() 读取 2560 的耗时,却只有 10ms

是什么导致了这样的差异?PDM 数据量计算难道不是这样算的么
Attachments
pdm_mic.c
代码文件
(1.92 KiB) Downloaded 15 times

lieushaw
Posts: 1
Joined: Sun Mar 22, 2026 1:46 pm

Re: ESP32C3 读取 Raw PDM 数据问题

Postby lieushaw » Sun Mar 22, 2026 1:50 pm

我是用PCM方式的,调试过程中豆包告诉我的,我也打印了原始数据看了,确实有如下的现象:
1、你设置了单声道读取,系统只是不读取数据,但是PCM数据里还是有另外一个声道的数据的
2、另外一个声道的数据大部分是0
Last edited by lieushaw on Sun Mar 22, 2026 1:53 pm, edited 2 times in total.

zhou_xingxing1
Posts: 2
Joined: Thu Mar 19, 2026 9:30 am

Re: ESP32C3 读取 Raw PDM 数据问题

Postby zhou_xingxing1 » Tue Mar 24, 2026 2:31 pm

哥们,感谢讨论。你这个还能解释的通。
我用的 ESP32C3 没有内置的 PDM2PCM 模块,然后项目上用的又是个 PDM MIC。
从数据量和采样时长上解释不通,看原始数据,也看不出 left, right 数据到底是怎么样分布的
Last edited by zhou_xingxing1 on Thu Mar 26, 2026 9:36 am, edited 1 time in total.

lieushaw
Posts: 1
Joined: Sun Mar 22, 2026 1:46 pm

Re: ESP32C3 读取 Raw PDM 数据问题

Postby lieushaw » Fri Mar 27, 2026 3:33 am

使用串口打印能够看到有一个声道的大部分数据是0,但不全是0
因为我是使用32位方式读取24位的MIC,所以存在数据左右对齐的问题
另外,你使用的是什么MIC,我使用的是INMP441
Last edited by lieushaw on Fri Mar 27, 2026 3:35 am, edited 1 time in total.

zhou_xingxing1
Posts: 2
Joined: Thu Mar 19, 2026 9:30 am

Re: ESP32C3 读取 Raw PDM 数据问题

Postby zhou_xingxing1 » Tue Apr 07, 2026 1:42 am

INMP441 输出的是 I2S 格式数据,我用的是颗 PDM 数字 mic,和标准 I2S 不太一样。 :(

我现在按照 IDF 文档里的说明在处理了:
无论原始 PDM 格式还是 PCM 格式,PDM 模式下的一个数据单元总是 16 比特的位宽。例如,用原始 PDM 格式发送数据,那么您数组中的数据应该像这样排列:CH0 0x1234,CH1 0x5678,CH0 0x9abc,CH1 0xdef0。RX 方向同理。

即只取奇数位 u16 的数据做处理。

只是之前测试的时候发现,我硬件上只接了一个通道的 PDM MIC,但不论取奇数位,还是偶数位的 u16,好像都有效果(都可以体现模拟信号值)

Who is online

Users browsing this forum: No registered users and 2 guests