音频-扬声器和麦克风

devtools/2025/1/11 19:41:43/

首先,我们先介绍一下音频芯片:开发板上带有一个麦克风,一个扬声器,音频编解码芯片使用ES8311。麦克风直接连接到了ES8311芯片上,ES8311和扬声器之间,还有一个音频驱动放大器。ES8311通过I2S接口与ESP32-C3连接。

ES8311这个芯片不仅使用I2S接口与ESP32连接,还有I2C接口与ESP32连接,I2C接口用于配置,I2S接口用于音频传输

点击打开example_config.h文件,I2C引脚相关代码在它24~35行之间,这里使用了条件编译,根据使用的ESP32不同型号,定义I2C引脚。针对开发板上ESP32-C3,应该修改它的33、34行,修改为开发板上使用的GPIO0和GPIO1引脚

#define I2C_SCL_IO      (GPIO_NUM_1)
#define I2C_SDA_IO      (GPIO_NUM_0)

I2S引脚相关代码在它的37~48之间,然后先修改39~41行

#define I2S_MCK_IO      (GPIO_NUM_10)
#define I2S_BCK_IO      (GPIO_NUM_8)
#define I2S_WS_IO       (GPIO_NUM_12)

然后修改46、47行,改完以后I2S的5个引脚就修改好了

#define I2S_DO_IO       (GPIO_NUM_11)
#define I2S_DI_IO       (GPIO_NUM_7)

特别要注意I2S引脚当中的GPIO11,这个引脚目前还是VDD_SPI引脚,默认是一个电源引脚,输出3.3V,需要把它变成GPIO11才可以使用,这个变化是不可逆的,变成GPIO11以后,就不能再变成VDD_SPI引脚,注意,如果这个引脚用作VDD_SPI给外部FLASH供电,千万不要把它搞成GPIO11,否则就得换芯片了,现在用的开发板上只把它用做GPIO11,I2S_DO引脚,把它变成GPIO11,需要调用一个函数即可

    printf("ESP_EFUSE_VDD_SPI_AS_GPIO start\n-----------------------------\n");esp_efuse_write_field_bit(ESP_EFUSE_VDD_SPI_AS_GPIO);

把上面两行代码放到app_main函数的最开始处。第一行语句是提示,第二行代码是把VDD_SPI引脚变成GPIO引脚的函数。使用这个函数,需要调用esp_efuse_table.h头文件

#include "esp_efuse_table.h"

接下来,还有一个引脚需要控制,就是音频放大器芯片NS4150B的EN引脚,这个引脚连接到了ESP32-C3的GPIO13,这个引脚通过下拉电阻接地,低电平关闭音频输出,高电平打开音频输出,这里需要把这个引脚变成高电平才可以

