Back to Xiaozhi Esp32

quandong-s3-dev vs bread-compact-wifi 硬件差异

main/boards/quandong-s3-dev/HARDWARE_DIFF.md

2.4.06.7 KB
Original Source

quandong-s3-dev vs bread-compact-wifi 硬件差异

两块板都基于 ESP32-S3 + WiFi,软件层都继承 WifiBoard,启动 → 配网 → 接小智后端 → 语音对话 的主流程完全一致。差异集中在 音频路径显示人机交互 三块。


1. 概览

维度quandong-s3-devbread-compact-wifi
芯片ESP32-S3ESP32-S3
基类WifiBoardWifiBoard
音频 codecES8311 硬 codec(I2C 控制 + I2S 全双工)无 codec:MEMS I2S 麦克 + I2S 数字功放(NoAudioCodec
显示ILI9341 240×320 SPI 彩屏SSD1306 / SH1106 OLED 128×32 或 128×64(I2C 单色)
按键数1(BOOT)4(BOOT、Touch、Vol+、Vol-)
板载 LEDGPIO48 单色
MCP 外设示例LampController(GPIO18)
背光PWM on GPIO45OLED 无背光
字体 / emoji 资源font_noto_sans_basic_20_4 + font_material_symbols_20_4 + noto-color-emoji_64font_noto_sans_basic_14_1 + font_material_symbols_14_1(无 emoji)

2. 音频子系统

quandong-s3-dev

Codec 芯片ES8311(I2C 地址 ES8311_CODEC_DEFAULT_ADDR
I2C 总线I2C0,SDA = GPIO16,SCL = GPIO15
I2S 模式Duplex(一套 I2S 复用)
I2S 引脚MCLK = GPIO4,BCLK = GPIO5,WS = GPIO7,DIN = GPIO6,DOUT = GPIO8
采样率输入 / 输出 = 24000 / 24000
功放控制GPIO1 拉低使能(由 InitializeAudioPaEnable() 处理)
音量控制通过 ES8311 寄存器(Es8311AudioCodec::SetOutputVolume

bread-compact-wifi

Codec 芯片(用 NoAudioCodecSimplex
I2S 模式Simplex(麦克和喇叭走两套 I2S)
麦克 I2SWS = GPIO4,SCK = GPIO5,DIN = GPIO6
喇叭 I2SDOUT = GPIO7,BCLK = GPIO15,LRCK = GPIO16
采样率输入 / 输出 = 16000 / 24000
音量控制I2S 数字增益(软件实现)

关键差异

  • 硬件 codec vs 纯 I2S:ES8311 提供更稳定的 ADC/DAC、硬件音量、消除 PoP,bread-compact-wifi 依赖软件处理。
  • 采样率:quandong 麦克按 24kHz 采,bread-compact-wifi 是 16kHz。两者都被 audio pipeline 重采样到协议层需要的速率。
  • I2C 资源:quandong 用 I2C0 控 ES8311;bread-compact-wifi 的 I2C0 用来挂 SSD1306。两块板的 I2C0 用途完全不同,引脚也完全不同。

3. 显示子系统

quandong-s3-dev

屏型号ILI9341
接口SPI(SPI2,40 MHz)
分辨率240 × 320,配置为横屏使用(SWAP_XY=true → 实际 320×240)
引脚MOSI = GPIO11,SCK = GPIO12,CS = GPIO10,DC = GPIO46
背光PWM 控制,GPIO45,非反相
显示类SpiLcdDisplay(LVGL 9,RGB565)
初始化序列板厂自定义 ili9341_vendor_specific_init(gamma / power 时序)

bread-compact-wifi

屏型号SSD1306(默认)或 SH1106(由 Kconfig DISPLAY_OLED_TYPE 选择)
接口I2C(400 kHz),地址 0x3C
分辨率128 × 32128 × 64(Kconfig 选择)
引脚SDA = GPIO41,SCL = GPIO42
背光无(OLED 自发光)
显示类OledDisplay(LVGL 9,1bit 单色)

关键差异

  • 彩屏 vs 单色:quandong 能跑 emoji、AI logo、大字体;bread-compact-wifi 只能塞下 1~2 行文字 + 简易图标。
  • 接口带宽:SPI 40 MHz vs I2C 400 kHz,差两个数量级,影响画面刷新流畅度。
  • 驱动栈:quandong 用 esp_lcd_ili9341 (component 1.2.0) + lvgl_port;bread-compact-wifi 用 esp_lcd_panel_ssd1306 / esp_lcd_panel_sh1106

4. 输入与状态指示

按键

按键quandongbread-compact-wifi行为
BOOT (GPIO0)启动期进配网;运行时 ToggleChatState(按一下开/关对话)
Touch (GPIO47)按住说话OnPressDown→StartListening, OnPressUp→StopListening
Vol+ (GPIO40)单击 +10 音量;长按拉满 100
Vol- (GPIO39)单击 -10 音量;长按静音

→ quandong 只有 BOOT 一个键,没有按住说话没有物理音量键。调音量需要走 MCP / 语音指令。

LED

板子LED用途
quandongBUILTIN_LED_GPIO = NC
bread-compact-wifiGPIO48,SingleLed状态指示(idle / listening / speaking)

MCP 工具

bread-compact-wifi 注册了一个 LampController(GPIO18) 作为 MCP 协议演示,可以远程通过小智指令"开灯/关灯"。quandong 没有这种外设示例。


5. 启动流程差异

主流程相同(详见 application.cc:61 / wifi_board.cc:52),UI 也由 Application::Initialize() 统一拉起。差别只在 board 构造里做的事

quandong-s3-dev 构造序列

InitializeI2c()             // I2C0 for ES8311
InitializeSpi()             // SPI2 for ILI9341
InitializeAudioPaEnable()   // GPIO1 拉低使能功放
InitializeIli9341Display()  // 自定义 init cmds + 实例化 SpiLcdDisplay
InitializeButtons()         // BOOT 单键
GetBacklight()->SetBrightness(100)

bread-compact-wifi 构造序列

InitializeDisplayI2c()      // I2C0 for SSD1306
InitializeSsd1306Display()  // OledDisplay
InitializeButtons()         // BOOT + Touch + Vol+ + Vol-
InitializeTools()           // 注册 LampController(MCP 外设)

6. 资源与构建配置

main/CMakeLists.txt 中的字体与 emoji 配置差异:

板子text fonticon fontemoji collection
quandong-s3-devfont_noto_sans_basic_20_4font_material_symbols_20_4noto-color-emoji_64
bread-compact-wififont_noto_sans_basic_14_1font_material_symbols_14_1(无)

→ quandong 走的是和 lichuang-devesp-box-3 等 240×320 LCD 板同档资源;OLED 板因为像素少,用 14 像素位图字体即可,emoji 也加载不动。

其它依赖

  • quandong 需要 espressif/esp_lcd_ili9341 ==1.2.0(仓库 main/idf_component.yml 已有,无需补依赖)
  • bread-compact-wifi 不需要额外组件,esp_lcd_panel_ssd1306 走 ESP-IDF 自带的 driver

7. 一句话总结

quandong-s3-dev ≈ "彩屏 + 硬 codec + 单按键" 的工程开发板,UI 表现力强但交互简化。 bread-compact-wifi ≈ "OLED + 纯 I2S 软 codec + 多按键 + 板载 lamp" 的面包板参考实现,便于上手 MCP 外设。 功能层(配网、语音通话、MCP、唤醒)由 WifiBoard 基类统一提供,两者表现一致。