# 立创实战派ESP32-S3开发板 硬件资源与GPIO分配

> 文档版本：v1.0  
> 更新日期：2026-04-12  
> 备注：本文档基于公开资料整理，具体以官方最新版本为准

---

## 1. 开发板概述

### 1.1 硬件配置

立创实战派ESP32-S3是一款基于乐鑫ESP32-S3-WROOM-1模组的开发板，板载丰富外设资源，适合学习嵌入式AI和物联网开发。

| 资源类别 | 具体配置 |
|---------|---------|
| **主控芯片** | ESP32-S3-WROOM-1 (Xtensa LX7 双核 @ 240MHz) |
| **内存** | 2MB PSRAM |
| **存储** | 16MB Flash |
| **无线通信** | WiFi 802.11 b/g/n + Bluetooth 5.0 |
| **USB** | USB Type-C (下载/调试) |
| **输入电压** | 5V USB供电 / 5-12V DC电源接口 |

### 1.2 板载外设

| 外设 | 型号 | 通信接口 |
|------|------|---------|
| **摄像头** | OV2640 (200万像素) | DVP 8-bit |
| **麦克风** | INMP441 (I2S数字麦克风) | I2S |
| **加速度计** | SC7A20 | I2C |
| **LCD屏幕** | ST7789 (1.3寸 240x240) | SPI |
| **LED** | RGB LED x1 + 单色LED x1 | GPIO |
| **按钮** | BOOT按钮 + RESET按钮 | GPIO0 / EN |

---

## 2. ESP32-S3芯片 GPIO分布

### 2.1 GPIO引脚功能一览

```
ESP32-S3 GPIO引脚分配（按区域分组）：

    区域A (左侧)              区域B (右侧)
    ┌─────────────┐          ┌─────────────┐
    │  GPIO0  ●  │          │ ● GPIO48   │
    │  GPIO1  ●  │          │ ● GPIO47   │
    │  GPIO2  ●  │          │ ● GPIO46   │
    │  GPIO3  ●  │          │ ● GPIO45   │
    │  GPIO4  ●  │          │ ● GPIO44   │
    │  GPIO5  ●  │          │ ● GPIO43   │
    │  GPIO6  ●  │          │ ● GPIO42   │
    │  GPIO7  ●  │          │ ● GPIO41   │
    │  GPIO8  ●  │          │ ● GPIO40   │
    │  GPIO9  ●  │          │ ● GPIO39   │
    │ GPIO10  ●  │          │ ● GPIO38   │
    │ GPIO11  ●  │          │ ● GPIO37   │
    │ GPIO12  ●  │          │ ● GPIO36   │
    │ GPIO13  ●  │          │ ● GPIO35   │
    │ GPIO14  ●  │          │ ● GPIO34   │
    │ GPIO15  ●  │          │ ● GPIO33   │
    │ GPIO16  ●  │          │ ● GPIO32   │
    │ GPIO17  ●  │          │ ● GPIO21   │
    │ GPIO18  ●  │          │ ● GPIO20   │
    │ GPIO19  ●  │          │ ● GPIO19   │
    │ GPIO20  ●  │          │ ● GPIO18   │
    │ GPIO21  ●  │          │ ● GPIO17   │
    └─────────────┘          └─────────────┘
```

### 2.2 特殊GPIO说明

| GPIO | 特殊功能 | 注意事项 |
|------|---------|---------|
| GPIO0 | BOOT按钮 | 上电时拉低进入下载模式 |
| GPIO1 | TXD0 | 串口0发送 |
| GPIO3 | RXD0 | 串口0接收 |
| GPIO45 | GPIO46 | 仅输入 |
| GPIO46 | Strapping引脚 | 上电时电平影响启动模式 |
| GPIO47 | Strapping引脚 | 上电时电平影响启动模式 |
| GPIO48 | RGB LED数据引脚 | 板载WS2812B |

### 2.3 I2C默认引脚

| 引脚 | 功能 | 说明 |
|------|------|------|
| GPIO1 | I2C SCL | 默认I2C时钟 |
| GPIO2 | I2C SDA | 默认I2C数据 |

> 注意：ESP32-S3支持任意GPIO配置为I2C，以上仅为默认配置

