esp32inmp441
时间: 2025-01-03 18:42:19 浏览: 17
### ESP32与INMP441麦克风模块集成指南
#### 硬件连接
为了使ESP32能够成功读取来自INMP441麦克风的数据,硬件连接至关重要。下表展示了如何将这两者通过I2S接口相连:
| ESP32 Pin | INMP441 Pin |
|-----------|-------------|
| GND | GND |
| 3V3 (OUT) | VDD |
| GPIO26 | BCLK |
| GPIO25 | DIN |
| GPIO22 | LRCLK |
请注意,在某些开发板上可能需要调整GPIO引脚编号来匹配实际可用的引脚配置[^1]。
#### 软件设置
对于软件部分而言,初始化过程涉及到了Arduino IDE中的特定库文件以及相应的参数设定。下面是一段用于启动并配置I2S通信协议以便于收集音频样本的基础代码片段:
```cpp
#include "driver/i2s.h"
#define I2S_NUM I2S_NUM_0
#define SAMPLE_RATE (22050)
void setup() {
// 设置I2S模式为只接收数据
i2s_config_t i2s_config = {
.mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_RX),
.sample_rate = SAMPLE_RATE,
.bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT,
.channel_format = I2S_CHANNEL_FMT_ONLY_LEFT,
.communication_format = I2S_COMM_FORMAT_I2S_MSB,
.intr_alloc_flags = 0,
.dma_buf_count = 8,
.dma_buf_len = 64,
.use_apll = false,
.tx_desc_auto_clear = true,
.fixed_mclk = 0};
// 安装驱动程序并创建队列
i2s_driver_install(I2S_NUM, &i2s_config, 0, NULL);
// 配置引脚映射关系
i2s_pin_config_t pin_config;
pin_config.bck_io_num = 26;
pin_config.ws_io_num = 22;
pin_config.data_out_num = I2S_PIN_NO_CHANGE;
pin_config.data_in_num = 25;
i2s_set_pin(I2S_NUM, &pin_config);
}
```
此段代码实现了基本的功能框架搭建工作,即定义了采样率、位宽以及其他必要的属性,并指定了具体的物理引脚分配方案[^2]。
#### 数据处理循环
一旦完成了上述准备工作之后,则可以在`loop()`函数内部加入如下所示的内容来进行持续性的声音捕捉操作:
```cpp
void loop(){
size_t bytes_read;
static int16_t sampleBuffer[64];
while(i2s_read(I2S_NUM,sampleBuffer,sizeof(sampleBuffer),&bytes_read,portMAX_DELAY)==ESP_OK){
// 对获取到的声音信号做进一步分析或传输给其他设备...
Serial.printf("Read %d bytes\n", bytes_read);
}
}
```
这段逻辑会不断尝试从I2S总线上拉取新的音频帧直到遇到错误为止;每次接收到有效负载后都会打印出所获得字节数量作为调试信息的一部分。
阅读全文