阿里巴巴做网站的,全球搜 建设网站,品牌建设与品牌推广,化妆品销售网站开发与设计音频芯片介绍
开发板上带有一个麦克风#xff0c;一个扬声器#xff0c;音频编解码芯片使用ES8311。麦克风直接连接到了ES8311芯片上#xff0c;ES8311和扬声器之间#xff0c;还有一个音频驱动放大器。ES8311通过I2S接口与ESP32-C3连接。
ES8311这个芯片不仅使用I2S接口…音频芯片介绍
开发板上带有一个麦克风一个扬声器音频编解码芯片使用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引脚。
I2C共四个接线VCC正极, SCLSDAGND负极所以需要定义的只有SCL和SDA。
/* I2C端口和GPIO */
#define I2C端口号 (0)
#define I2C_串行时钟线 (GPIO_NUM_1)
#define I2C_串行数据线 (GPIO_NUM_0)
I2S引脚相共五个接线MCK主时钟引脚BCK时钟引脚WS左右声道引脚SDI串行数据输入引脚用于接收音频数据SDO串行数据输出引脚用于发送音频数据
例如 44.1kHz(音频的采样频率)×16(位数据×2(对于立体声由WS决定1.4112MHzBCK然后MCK通常是BCK的整数倍 256 倍或 384 倍等例如1。4112MHz x 256 ≈361.27MHz
关代码在它的37~48之间。 先修改39~41行。
/* I2S端口和GPIO */
#define I2S端口号 (0) //I2S_NUM
#define I2S_主时钟线 (GPIO_NUM_10)
#define I2S_位时钟线 (GPIO_NUM_8)
#define I2S_帧同步线 (GPIO_NUM_12)
#define I2S_数据输出线 (GPIO_NUM_11)
#define I2S_数据输入线 (GPIO_NUM_7) main文件块区
1、换VDD_SPI引脚替换成GPIO11。
开发板上只把它用做GPIO11I2S_DO引脚。把它变成GPIO11需要调用一个函数即可。
printf(ESP电子熔丝VDD-SPI作为GPIO开始\n-----------------------------\n);
esp_efuse_write_field_bit(ESP_EFUSE_VDD_SPI_AS_GPIO);
第一行语句是提示第二行代码是把VDD_SPI引脚变成GPIO引脚的函数只需要运行一次就可以将上面的两行代码注释起来。 2、音频放大器芯片配置
gpio_config_t io_conf {.intr_type GPIO_INTR_DISABLE, // 禁止中断.mode GPIO_MODE_OUTPUT, // 设置为输出模式.pin_bit_mask 1 13, // 引脚的位掩模.pull_down_en 0, // 禁用下拉模式.pull_up_en 1, // 启用上拉模式};//使用给定设置配置GPIOgpio_config(io_conf);gpio_set_level(GPIO_NUM_13, 1); // 输出高电平
3、i2s es8311编解码器
printf(i2s es8311编解码器示例启动\n-----------------------------\n);/* 初始化i2s外设 */if (i2s_driver_init() ! ESP_OK) {ESP_LOGE(标签, i2s驱动初始化失败);abort();} else {ESP_LOGI(标签, i2s驱动初始化成功);}/* 初始化i2c外设并通过i2c配置es8311编解码器 */if (es8311_codec_init() ! ESP_OK) {ESP_LOGE(标签, es8311编解码器初始化失败);abort();} else {ESP_LOGI(标签, es8311编解码器初始化成功);} 4、选择是播音乐还是测试麦克风的回声机。
#if CONFIG_EXAMPLE_MODE_MUSIC/* 在音乐模式下播放一段音乐 */xTaskCreate(i2s_music, i2s_music, 4096, NULL, 5, NULL);
#else/* 在回声模式下回声来自MIC的声音 */xTaskCreate(i2s_echo, i2s_echo, 8192, NULL, 5, NULL);
#endif
5、在源码的开头引入的头文件等接下来是变量命名和导入音乐文件作为缓冲区然后是对应子程序的设计。