---

## 3. 板载外设GPIO分配

### 3.1 摄像头接口 (OV2640)

| 功能 | GPIO | 说明 |
|------|------|------|
| XCLK | GPIO15 | 摄像头时钟输出 |
| PCLK | GPIO16 | 像素时钟 |
| VSYNC | GPIO17 | 垂直同步 |
| HREF | GPIO18 | 水平参考 |
| D0 | GPIO38 | 数据位0 |
| D1 | GPIO39 | 数据位1 |
| D2 | GPIO40 | 数据位2 |
| D3 | GPIO41 | 数据位3 |
| D4 | GPIO42 | 数据位4 |
| D5 | GPIO43 | 数据位5 |
| D6 | GPIO44 | 数据位6 |
| D7 | GPIO45 | 数据位7 |
| SDA | GPIO13 | SCCB I2C数据 |
| SCL | GPIO12 | SCCB I2C时钟 |
| PWDN | GPIO1 | 摄像头电源控制(低电平有效) |
| RESET | GPIO2 | 摄像头复位(低电平有效) |

### 3.2 麦克风接口 (INMP441)

| 功能 | GPIO | 说明 |
|------|------|------|
| WS | GPIO14 | 频道选择(Word Select) |
| SCK | GPIO16 | 串行时钟 |
| SD | GPIO15 | 串行数据输出 |

### 3.3 加速度计接口 (SC7A20)

| 功能 | GPIO | 说明 |
|------|------|------|
| SDA | GPIO33 | I2C数据 |
| SCL | GPIO34 | I2C时钟 |
| INT1 | GPIO35 | 中断引脚1 |
| INT2 | GPIO36 | 中断引脚2 |

### 3.4 LCD屏幕接口 (ST7789 1.3寸)

| 功能 | GPIO | 说明 |
|------|------|------|
| SDA/MOSI | GPIO11 | SPI数据 |
| SCL/SCK | GPIO12 | SPI时钟 |
| CS | GPIO10 | 片选 |
| DC | GPIO8 | 数据/命令选择 |
| RST | GPIO9 | 复位 |
| BL | GPIO3 | 背光控制(PWM) |

### 3.5 LED指示灯

| 功能 | GPIO | 说明 |
|------|------|------|
| RGB_DI | GPIO48 | RGB LED数据输入(WS2812B) |
| LED_B | GPIO37 | 蓝色LED (低电平亮) |
| LED_G | GPIO38 | 绿色LED (低电平亮) |
| LED_R | GPIO40 | 红色LED (低电平亮) |

### 3.6 按钮

| 功能 | GPIO | 说明 |
|------|------|------|
| BOOT | GPIO0 | 下载模式按钮 |
| KEY | GPIO47 | 用户自定义按钮 |

---

## 4. 完整GPIO分配表

### 4.1 默认GPIO分配

