立创开发板入门ESP32C3第六课 音频-扬声器和麦克风 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(正极), SCL,SDA,GND(负极),所以需要定义的只有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(对于立体声

### 关于实战派 ESP32-C3 的教程项目 #### 初步设置与环境配置 为了开始使用实战派 ESP32-C3 进行开发,首先需要安装必要的软件工具链。推荐使用 Arduino IDE 或者 PlatformIO 来编写程序并上传到设备上[^1]。 #### 示例项目一:LED 控制实验 这是一个简单的入门级例子,通过控制板载 LED 学习 GPIO 操作的基础知识。 ```cpp // 定义使用的引脚编号为 GPIO 8 (板载红色指示灯) const int ledPin = 8; void setup() { pinMode(ledPin, OUTPUT); // 设置引脚模式为输出 } void loop() { digitalWrite(ledPin, HIGH); // 打开 LED delay(1000); // 延迟一秒 digitalWrite(ledPin, LOW); // 关闭 LED delay(1000); } ``` #### 示例项目二:Wi-Fi 连接测试 利用 ESP32-C3 内置的强大无线功能连接至 Wi-Fi 网络,并打印 IP 地址作为确认。 ```cpp #include <WiFi.h> const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; void setup(){ Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED){ delay(1000); Serial.println("Connecting to WiFi..."); } Serial.print("Connected! IP address: "); Serial.println(WiFi.localIP()); } void loop(){} ``` #### 示例项目三:HTTP 请求发送器 此案例展示了如何让 ESP32-C3 发送 HTTP GET 请求给指定服务器获取数据。 ```cpp #include <WiFi.h> #include <HTTPClient.h> const char *ssid = "your_SSID"; const char *password = "your_PASSWORD"; void setup() { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi.."); } Serial.println("Connected!"); if (HTTP.begin("http://jsonplaceholder.typicode.com/posts/1")) { // 替换成实际API地址 int httpCode = HTTP.GET(); if (httpCode > 0) { String payload = HTTP.getString(); Serial.println(httpCode); Serial.println(payload); } else { Serial.printf("Error on sending GET request: %s\n", HTTP.errorToString(httpCode).c_str()); } HTTP.end(); } } void loop() {} ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值