
Muse Cube : STM32掌上终端/mp3
简介
Muse Cube 是一款全开源、以高品质音乐播放为核心的多功能掌上终端。项目以产品级标准打造,亦可作为 STM32 的学习开发板使用。
简介:Muse Cube 是一款全开源、以高品质音乐播放为核心的多功能掌上终端。项目以产品级标准打造,亦可作为 STM32 的学习开发板使用。开源协议
:CC BY-NC-SA 4.0
(未经作者授权,禁止转载)描述
全开源,多功能的掌上终端。
Muse Cube 是一款全开源、以高品质音乐播放为核心的多功能掌上终端。项目以产品级标准打造,亦可作为 STM32 的学习开发板使用。它支持本地及 USB 音频播放,可通过 3.5mm 耳机或双扬声器输出;具备主从模式的多功能 USB 接口,并集成了 NES 游戏模拟、视频播放、像素画、闹钟时钟、背单词、抽签等多种应用。
0. 固件版本及未来更新说明
当前固件版本:V1.2
2026.6.1:特别注意,当前版本外壳安装难度较大,不排除后续可能对pcb布局进行更改,具体详见交流群内消息,避免可能造成的经济损失。
由于代码量较大,从 2025年1月 开发至今(2026年4月),部分软件功能仍在完善或尚未实现。当前版本不代表最终效果,考虑复刻前请务必知悉。
• 自 2026年5月 起,每月发布一次固件更新。
• 用户反馈的 Bug 将在当月完成修复。
• 用户提出的有实现价值的功能将纳入后续更新计划。
V1.1 更新日志(已压缩)
------------------------------
- 重构项目目录结构、GUI图标资源布局,统一全局变量声明与定义位置。
- 新增闹钟(时钟/倒计时/秒表/闹钟)、日历、计算器、背单词、相册等应用。
- 桌面支持横向滑动翻页,容纳更多应用图标。
- 改进文件管理器:驱动器号显示、路径动态分配、格式检测与解码分发。
- 新增 DAC 高级设置、日期与时间设置、关于设备页面。
- 新增 SD 卡热插拔自动检测与自动挂载/卸载。
- 降低静态全局变量 RAM 占用,提升 GIF 解码性能。
- 改进键盘输入 UI 显示,新增拼音输入法。
- 移植 Letter Shell 嵌入式命令行库,新增 CMD 命令行终端。
- 减少 UI 任务对硬件的直接访问,优化任务分离与外设事件分发。
V1.2 更新日志
------------------------------
- 新增抽签应用。
- 优化输入法拼音搜索逻辑。
- 优化日志输出格式。
- 新增 KVDB 配置参数掉电不丢失功能。
- 新增 Letter Shell,支持通过 USB 虚拟串口调试。
- 优化 USB Device CDC 的开启逻辑。
- 降低 USB Device MSC 的内存占用,提升稳定性和性能。
- ES9018K2M 改用软件 I2C,提升系统稳定性。
- 提升 USB Device Display 功能的稳定性。
- 修复字库更新逻辑,并新增更新进度指示。
- 优化 USB Device HID 设备模拟的输入逻辑。
- 优化 USB Device UAC 1.0 和 UAC 2.0 的性能。
- 优化 USB FIFO 分配,提升 USB 整体性能。
- 优化 USB Host HID 设备读取逻辑,支持键盘、鼠标、手柄。
- 优化 USB Host MSC 设备读取逻辑,支持同时挂载两个 U 盘。
- 优化文件管理器 UI 显示逻辑,支持文件的复制、粘贴、删除操作。
1. 产品描述
- 一手掌握:8×5×2.2 cm,比卡片更小,比竖放硬币更薄,可轻松装入口袋。
- 接口齐全:USB-C、3.5mm 耳机孔、TF 卡槽,充电、听歌、扩容均方便。
- 屏幕清晰:1.54 英寸 IPS 屏,240×240 分辨率,显示细腻、色彩鲜艳。
- 续航无忧:2000 mAh 品牌电池,音乐播放或桌面常亮场景可支撑一整天。
- 手感舒适:Switch 同款摇杆,按键布局符合人体工学,长时间操作不易疲劳。
- 高品质音乐:支持多种无损格式,可通过3.5mm耳机或对称式双扬声器播放。
- 外置解码:连接手机或电脑,可充当 USB 解码耳放(小尾巴),提升音质。
- 复古游戏:内置 NES 模拟器,可随时游玩经典游戏;另提供像素画功能。
- 多媒体浏览:支持阅读文本、查看代码、播放视频、浏览图片等。
- 桌面助手:倒计时、番茄钟、桌面时钟、电脑副屏、背单词、课表等。
- 抽签应用:内置随机抽签小工具,方便日常决策与娱乐。
- 应急工具:模拟鼠标/键盘/手柄、记事本、闹钟、备忘录,适合会议演示等场景。
- 轻量主机:可同时挂载两个 U 盘,支持文件的复制、粘贴、删除,支持串口调试与 USB 虚拟串口命令行,无电脑时可应急。
- 调试利器:集成 Letter Shell,可通过 USB 虚拟串口进行命令行交互与系统调试。
- 性能基础:STM32F4 处理器,168MHz 主频 + 192KB 运存,系统响应流畅。
- 音频底子:DAC最高 32bit/192kHz 解码 + 独立供电 + 低抖动晶振,声音干净。
注:以上内容为模仿夸张推销风格,仅供娱乐,图片由AI生成,不代表实际性能。
为什么适合作为 STM32 学习开发板?
1.硬件全覆盖,教学无缝接轨:本项目基于 STM32F4 平台,使用 标准库 + Keil 开发环境,与江协科技等主流 STM32 入门教程完全兼容。项目中几乎用到了 STM32 全部常用硬件外设:SPI、I2C、USB、SDIO、PWM、ADC、I2S、RTC、独立看门狗 (IWDG)、NVIC 中断管理、随机数发生器 (RNG)、定时器 (Timer) 等,是巩固外设应用能力的绝佳实战素材。
2.软件生态丰富,一站式技能提升:通过本项目,你可以深入学习并实践多款经典嵌入式第三方库的移植与使用——FreeRTOS 实时操作系统、LVGL 图形界面、FatFs 文件系统、CherryUSB 协议栈、FlashDB 轻量级数据库。此外,还涵盖字库集成、动态内存池设计、多种格式音频/图片/视频解码(MP3、FLAC、AAC、JPEG、PNG、GIF、MJPEG 视频等)、NES 模拟器、UI 交互设计以及 DSP 库的应用,几乎覆盖了从裸机驱动到复杂应用的全栈嵌入式开发技能。
2. 使用说明
Muse Cube 外部接口一览
整体接口如上图所示,操作与功能说明如下:
- 开机:向上拨动开关即可启动 Muse Cube。
- 更新固件:关机状态下,按住上方按键的同时打开开关,即可进入固件更新模式。
-
默认操作方法:
- 拨动右侧摇杆 → 移动屏幕上的鼠标指针。
- 任意方向拨动左侧摇杆并释放 → 视为“点击”。
- 按下左侧摇杆 → 退回上一页。
- 按下右侧摇杆(某些页面) → 调起浮动菜单。
-
接口说明:
- 左侧 USB Type-C 接口:默认为充电(5V 400mA)/ 对外供电(5V 500mA max)(自动识别);其他功能需进入 USB App 选择后生效。
- 右侧上方 3.5mm 耳机接口:连接有线耳机。
- 右侧下方 TF 卡卡槽:支持最高 32GB 容量的 TF 卡,用于扩展存储。
- 扬声器:位于机身顶部,用作声音外放输出。
3. 复刻流程
复刻过程中有任何问题均可联系本人,也欢迎各位对软硬件提供优化方案。
所有复刻所需资源可在本页面及GitHub仓库中找到。
- PCB下单 – 使用嘉立创下单本项目的PCB板(共一块,7.5×4.5 cm 六层板)。
- 元器件采购 – 按照BOM表购买所有电子元件。元件来源:立创商城为主,淘宝优信电子也可。
- 其中 ES9601K 可能无法在立创商城买到,可在淘宝(深圳市福田区永丹电子商行)以约18元购买,该货源成色接近全新原装。
- 此外,6/1修正:必须使用TPS22918(TPS22917与TPS22918电路存在差异)。
- 焊接PCB – PCB与元件到货后,使用嘉立创SMT贴片服务或自行焊接(推荐使用加热台)。
- 购买结构件 – 在各大购物平台购买扬声器、摇杆、屏幕、电池、螺丝螺母等材料。
- 输入设备:Switch 摇杆 × 2(拼多多约10元两个)。
- 扬声器:适用OPPO Reno 10 pro原装喇叭总成 × 2(拼多多约15元两个)。
- 电池:淘宝中顺芯 524075 2000mAh 三线带NTC 购买链接 。
- 屏幕:淘宝中景圆电子 1.54寸240*240 ips lcd显示屏 驱动st7789 12pin 0.5mm插接式fpc(注意不要买成焊接式的)胶铁一体 购买链接 。
- 螺丝:M1.6×2.5×2.5 热熔螺母 + M1.6×4 平头螺丝 15 对;M2×3.6×3.2 热熔螺母 + M2×5 平头螺丝 4 对。
- 胶水:注意本项目提供的外壳安装热熔螺母时,并非热熔连接,而是使用502胶水固定(也试过环氧树脂AB胶,效果不如502)。
- 端子:PH2.0 3p 公座(购买链接) 母座(已在BOM表中) 接线(购买链接),用于电池与PCB板的连接。 GH1.25 2p x 2 (购买链接) 用于连接扬声器和PCB。 PH2.0转2.54杜邦线 3p,用于连接STLink/DAPLink与PCB下载接口。
- 制作面板 – 使用嘉立创面板下单(面板文件位于PCB工程内)。参数:透明亚克力,底面,0.8mm,正品3M9448A(通用款),80*50mm,常规遮光(白底)。
- 3D打印外壳 – 外壳文件在附件中,推荐使用闲鱼代打或嘉立创3D打印服务。(闲鱼0.12mm精度约10元一套。)
- 烧录 – 测试PCB,使用ST-Link或DAPLink等下载Bootloader程序。
- 整机安装 – 完成Muse Cube的整体组装。
- 下载固件并开始使用 – 准备一个不大于32GB的TF卡,放入相关文件。获取最新固件,享受你的Muse Cube!
4. 硬件部分
4.1 硬件开源说明
本项目硬件(PCB、外壳、面板)采用 CC BY-NC-SA 4.0 协议(署名 - 非商业性使用 - 相同方式共享)。
特别说明: 如果您仅参考本项目的设计,只需PCB重新绘制,您就可以自行选择任何开源协议,无需再遵循 CC BY-NC-SA。
4.2 PCB 概况
- 尺寸: 7.5 cm × 4.5 cm
- 工艺: 嘉立创六层板、沉金工艺、盘中孔技术
- 布局设计: 数模分离,单端 50 ohm 阻抗控制
- 板载接口:
- • USB Type-C × 1
- • TF 卡座 × 1
- • 3.5MM 耳机接口 × 1
- • 开关 × 1
- • 按钮 × 2(reset, wakeup)
- • PH2.0 3p × 1(用于连接电池)
- • GH1.25 2p × 2(用于连接扬声器)
- • FPC 12p × 1(用于连接屏幕)
- • FPC 5p × 2(用于连接摇杆)
- • 预留 stlink debugger PH2.0 3p
4.3 元件选型
- 选型原则:因为是 DIY 项目,不考虑量产成本约束,本项目的元件选型遵循性能优先、质量优先的逻辑,在合理价格范围内选取最优解,以确保整机的音质、稳定性和长期可靠性。
- 主控:STM32F405
- 板载 flash:w25q128 (16MB)
- 扬声器运放:MAXIM(现为 ADI)的 MAX98357A × 2
- 耳机运放:ESS Technology 的 es9018k2m + es9601k 组合
- DAC 晶振:EPSON 的 38.4 MHz TCXO
- 电源:电源管理、DCDC、LDO、模拟开关、负载开关、限流配电开关,均选用 TI 的合适元件
- 电路保护:在接口处使用 ESD/TVS 保护元件
4.4 外设选型
- 输入设备: switch 摇杆 × 2
- 屏幕: 分辨率 240 × 240、1.54 英寸 LCD(中景园电子)
- 扬声器: 手机拆机喇叭 × 2,组成双声道(据称为 AAC 1115E)
- 电池: 中顺芯 524075 2000mAh
4.5 外壳
- 尺寸: 8cm(长)× 5cm(宽)× 2.2cm(厚)
- 设计: 使用 Blender 设计,提供可修改的
.blend文件以及用于 3D 打印的.stl文件。 - 连接: 使用 M1.6×2.5×2.5 热熔螺母 + M1.6×4 平头螺丝 15 对;M2×3.6×3.2 热熔螺母 + M2×5 平头螺丝 4 对。
4.6 面板
面板设计使用嘉立创完成,具体见项目文件。
硬件架构示意