| GPIO | 功能 | 外设 | 说明 |
|------|------|------|------|
| GPIO0 | BOOT | 按钮 | 下载模式按钮 |
| GPIO1 | TXD0 | 串口 | 调试串口发送 |
| GPIO2 | I2C_SDA | I2C | 默认I2C数据 |
| GPIO3 | LCD_BL | PWM | LCD背光控制 |
| GPIO4 | - | - | 通用GPIO |
| GPIO5 | - | - | 通用GPIO |
| GPIO6 | - | - | 通用GPIO |
| GPIO7 | - | - | 通用GPIO |
| GPIO8 | LCD_DC | SPI | LCD数据/命令选择 |
| GPIO9 | LCD_RST | SPI | LCD复位 |
| GPIO10 | LCD_CS | SPI | LCD片选 |
| GPIO11 | LCD_MOSI | SPI | LCD数据 |
| GPIO12 | LCD_SCK | SPI | LCD时钟 |
| GPIO13 | CAM_SDA | SCCB | 摄像头I2C数据 |
| GPIO14 | MIC_WS | I2S | 麦克风频道选择 |
| GPIO15 | CAM_XCLK | CAM | 摄像头时钟 |
| GPIO16 | MIC_SCK | I2S | 麦克风时钟 |
| GPIO17 | CAM_VSYNC | CAM | 摄像头垂直同步 |
| GPIO18 | CAM_HREF | CAM | 摄像头水平参考 |
| GPIO19 | - | - | 通用GPIO |
| GPIO20 | - | - | 通用GPIO |
| GPIO21 | I2C_SCL | I2C | 默认I2C时钟 |
| GPIO32 | ACCEL_SDA | I2C | 加速度计I2C数据 |
| GPIO33 | ACCEL_SCL | I2C | 加速度计I2C时钟 |
| GPIO34 | ACCEL_INT2 | 中断 | 加速度计中断2 |
| GPIO35 | ACCEL_INT1 | 中断 | 加速度计中断1 |
| GPIO36 | - | - | 通用GPIO |
| GPIO37 | LED_G | LED | 绿色LED |
| GPIO38 | CAM_D2 | CAM | 摄像头数据2 |
| GPIO39 | CAM_D3 | CAM | 摄像头数据3 |
| GPIO40 | CAM_D4 | CAM | 摄像头数据4 |
| GPIO41 | CAM_D5 | CAM | 摄像头数据5 |
| GPIO42 | CAM_D6 | CAM | 摄像头数据6 |
| GPIO43 | CAM_D7 | CAM | 摄像头数据7 |
| GPIO44 | CAM_D8 | CAM | 摄像头数据8 |
| GPIO45 | CAM_D9 | CAM | 摄像头数据9 |
| GPIO46 | - | - | 仅输入GPIO |
| GPIO47 | KEY | 按钮 | 用户按钮 |
| GPIO48 | RGB_DI | LED | RGB LED数据 |

### 4.2 外设复用关系

```
┌─────────────────────────────────────────────────────────────────┐
│                        GPIO复用关系图                            │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  I2C总线 (默认)            SPI总线(LCD)        I2S总线(麦克风)  │
│  ├─ GPIO2 (SDA)           ├─ GPIO10 (CS)       ├─ GPIO14 (WS)  │
│  └─ GPIO21 (SCL)          ├─ GPIO11 (MOSI)     ├─ GPIO16 (SCK) │
│                            └─ GPIO12 (SCK)     └─ GPIO15 (SD)  │
│                                                                  │
│  摄像头DVP接口                                                  │
│  ├─ GPIO13 (SDA)  ├─ GPIO17 (VSYNC)  ├─ GPIO38-45 (D0-D7)    │
│  └─ GPIO12 (SCL)  ├─ GPIO18 (HREF)    └─ GPIO15 (XCLK)        │
│                                                                  │
│  GPIO4,5,6,7,19,20,36,46 - 通用GPIO，可自由使用                 │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘
```

---

## 5. 硬件接线参考

### 5.1 摄像头接线（使用Arduino库）

```cpp
// ESP32-CAM OV2640 引脚定义
#define PWDN_GPIO_NUM     -1
#define RESET_GPIO_NUM    -1
#define XCLK_GPIO_NUM     15
#define SIOD_GPIO_NUM     13   // SDA
#define SIOC_GPIO_NUM     12   // SCL
#define Y9_GPIO_NUM       45
#define Y8_GPIO_NUM       44
#define Y7_GPIO_NUM       43
#define Y6_GPIO_NUM       42
#define Y5_GPIO_NUM       41
#define Y4_GPIO_NUM       40
#define Y3_GPIO_NUM       39
#define Y2_GPIO_NUM       38
#define VSYNC_GPIO_NUM    17
#define HREF_GPIO_NUM     18
#define PCLK_GPIO_NUM     16
```

### 5.2 麦克风接线（I2S）

```cpp
// INMP441 I2S 麦克风引脚定义
#define I2S_WS   14    // Word Select
#define I2S_SCK  16    // Serial Clock
#define I2S_SD   15    // Serial Data
```

### 5.3 加速度计接线（I2C）

```cpp
// SC7A20 I2C 地址：0x18 或 0x19（SA引脚接地或接VCC）
#define ACCEL_SDA  33
#define ACCEL_SCL  32
```

### 5.4 LCD接线（SPI）

```cpp
// ST7789 LCD 引脚定义
#define LCD_CS    10
#define LCD_DC    8
#define LCD_MOSI  11
#define LCD_SCK   12
#define LCD_RST   9
#define LCD_BL    3    // PWM背光控制
```

