原项目https://github.com/infinition/waveshare-watch-rs是为 Waveshare ESP32-S3-Touch-AMOLED 系列开发板打造的 100% Rust 智能手表固件项目。它完整地将原有的 C/C++ (ESP-IDF + Arduino + LVGL) 项目重构为纯 Rust 代码,实现了从零到一的 no_std 开发,展示了 Rust 在嵌入式领域的强大能力。
该项目不仅是一个功能丰富的智能手表固件,更是一个优秀的 Rust 嵌入式开发范例,涵盖了从底层驱动到上层应用的完整技术栈。
✨ 项目亮点
🦀 100% Rust 实现:整个固件,包括所有外设驱动和应用逻辑,均由 Rust 编写,零 C 代码,零 ESP-IDF 组件编译进最终固件。
⚡ 现代异步架构:基于 esp-hal 和 Embassy 生态构建,采用事件驱动和协作式调度,实现了极高的能效。在表盘界面,CPU 休眠时间超过 99%。
🚀 高性能图形:直接驱动 410×502 分辨率的 AMOLED 屏幕,通过 QSPI 接口以 80 MHz 频率进行 DMA 传输,确保流畅的图形显示。
🔋 完整的硬件支持:全面适配板载所有外设,包括电源管理、音频、触摸、IMU 等。
📱 丰富的应用功能:内置启动器、5 款迷你游戏、T9 键盘、MP3 播放器 UI、智能家居控制(HTTP)以及 Apple Watch 风格的息屏显示(AOD)功能。
🛠️ 硬件支持
原项目支持只 Waveshare ESP32-S3-Touch-AMOLED-2.06开发板,
用ai适配了下1.8尺寸的ESP32-S3-Touch-AMOLED-1.8 https://docs.waveshare.net/ESP32-S3-Touch-AMOLED-1.8/
核心硬件规格
表格
组件 型号/规格 接口
SoC ESP32-S3R8 (双核 Xtensa LX7, 8MB PSRAM) —
显示屏 CO5300 AMOLED (410×502, 圆角) QSPI 80 MHz
电源管理 AXP2101 (充电、电源轨) I2C 400 kHz
触摸屏 FT3168 I2C + INT GPIO
IMU QMI8658 (加速度计+陀螺仪+温度) I2C
音频编解码 ES8311 + 功放 I2C + I2S
存储 32 MB Flash, 8 MB Octal PSRAM —
RTC PCF85063A I2C
SD 卡 SDHC SPI3
📦 软件技术栈
本项目采用了先进的 Rust 嵌入式生态系统,完全摒弃了传统的 C 语言依赖。
表格
层级 Crate/库 功能
硬件抽象层 (HAL) esp-hal 1.0 提供对 GPIO, I2C, SPI, I2S, DMA, 定时器, PSRAM 等外设的访问
运行时 (Runtime) esp-rtos 0.2 负责启动、异步执行器、无线电集成
异步框架 embassy-executor 0.9 协作式调度器、任务管理、定时器
网络协议栈 embassy-net 0.9 基于 smoltcp 的 TCP/IP 协议栈 (支持 DHCPv4, TCP, UDP, DNS)
无线驱动 esp-radio 0.17 WiFi 驱动及 Embassy 接口
图形库 embedded-graphics 0.8 2D 图形绘制、字体、文本布局
存储 embedded-sdmmc 0.8 支持 SD 卡上的 FAT32 文件系统
音频解码 nanomp3 0.1 no_std 环境下的 MP3 解码器 (已集成)
内存分配 esp-alloc 管理 64 KB SRAM 和 8 MB PSRAM 堆
💡 适用场景
Rust 嵌入式开发学习与参考
定制化智能手表/手环项目
低功耗物联网设备原型开发
探索 no_std 环境下的复杂应用开发
运行示例







代码地址

320

被折叠的 条评论
为什么被折叠?



