工程名称:Muse Cube : STM32掌上终端/mp3
工程作者:dydcyy
前言
今天逛开源广场,看到一个【很适合单片机小白练手】的开源项目。
这,是一个掌上终端,也是一个STM32学习板!它有20+功能……

——如果你想用STM32,做一个完整项目。
——如果你想锻炼自己的资源整合能力——比如将一个192KB RAM里塞进RTOS+GUI+音频解码+模拟器
那这个项目,会非常适合你参考学习~
下文会介绍一下它的具体功能,再分享硬件/软件设计方案!文末还会附上开源网址,方便你深入了解学习!
*0***1
功能&亮点
”
-
高品质音乐:DAC最高32bit/192kHz解码+独立供电+低抖动晶振,声音干净,支持多种无损格式,通过3.5mm耳机/双扬声器播放
-
外置解码:连接手机或电脑,可充当USB解码耳放,提升音质
-
内置NES模拟器:能玩马里奥、魂斗罗……
-
支持TXT阅读,能看新闻,小说等文本
-
支持播放视频、浏览图片、播放像素画等
-
支持倒计时、番茄钟、闹钟、桌面时钟
-
可以当电脑副屏
-
能查看代码
-
有单词卡,每天学N个单词
-
支持课表
-
能模拟鼠标/键盘/手柄
-
有备忘录功能,可实时记录事件
-
轻量主机:可读取、拷贝 U 盘文件,支持串口调试,无电脑时可应急。
-
便携:8×5×2.2 cm,可轻松装入口袋
-
3大接口:USB-C、3.5mm 耳机孔、TF 卡槽,充电/听歌/扩容均方便
-
1.54 英寸IPS屏:240分辨率
-
续航一天:2000mAh电池,音乐播放/桌面常亮可支撑一天
-
Switch同款摇杆,玩小游戏/模拟鼠标时体验更好
*0***2
硬件设计方案
”
电路部分,作者用嘉立创EDA设计了一块6层板:

原理图

PCB图
硬件参数:
-
主控:STM32F405
-
板载 flash:w25q128 (16MB)
-
扬声器运放:MAXIM(现为 ADI)的MAX98357A×2
-
耳机运放:ESSTechnology的es9018k2m+es9601k组合
-
DAC 晶振:EPSON的38.4MHz TCXO
-
电源:电源管理、DCDC、LDO、模拟开关、负载开关、限流配电开关,均选用TI的合适元件
-
电路保护:在接口处使用ESD/TVS保护元件
*0***3
软件设计方案
”
5.1 软件架构图

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(键值+时序数据),剩余字库存储。
-
TF 卡存储:24 MHz 四线 SDIO + DMA,最高 32 GB,FatFS。
5.6 音频处理
-
I2S2 + DMA 音频输出,模拟开关切换扬声器/耳机 DAC。
-
I2C1 控制 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 设备。
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 生成的代码需经过检查后方可使用。
*0***4
结语
”
不愧是用15个月,精细打磨的项目!!在“玩具级”的资源限制下,作者实现了“产品级”的完成度与Hi-Fi音质啊有木有!
对于想进阶学习STM32的玩家来说,它堪称六边形战士,基本能“全面”覆盖你的学习需求:
-
首先,这个终端几乎覆盖了STM32F4全部常用外设:SPI、I2S、USB、SDIO、PWM、ADC、RTC、IWDG、NVIC、RNG、Timer。
-
同时,还集成了 FreeRTOS、LVGL、FatFs、CherryUSB、FlashDB、MP3/FLAC/AAC 解码、JPEG/PNG/GIF 解码、MJPEG 视频、NES 模拟器、DSP 库……
*0***5
开源网址
”
目前,项目已全开源!开源内容如下:

评论区
登录后即可参与讨论
立即登录