---

## 6. 代码示例

### 6.1 摄像头初始化

```cpp
#include "esp_camera.h"

camera_config_t get_camera_config() {
  camera_config_t config;
  config.pin_d0 = Y2_GPIO_NUM;
  config.pin_d1 = Y3_GPIO_NUM;
  config.pin_d2 = Y4_GPIO_NUM;
  config.pin_d3 = Y5_GPIO_NUM;
  config.pin_d4 = Y6_GPIO_NUM;
  config.pin_d5 = Y7_GPIO_NUM;
  config.pin_d6 = Y8_GPIO_NUM;
  config.pin_d7 = Y9_GPIO_NUM;
  config.pin_xclk = XCLK_GPIO_NUM;
  config.pin_pclk = PCLK_GPIO_NUM;
  config.pin_vsync = VSYNC_GPIO_NUM;
  config.pin_href = HREF_GPIO_NUM;
  config.pin_sscb_sda = SIOD_GPIO_NUM;
  config.pin_sscb_scl = SIOC_GPIO_NUM;
  config.pin_pwdn = PWDN_GPIO_NUM;
  config.pin_reset = RESET_GPIO_NUM;
  config.xclk_freq_hz = 20000000;
  config.frame_size = FRAMESIZE_SVGA;
  config.pixel_format = PIXFORMAT_JPEG;
  config.grab_mode = CAMERA_GRAB_WHEN_EMPTY;
  config.fb_location = CAMERA_FB_IN_PSRAM;
  config.jpeg_quality = 10;
  config.fb_count = 2;
  return config;
}
```

### 6.2 I2S麦克风初始化

```cpp
#include <driver/i2s.h>

void setup() {
  // I2S配置
  i2s_config_t i2s_config = {
    .mode = i2s_mode_t(I2S_MODE_MASTER | I2S_MODE_RX),
    .sample_rate = 16000,
    .bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT,
    .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT,
    .communication_format = I2S_COMM_FORMAT_I2S,
    .intr_alloc_flags = ESP_INTR_FLAG_LEVEL1,
    .dma_buf_count = 8,
    .dma_buf_len = 64
  };
  
  i2s_pin_config_t pin_config = {
    .bck_io_num = I2S_SCK,   // 16
    .ws_io_num = I2S_WS,      // 14
    .data_in_num = I2S_SD     // 15
  };
  
  i2s_driver_install(I2S_NUM_0, &i2s_config, 0, NULL);
  i2s_set_pin(I2S_NUM_0, &pin_config);
}
```

### 6.3 加速度计I2C读取

```cpp
#include <Wire.h>

void setup() {
  Wire.begin(ACCEL_SDA, ACCEL_SCL);  // 33, 32
  
  // 检测SC7A20 (地址0x18)
  Wire.beginTransmission(0x18);
  byte error = Wire.endTransmission();
  if (error == 0) {
    Serial.println("SC7A20加速度计连接成功!");
  }
}
```

---

## 7. 注意事项

### 7.1 上电时序

1. **下载模式**：按住BOOT按钮，按一下RESET按钮，然后松开BOOT按钮
2. **正常启动**：GPIO0需要为高电平

### 7.2 GPIO使用限制

| GPIO | 限制 |
|------|------|
| GPIO46 | 仅输入，不可输出 |
| GPIO45 | 仅输入，不可输出 |
| GPIO1/3 | 默认用于串口调试 |
| GPIO20/21 | USB D+/D- (部分版本) |

### 7.3 电流限制

| 项目 | 限制 |
|------|------|
| 单GPIO输出电流 | 最大40mA |
| 总GPIO电流 | 最大200mA |
| 3.3V供电电流 | 最大500mA |

---

## 8. 参考资源

| 资源 | 链接 |
|------|------|
| 乐鑫官网 | https://www.espressif.com/ |
| ESP32-S3技术文档 | https://docs.espressif.com/projects/esp-idf/ |
| 立创实战派 | https://oshwhub.com/esp32-s3 |
| Arduino ESP32 | https://github.com/espressif/arduino-esp32 |

---

*文档整理：基于公开资料整理，如有疏漏请指正*
