Riguz留言 | 贡献
创建页面,内容为“= Hardware connection = 小智AI终端DIY面包板WIFI-LCD彩屏接线教程<ref>https://rcnv1t9vps13.feishu.cn/wiki/Zq62wST38iuNxZkwg9JcjkSSnSd</ref> 电源和地线: * 将MAX98357A的VCC引脚连接到ESP32-S3的3.3V输出。 * 将MAX98357A的GND引脚连接到ESP32-S3的GND。 ​I2S信号线: ​* BCLK:ESP32-S3的I2S位时钟引脚(如GPIO2)→ MAX98357A的BCLK。 ​* LRC/WS:ESP32-S3的I2S左右声道时钟引脚(如GPIO1)→ MAX98357A…”
 
Riguz留言 | 贡献
 
(未显示同一用户的3个中间版本)
第3行: 第3行:
小智AI终端DIY面包板WIFI-LCD彩屏接线教程<ref>https://rcnv1t9vps13.feishu.cn/wiki/Zq62wST38iuNxZkwg9JcjkSSnSd</ref>
小智AI终端DIY面包板WIFI-LCD彩屏接线教程<ref>https://rcnv1t9vps13.feishu.cn/wiki/Zq62wST38iuNxZkwg9JcjkSSnSd</ref>


电源和地线:
* VCC: 3.3v
* 将MAX98357A的VCC引脚连接到ESP32-S3的3.3V输出。
* GND: GND
* 将MAX98357A的GND引脚连接到ESP32-S3的GND。
* BCLK: I2S位时钟引脚,GPIO 15
* LRC: I2S左右声道时钟引脚,GPIO 16
* DIN: I2S数据输出引脚,GPIO 7
* SD: 悬空
* GAIN: 悬空(默认3dB增益)或接3.3V(15dB增益)。


​I2S信号线:
= I2s =
​* BCLK:ESP32-S3的I2S位时钟引脚(如GPIO2)→ MAX98357A的BCLK。
​* LRC/WS:ESP32-S3的I2S左右声道时钟引脚(如GPIO1)→ MAX98357A的LRC。
​* DOUT:ESP32-S3的I2S数据输出引脚(如GPIO3)→ MAX98357A的DIN。


​控制引脚:
<syntaxhighlight lang="cpp">
​* SD​(关断控制):连接到3.3V(保持高电平以启用芯片)。
 
​*GAIN:悬空(默认3dB增益)或接3.3V(15dB增益)。
#define I2S_BCLK 15
#define I2S_LRC 16
#define I2S_DOUT 7
 
static void configure_speaker()
{
    i2s_config_t i2s_config = {
        .mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX),
        .sample_rate = 44100,
        .bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT,
        .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT,
        .communication_format = I2S_COMM_FORMAT_STAND_I2S,
        .intr_alloc_flags = 0,
        .dma_buf_count = 8,
        .dma_buf_len = 64,
        .use_apll = false,
        .tx_desc_auto_clear = true};
 
    i2s_pin_config_t pin_config = {
        .bck_io_num = I2S_BCLK,
        .ws_io_num = I2S_LRC,
        .data_out_num = I2S_DOUT,
        .data_in_num = I2S_PIN_NO_CHANGE};
 
    i2s_driver_install(I2S_NUM_0, &i2s_config, 0, NULL);
    i2s_set_pin(I2S_NUM_0, &pin_config);
}
</syntaxhighlight>
 
Play test sound:
 
<syntaxhighlight lang="cpp">
 
void generate_test_sound()
{
    size_t bytes_written;
    for (uint32_t i = 0; i < audio_length; i++) {
        // 从Flash读取数据(无需pgmspace.h)
        int16_t sample;
        memcpy(&sample, &audio_data[i], sizeof(sample)); // 安全读取方式
 
        // 发送立体声数据
        int16_t stereo_sample[2] = {sample, sample};
        i2s_write(I2S_NUM_0, stereo_sample, sizeof(stereo_sample), &bytes_written, portMAX_DELAY);
    }
}
</syntaxhighlight>
 
[[Category:Embedded]]
[[Category:ESP32]]

2025年3月30日 (日) 13:43的最新版本

Hardware connection

小智AI终端DIY面包板WIFI-LCD彩屏接线教程[1]

  • VCC: 3.3v
  • GND: GND
  • BCLK: I2S位时钟引脚,GPIO 15
  • LRC: I2S左右声道时钟引脚,GPIO 16
  • DIN: I2S数据输出引脚,GPIO 7
  • SD: 悬空
  • GAIN: 悬空(默认3dB增益)或接3.3V(15dB增益)。

I2s

#define I2S_BCLK 15
#define I2S_LRC 16
#define I2S_DOUT 7

static void configure_speaker()
{
    i2s_config_t i2s_config = {
        .mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX),
        .sample_rate = 44100,
        .bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT,
        .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT,
        .communication_format = I2S_COMM_FORMAT_STAND_I2S,
        .intr_alloc_flags = 0,
        .dma_buf_count = 8,
        .dma_buf_len = 64,
        .use_apll = false,
        .tx_desc_auto_clear = true};

    i2s_pin_config_t pin_config = {
        .bck_io_num = I2S_BCLK,
        .ws_io_num = I2S_LRC,
        .data_out_num = I2S_DOUT,
        .data_in_num = I2S_PIN_NO_CHANGE};

    i2s_driver_install(I2S_NUM_0, &i2s_config, 0, NULL);
    i2s_set_pin(I2S_NUM_0, &pin_config);
}

Play test sound:

void generate_test_sound()
{
    size_t bytes_written;
    for (uint32_t i = 0; i < audio_length; i++) {
        // 从Flash读取数据(无需pgmspace.h)
        int16_t sample;
        memcpy(&sample, &audio_data[i], sizeof(sample)); // 安全读取方式

        // 发送立体声数据
        int16_t stereo_sample[2] = {sample, sample};
        i2s_write(I2S_NUM_0, stereo_sample, sizeof(stereo_sample), &bytes_written, portMAX_DELAY);
    }
}