• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
MKT-porter
博客园    首页    新随笔    联系   管理    订阅  订阅
esp32(1)声音控制基本代码

 

ESP-32开发板WIFI+蓝牙2合1双核CPU低功耗ESP32 ESP-32S

https://item.taobao.com/item.htm?_u=h1qf7bf56b34&id=559516521103&pisk=gkmg9hAyuVz1V5dLJDZ65zKft28KBlZj0jIYMoF28WPBhNQ9CryqnjmxWxPYmjcmi5U21lnmtYMvCmp_bn2qwXqxB5FxtKcthid6llIVifMy1AFvCmV4tfl0ldNYgScx3Vpp23HsCoZ4iQKJ258omrGGb-z23Wy_EpewdV-qzoZ2wIbd0Ptucf5YDX5V8JPQn-54QjPEL8yg0-ya0pVUn8_V_jl2Kyy83-74urWUL8FF7N7aQk7Ue-eaQoPwKvPQnR5ZgoJ3YWwqH_S4ZmoIYIqIQ6trcHGYIPVrQ5kteDRYnNMLtmnoYRD14vPHppn3IPVzu25iTclK3cn_RQfzcv3oiqlXywZi3VraeAtGxukZJm2KDKQ0_finLcahFgZm7f04P2x5PPz0s2oa-tSqdk0ngqcMsNNZWX47LyWDVJh8TAiZ-K1EQbFgbJzp4LDUu2n_PcdFjuuSBl3qGUQQjxuaxgol8a5aEiweHD7flPyQK7EjbmjeViinnpvhPHzadRtHKpbjRPyQKHvHKaRg7Jwaf&spm=a1z09.2.0.0.20f82e8dYaPasL

 

 

INMP441全向麦克风模块 MEMS 高精度 低功耗 I2S接口支持ESP32-S3

 

接口定义:

SCK:I²S接口的串行数据时钟

WS :用于I²S接口的串行数据字选择

L/R:左/右声道选择。一般接地

设置为低电平时,麦克风在I²S帧的左声道输出信号。

设置为高电平时,麦克风在右声道输出信号

SD:I²S接口的串行数据输出。

VCC:输入电源,1.8V至3.3V.

GND:电源地

 只是参考不同的板子接线不一样

 

 

 INMP441      ESP32开发板

  1. #define I2S_MIC_WS 25   // INMP441 WS (LRCLK)
    #define I2S_MIC_SD 33   // INMP441 SD (DOUT)
    #define I2S_MIC_SCK 32  // INMP441 SCK (BCLK)
  2. L/R    >> GND
  3. GND   >> GND
  4. VDD   >> VDD3.3

 

MAX98357 I2S 音频放大器模块 无滤波D类放大支持ESP32-S3 树莓pi

 

 

 

 

 

代码

 

#include <driver/i2s.h>

// 引脚定义
#define I2S_MIC_WS 25   // INMP441 WS (LRCLK)
#define I2S_MIC_SD 33   // INMP441 SD (DOUT)
#define I2S_MIC_SCK 32  // INMP441 SCK (BCLK)

#define I2S_SPK_WS 26   // MAX98357 LRCLK
#define I2S_SPK_DOUT 27 // MAX98357 DIN
#define I2S_SPK_BCLK 14 // MAX98357 BCLK

// I2S配置
#define SAMPLE_RATE 44100
#define SAMPLE_BITS 16
#define BUFFER_SIZE 1024

void setup() {
  Serial.begin(115200);
  
  // 初始化I2S麦克风输入
  i2s_config_t mic_i2s_config = {
    .mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_RX),
    .sample_rate = SAMPLE_RATE,
    .bits_per_sample = (i2s_bits_per_sample_t)SAMPLE_BITS,
    .channel_format = I2S_CHANNEL_FMT_ONLY_LEFT,
    .communication_format = I2S_COMM_FORMAT_STAND_I2S,
    .intr_alloc_flags = ESP_INTR_FLAG_LEVEL1,
    .dma_buf_count = 8,
    .dma_buf_len = BUFFER_SIZE,
    .use_apll = false,
    .tx_desc_auto_clear = false,
    .fixed_mclk = 0
  };
  
  i2s_pin_config_t mic_pin_config = {
    .mck_io_num = I2S_PIN_NO_CHANGE,
    .bck_io_num = I2S_MIC_SCK,
    .ws_io_num = I2S_MIC_WS,
    .data_out_num = I2S_PIN_NO_CHANGE,
    .data_in_num = I2S_MIC_SD
  };
  
  i2s_driver_install(I2S_NUM_0, &mic_i2s_config, 0, NULL);
  i2s_set_pin(I2S_NUM_0, &mic_pin_config);
  
  // 初始化I2S扬声器输出
  i2s_config_t spk_i2s_config = {
    .mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX),
    .sample_rate = SAMPLE_RATE,
    .bits_per_sample = (i2s_bits_per_sample_t)SAMPLE_BITS,
    .channel_format = I2S_CHANNEL_FMT_ONLY_LEFT,
    .communication_format = I2S_COMM_FORMAT_STAND_I2S,
    .intr_alloc_flags = ESP_INTR_FLAG_LEVEL1,
    .dma_buf_count = 8,
    .dma_buf_len = BUFFER_SIZE,
    .use_apll = false,
    .tx_desc_auto_clear = false,
    .fixed_mclk = 0
  };
  
  i2s_pin_config_t spk_pin_config = {
    .mck_io_num = I2S_PIN_NO_CHANGE,
    .bck_io_num = I2S_SPK_BCLK,
    .ws_io_num = I2S_SPK_WS,
    .data_out_num = I2S_SPK_DOUT,
    .data_in_num = I2S_PIN_NO_CHANGE
  };
  
  i2s_driver_install(I2S_NUM_1, &spk_i2s_config, 0, NULL);
  i2s_set_pin(I2S_NUM_1, &spk_pin_config);
  
  Serial.println("I2S初始化完成,开始音频回环...");
}

void loop() {
  int16_t audio_buffer[BUFFER_SIZE];
  size_t bytes_read;
  
  // 从麦克风读取数据
  i2s_read(I2S_NUM_0, audio_buffer, sizeof(audio_buffer), &bytes_read, portMAX_DELAY);
  
  // 将数据写入扬声器
  size_t bytes_written;
  i2s_write(I2S_NUM_1, audio_buffer, bytes_read, &bytes_written, portMAX_DELAY);
  
  // 可选:打印一些调试信息
  static unsigned long last_print = 0;
  if (millis() - last_print > 1000) {
    Serial.printf("音频处理中... 缓冲区大小: %d\n", bytes_read);
    last_print = millis();
  }
}

  

 

posted on 2025-07-17 12:11  MKT-porter  阅读(94)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3