电源架构示意

PCB 布线示意

PCB 渲染图

组装示意图

5. 软件部分
5.1 软件开源说明
本项目软件部分协议说明:
- • 我的代码:使用 MIT 协议
- • 使用的第三方库:遵循对应的第三方库协议
- • 整体项目/固件:受第三方库限制,使用 GNU GPL V3 协议
5.2 开发环境
- 集成开发环境:Keil5
- 编译器:ARM Compiler 5
- 底层驱动:STM32 标准库
5.3 系统架构
- 程序划分:分为引导加载程序(Bootloader)与主程序两部分。
- • 引导加载程序:占用前 64 KB ROM 空间,借助 CherryUSB 的 UF2 协议实现 USB 拖拽式固件更新。
- • 主程序:紧随引导加载程序存放。
- 实时操作系统:FreeRTOS,负责任务调度。
- 图形界面库:LVGL。
- 内存管理:基于 TLSF 算法,动态管理 80 KB 普通 RAM 与 64 KB CCM RAM。
- 系统时钟节拍:由 SysTick 定时器统一为 FreeRTOS 与 LVGL 提供。
- 程序监控:独立看门狗(IWDG),防止程序卡死或跑飞。
5.4 外设与信号处理
- 定时器:TIM8(LCD 背光亮度调节);TIM2(RTOS 运行状态监测定时器)。
- 随机数与时钟:RNG 随机数发生器;实时时钟(RTC)支持公历转农历。
- 屏幕与输入:42 MHz SPI + DMA;拼音输入法(优化搜索逻辑)。
- 模拟信号采集:8 路 ADC + DMA(摇杆、Type-C CC 引脚、电池电压)。
5.5 存储与文件系统
- Flash 存储 (W25Q128):8 MB FlashDB(键值+时序数据),支持 KVDB 配置参数掉电不丢失;剩余空间存放字库。
- TF 卡存储:24 MHz 四线 SDIO + DMA,最高 32 GB,FatFS。
5.6 音频处理
- • I2S2 + DMA 音频输出,模拟开关切换扬声器/耳机 DAC。
- • 软件模拟 I2C 控制 ES9018K2M,提升系统稳定性。
- • 音频解码库:libhelix-aac、libhelix-mp3、libfoxenflac、libdemac。
- • 支持格式:WAV、MP3、FLAC、AAC、APE。
5.7 USB 功能
- • 主从模式识别与切换:Type-C CC 引脚上下拉切换与电压检测。
- • 协议栈:CherryUSB。
- • 从机功能:CDC ACM(USB 串口/虚拟串口)、MSC(模拟 U 盘)、UAC1/UAC2(USB 音频)、Display(投屏)、HID 鼠标/键盘/手柄。
- • 主机功能:串口助手、HID 键鼠/手柄、MSC 设备(支持同时挂载两个 U 盘)。
- • 性能优化:USB FIFO 分配优化,UAC 音频性能提升,MSC 稳定性与内存占用降低,Display 投屏稳定性增强。
5.8 视频与图像解码
- • 视频播放:RAW RGB565;MJPEG(TjpgDec,240×240@30fps)。
- • 图片解码:GIF(AnimatedGIF)、PNG(PNGdec)、JPG、BMP。
5.9 综合设计思路
- 优化性能:硬件接口、使用 DMA、减少内存拷贝、常用代码寄存器优化。
- 保证可读性:简化代码结构、函数封装简单、避免复杂数据结构。
- 减少代码黑盒:手动移植第三方库、所有代码可优化修改。
5.10 AI 使用说明
- UI 部分:仅完成框架,AI 生成代码后对功能实现进行审查。一般不审查具体代码实现。
- 除 UI 以外的代码:自己编写或参考可信的代码实现,AI 仅用作 Bug 排查。对 AI 生成的代码需经过检查后方可使用。
代码开源网页截图
软件架构图
MuseCube V1.2 功能完成情况
计划中的功能将逐步完成,敬请关注后续更新。

