使用的是 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 数据量计算难道不是这样算的么
ESP32C3 读取 Raw PDM 数据问题
-
zhou_xingxing1
- Posts: 2
- Joined: Thu Mar 19, 2026 9:30 am
Re: ESP32C3 读取 Raw PDM 数据问题
我是用PCM方式的,调试过程中豆包告诉我的,我也打印了原始数据看了,确实有如下的现象:
1、你设置了单声道读取,系统只是不读取数据,但是PCM数据里还是有另外一个声道的数据的
2、另外一个声道的数据大部分是0
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 数据问题
哥们,感谢讨论。你这个还能解释的通。
我用的 ESP32C3 没有内置的 PDM2PCM 模块,然后项目上用的又是个 PDM MIC。
从数据量和采样时长上解释不通,看原始数据,也看不出 left, right 数据到底是怎么样分布的
我用的 ESP32C3 没有内置的 PDM2PCM 模块,然后项目上用的又是个 PDM MIC。
从数据量和采样时长上解释不通,看原始数据,也看不出 left, right 数据到底是怎么样分布的
Last edited by zhou_xingxing1 on Thu Mar 26, 2026 9:36 am, edited 1 time in total.
Re: ESP32C3 读取 Raw PDM 数据问题
使用串口打印能够看到有一个声道的大部分数据是0,但不全是0
因为我是使用32位方式读取24位的MIC,所以存在数据左右对齐的问题
另外,你使用的是什么MIC,我使用的是INMP441
因为我是使用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 数据问题
INMP441 输出的是 I2S 格式数据,我用的是颗 PDM 数字 mic,和标准 I2S 不太一样。
我现在按照 IDF 文档里的说明在处理了:
无论原始 PDM 格式还是 PCM 格式,PDM 模式下的一个数据单元总是 16 比特的位宽。例如,用原始 PDM 格式发送数据,那么您数组中的数据应该像这样排列:CH0 0x1234,CH1 0x5678,CH0 0x9abc,CH1 0xdef0。RX 方向同理。
即只取奇数位 u16 的数据做处理。
只是之前测试的时候发现,我硬件上只接了一个通道的 PDM MIC,但不论取奇数位,还是偶数位的 u16,好像都有效果(都可以体现模拟信号值)
我现在按照 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 1 guest