/* 初始化PA芯片NS4150B控制引脚 低电平关闭音频输出 高电平允许音频输出 */gpio_config_t io_conf = {.intr_type = GPIO_INTR_DISABLE, //disable interrupt.mode = GPIO_MODE_OUTPUT, //set as output mode.pin_bit_mask = 1<<13, //bit mask of the pins.pull_down_en = 0, //disable pull-down mode.pull_up_en = 1, //enable pull-up mode};//configure GPIO with the given settingsgpio_config(&io_conf);gpio_set_level(GPIO_NUM_13, 1); // 输出高电平

把上面的代码,放到app_main函数中,就放到刚才添加的两行控制VDD_SPI引脚代码后面就可以

直到这里,代码就修改完毕了,接下来应该配置好左下角的串口号、芯片型号、menuconfig等

注意,配置menuconfig之前,一定要先选好芯片型号,否则menuconfig的内容会被复位,还得在配置一下。所以我们先把芯片配置成esp32-c3,然后打开menuconfig配置。这里需要配置两个地方,一个是FLASH容量改成8MB,另外一个是Example Configuration

Example Configuration这里的Example mode有两种,一种是music音乐播放模式,另外一种是echo回声模式,这里先选music音乐模式,Voice volume是声音大小,改成80。改好后点击保存,然后关闭

然后编译下载到我们的开发板,就可以听到扬声器播放声音了。这里播放的声音是canon.pcm这个文件的声音。

同时,串口终端会输出:
I (10340) i2s_es8311: [music] i2s music played, 634240 bytes are written.

以上是音乐播放,接下来测试麦克风输入,这个只需要在menuconfig中把模式修改为echo回声模式就可以了

把Example mode修改为echo之后,在Set MIC gain这里修改麦克风的增益为0dB,再大的话,可能会引起啸叫,最后把Voice volume修改为80,就是扬声器的声音,然后保存,关闭

编译下载后,我们对着开发板说话,会在扬声器里面听到自己的声音。麦克风位于USB接口的左边。

注意:把VDD_SPI引脚修改为GPIO11的那条代码,只需要执行一次就可以,执行一次以后,就把它注释掉


http://www.ppmy.cn/devtools/149684.html

相关文章

[读书日志]从零开始学习Chisel 第十一篇:Scala的类型参数化(敏捷硬件开发语言Chisel与数字系统设计)

8.Scala的类型参数化 8.1 var类型的字段 对于可重新赋值的字段&#xff0c;可以执行两个基本操作&#xff0c;获取字段值或设置为一个新值。如果在类中定义了一个var类型的字段&#xff0c;那么编译器会把这个变量限制为private[this]&#xff0c;同时隐式地定义一个名为变量…

npm run 运行项目报错:Cannot resolve the ‘pnmp‘ package manager

尝试使用 npm 运行一个项目&#xff0c;但是在解析 pnmp 包管理器时遇到了问题。这通常意味着项目可能配置错误&#xff0c;或者可能误输入了命令。 解决方法&#xff1a; 确认是否有拼写错误。通常情况下&#xff0c;应该是 npm 而不是 pnmp。 检查项目的 package.json 文件&…

安装rocketmq dashboard

1、访问如下地址&#xff1a; GitHub - apache/rocketmq-dashboard: The state-of-the-art Dashboard of Apache RoccketMQ provides excellent monitoring capability. Various graphs and statistics of events, performance and system information of clients and applica…

从excel提取和过滤数据到echarts中绘制图

主页面 介绍 echarts的事例页面,导入数据比较麻烦,此项目从excel中提取数据(含过滤数据),以注入页面. 代码说明 所有的需要从excel中读取的参数,从代码中替换.需以{{data}} 包含在内使用绘制参数的解析代码参数可以解析出来所有参数数据配置上传文件后,可以选择列数据过滤条…

Win10微调大语言模型ChatGLM2-6B

在《Win10本地部署大语言模型ChatGLM2-6B-CSDN博客》基础上进行&#xff0c;官方文档在这里&#xff0c;参考了这篇文章 首先确保ChatGLM2-6B下的有ptuning AdvertiseGen下载地址1&#xff0c;地址2&#xff0c;文件中数据留几行 模型文件下载地址 &#xff08;注意&#xff1…

高级软件工程-复习

高级软件工程复习 坐标国科大&#xff0c;下面是老师说的考试重点。 Ruby编程语言的一些特征需要了解要能读得懂Ruby程序Git的基本命令操作知道Rails的MVC工作机理需要清楚&#xff0c;Model, Controller, View各司什么职责明白BDD的User Story需要会写&#xff0c;SMART要求能…

Stable diffusion的SDXL模型,针不错!(含实操)

与之前的SD1.5大模型不同&#xff0c;这次的SDXL在架构上采用了“两步走”的生图方式&#xff1a; 以往SD1.5大模型&#xff0c;生成步骤为 Prompt → Base → Image&#xff0c;比较简单直接&#xff1b;而这次的SDXL大模型则是在中间加了一步 Refiner。Refiner的作用是什么呢…

2025年01月09日Github流行趋势

1. 项目名称&#xff1a;khoj 项目地址url&#xff1a;https://github.com/khoj-ai/khoj项目语言&#xff1a;Python历史star数&#xff1a;22750今日star数&#xff1a;1272项目维护者&#xff1a;debanjum, sabaimran, MythicalCow, aam-at, eltociear项目简介&#xff1a;你…