固件源码目录树
MuseCube-V1.2/ 基于STM32F405RGT6的手持多媒体播放器固件工程
│
├── 1-library/ STM32F4xx标准外设库(StdPeriph_Driver V1.8.1)
│
├── 2-start/ CMSIS启动层
│
├── 3-main/ 应用入口层
│
├── 4-ware/ 固件主体代码
│ ├── BSP/ 板级支持包:硬件驱动
│ ├── Lib_FreeRTOS/ FreeRTOS实时操作系统内核(ARM Cortex-M4F移植)
│ ├── Lib_LVGL/ LVGL v8.x 嵌入式图形库
│ ├── Lib_Cherry_USB/ CherryUSB协议栈:支持USB Device/Host
│ ├── Lib_Fatfs/ FatFs FAT文件系统(挂载SD卡和USB存储)
│ ├── Lib_FlashDB/ FlashDB嵌入式数据库:KVDB + TSDB
│ ├── Lib_TLSF/ TLSF O(1)动态内存分配器,替代标准库malloc/free
│ ├── Lib_Music_lib/ 音频解码库:Helix MP3/AAC、foxen-flac、DEMAC APE
│ ├── Lib_Tjpgd/ Tiny JPEG Decompressor超轻量JPEG解码库
│ ├── Lib_PNGdec/ PNG解码库(含zlib inflate解压)
│ ├── Lib_AnimatedGIF/ GIF解码库
│ ├── Lib_Letter_Shell/ Letter Shell嵌入式命令行交互shell
│ ├── Apps_Music/ 音乐播放器应用层:播放状态机、I2S DMA双缓冲、解码封装
│ ├── Apps_Media/ 媒体解码应用层:BMP/PNG/GIF/JPG/MJPEG视频解码封装
│ ├── Apps_NES/ NES模拟器:6502 CPU(汇编)、PPU图像渲染、APU音频
│ ├── Apps_Text/ 文本应用层:TXT阅读器、LRC歌词解析、生词本管理
│ ├── GUI_Page/ 全屏GUI页面(22个)
│ ├── GUI_Unit/ GUI可复用组件(22组)
│ ├── GUI_Icons/ GUI图标资源
│ ├── Tasks/ FreeRTOS任务实现:TaskManager任务管理器 + 7个任务
│ └── Utils/ 工具函数:CPU使用率、FFT频谱分析、电池电量等
│
├── bootloader/ USB UF2引导加载程序
│ ├── 1-library/ STM32F4标准外设库子集
│ ├── 2-start/ CMSIS启动层:启动汇编文件、Cortex-M4核心访问头文件
│ ├── 3-main/ bootloader主入口
│ ├── 4-ware/ bootloader板级支持包
│ ├── 5-freertos/ FreeRTOS内核
│ └── 6-cherryusb/ CherryUSB Device协议栈
│
├── bin2uf2/ 固件格式转换工具:将Keil输出的.bin/.hex转换为UF2格式
│
└── TFcard_files/ 系统运行所需的TF卡资源文件
MuseCube V1.2 软件展示
当前版本不代表最终效果!由于还在开发阶段,暂无展示视频。
使用开源库及其开源协议和项目地址
致谢
• 感谢所有知道我在做这个项目并支持我的朋友,你们的鼓励是我前行的动力。
• 感谢 江协科技 提供的优质 STM32 入门教程,以及 正点原子 在 STM32、FreeRTOS、LVGL 方面的详实教学。
• 致敬所有开源工作者、网上文章与教程的分享者,是你们让知识自由流动。
• 使用 GitHub Copilot 等 AI 工具,在开发过程中提供了高效辅助。
联系与支持
• 作者 QQ:3793000877 或 交流群:1078563324(更建议直接qq联系,沟通更便捷)
• 本项目参与嘉立创星火计划2026,如果喜欢本项目,别忘了点赞、收藏、转发,也可以让更多开源爱好者看到!
📌 项目分支与共建计划
1. 如果你受到本项目启发,希望在现有软硬件基础上进行优化改版,并作为独立项目发布:
你独立完成的硬件部分,可以自由选择是否开源、是否商用,同时建议声明该项目基于 MuseCube 二次开发。
2. 如果你希望对本项目软硬件进行优化,并以开发者身份参与共建:
你的改动经过验证后,即可成为开发者团队的一员。若项目在嘉立创星火计划中获得收益,将根据贡献程度共享收益。
3. 项目分支与优化方向
- 外壳:改变设备形态;优化外壳结构,简化安装流程,降低装配难度。
- 硬件:移除扬声器电路或舍弃 USB 主机功能,换取更小的体积;升级更高保真的 DAC 与运放电路;将 PCB 改为四层板以降低成本;更换主控型号、屏幕规格、输入外设或电池容量等。
- 软件:继续推进软件功能开发(具体可联系作者沟通);根据硬件变更进行适配与移植;实现更多应用功能。
- 项目宣传:为项目拍摄介绍视频,并发布到指定的视频平台。
- 性能测试:测试 3.5mm 耳机输出的总谐波失真、动态范围、信噪比等。
- 面板:设计更好看的面板。
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。










